@@ -14,7 +14,7 @@ import { defineMessages, useVIntl } from '@vintl/vintl'
14
14
15
15
const { formatMessage } = useVIntl ()
16
16
17
- const { projectV2, projectV3, refreshProject } = injectProjectPageContext ()
17
+ const { currentMember, projectV2, projectV3, refreshProject } = injectProjectPageContext ()
18
18
const { handleError } = injectNotificationManager ()
19
19
const api = injectApi ()
20
20
@@ -32,6 +32,11 @@ const needsToVerify = computed(
32
32
supportsEnvironment .value ,
33
33
)
34
34
35
+ const hasPermission = computed (() => {
36
+ const EDIT_DETAILS = 1 << 2
37
+ return (currentMember .value ?.permissions & EDIT_DETAILS ) === EDIT_DETAILS
38
+ })
39
+
35
40
function getInitialEnv() {
36
41
return projectV3 .value .environment ?.length === 1 ? projectV3 .value .environment [0 ] : undefined
37
42
}
@@ -106,7 +111,7 @@ const messages = defineMessages({
106
111
<template >
107
112
<div >
108
113
<UnsavedChangesPopup
109
- v-if =" supportsEnvironment"
114
+ v-if =" supportsEnvironment && hasPermission "
110
115
:original =" saved"
111
116
:modified =" current"
112
117
:saving =" saving"
@@ -125,40 +130,43 @@ const messages = defineMessages({
125
130
v-if =" !supportsEnvironment"
126
131
type =" critical"
127
132
:header =" formatMessage(messages.wrongProjectTypeTitle)"
133
+ :body =" formatMessage(messages.wrongProjectTypeDescription)"
128
134
class =" mb-3"
129
- >
130
- {{ formatMessage(messages.wrongProjectTypeDescription) }}
131
- </Admonition >
135
+ />
132
136
<template v-else >
133
137
<Admonition
134
- v-if ="
138
+ v-if =" !hasPermission"
139
+ type =" critical"
140
+ :header =" formatMessage(commonProjectSettingsMessages.noPermissionTitle)"
141
+ :body =" formatMessage(commonProjectSettingsMessages.noPermissionDescription)"
142
+ class =" mb-3"
143
+ />
144
+ <Admonition
145
+ v-else-if ="
135
146
!projectV3.environment ||
136
147
projectV3.environment.length === 0 ||
137
148
projectV3.environment[0] === 'unknown'
138
149
"
139
150
type =" critical"
140
151
:header =" formatMessage(messages.missingEnvTitle)"
152
+ :body =" formatMessage(messages.missingEnvDescription)"
141
153
class =" mb-3"
142
- >
143
- {{ formatMessage(messages.missingEnvDescription) }}
144
- </Admonition >
154
+ />
145
155
<Admonition
146
156
v-else-if =" projectV3.environment.length > 1"
147
157
type =" info"
148
158
:header =" formatMessage(messages.multipleEnvironmentsTitle)"
159
+ :body =" formatMessage(messages.multipleEnvironmentsDescription)"
149
160
class =" mb-3"
150
- >
151
- {{ formatMessage(messages.multipleEnvironmentsDescription) }}
152
- </Admonition >
161
+ />
153
162
<Admonition
154
163
v-else-if =" needsToVerify"
155
164
type =" warning"
156
165
:header =" formatMessage(messages.reviewOptionsTitle)"
166
+ :body =" formatMessage(messages.reviewOptionsDescription)"
157
167
class =" mb-3"
158
- >
159
- {{ formatMessage(messages.reviewOptionsDescription) }}
160
- </Admonition >
161
- <ProjectSettingsEnvSelector v-model =" current.environment" />
168
+ />
169
+ <ProjectSettingsEnvSelector v-model =" current.environment" :disabled =" !hasPermission" />
162
170
</template >
163
171
</div >
164
172
</div >
0 commit comments