Skip to content

Commit 9202ce1

Browse files
committed
more permission control implemented in ux
1 parent 5abd1fa commit 9202ce1

4 files changed

Lines changed: 18 additions & 13 deletions

File tree

addon/components/modals/api-key-form.hbs

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,17 @@
11
<Modal::Default @modalIsOpened={{@modalIsOpened}} @options={{@options}} @confirm={{@onConfirm}} @decline={{@onDecline}} as |options|>
22
<div class="modal-body-container">
3-
<div class="input-group">
4-
<label>
5-
{{t "developers.common.name"}}
6-
</label>
7-
<Input
8-
@value={{options.apiKey.name}}
9-
@type="text"
10-
aria-label={{t "developers.component.modals.api-key-form.api-name-aria-label"}}
11-
class="w-full form-input"
12-
placeholder={{t "developers.component.modals.api-key-form.name-placeholder"}}
13-
/>
14-
</div>
3+
<InputGroup
4+
@name={{t "developers.common.name"}}
5+
@value={{options.apiKey.name}}
6+
@placeholder={{t "developers.component.modals.api-key-form.name-placeholder"}}
7+
@disabled={{cannot @options.formPermission}}
8+
aria-label={{t "developers.component.modals.api-key-form.api-name-aria-label"}}
9+
class="w-full form-input"
10+
/>
1511
<div class="input-group">
1612
<InputLabel @labelText={{t "developers.component.modals.api-key-form.expiration-label"}} @helpText={{t "developers.component.modals.api-key-form.expiration-help-text"}} />
1713

18-
<select class="w-full mb-1 form-select" aria-label={{t "developers.component.modals.api-key-form.api-expiration-aria-label"}} {{on "change" @options.setExpiration}}>
14+
<select class="w-full mb-1 form-select" disabled={{cannot @options.formPermission}} aria-label={{t "developers.component.modals.api-key-form.api-expiration-aria-label"}} {{on "change" @options.setExpiration}}>
1915
<option selected disabled>
2016
{{t "developers.component.modals.api-key-form.select-expiration-date"}}
2117
</option>

addon/components/modals/rename-api-key-form.hbs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
aria-label={{t "developers.component.modals.rename-api-key-form.api-key-label"}}
1111
class="w-full form-input"
1212
placeholder={{t "developers.component.modals.rename-api-key-form.api-key-placeholder"}}
13+
disabled={{cannot @options.formPermission}}
1314
/>
1415
</div>
1516
</div>

addon/components/modals/roll-api-key-form.hbs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
<select
4545
class="w-full mb-2 form-select form-input-sm"
4646
aria-label={{t "developers.component.modals.roll-api-key-form.api-key-expiration-label"}}
47+
disabled={{cannot @options.formPermission}}
4748
{{on "change" @options.setExpiration}}
4849
>
4950
<option selected disabled>
@@ -89,6 +90,7 @@
8990
aria-label={{t "developers.component.modals.roll-api-key-form.user-password"}}
9091
placeholder={{t "developers.component.modals.roll-api-key-form.user-password-placeholder"}}
9192
class="w-full form-input"
93+
disabled={{cannot @options.formPermission}}
9294
/>
9395
</div>
9496
</div>

addon/controllers/api-keys/index.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -346,6 +346,8 @@ export default class ApiKeysIndexController extends Controller {
346346

347347
this.modalsManager.show('modals/rename-api-key-form', {
348348
title: this.intl.t('developers.api-keys.index.rename-api-key-title', { apiKeyName }),
349+
acceptButtonDisabled: this.abilities.cannot(formPermission),
350+
acceptButtonHelpText: this.abilities.cannot(formPermission) ? this.intl.t('common.unauthorized') : null,
349351
apiKey,
350352
formPermission,
351353
confirm: async modal => {
@@ -411,19 +413,23 @@ export default class ApiKeysIndexController extends Controller {
411413
* @void
412414
*/
413415
@action rollApiKey (apiKey) {
416+
const formPermission = 'developers roll api-key';
414417
const apiKeyName = getWithDefault(apiKey, 'name', this.intl.t('developers.api-keys.index.untitled'));
415418

416419
this.modalsManager.show('modals/roll-api-key-form', {
417420
title: this.intl.t('developers.api-keys.index.roll-api-key', { apiKeyName }),
418421
modalClass: 'roll-key-modal',
419422
acceptButtonText: this.intl.t('developers.api-keys.index.roll-api-key-button-text'),
423+
acceptButtonDisabled: this.abilities.cannot(formPermission),
424+
acceptButtonHelpText: this.abilities.cannot(formPermission) ? this.intl.t('common.unauthorized') : null,
420425
user: this.currentUser.user,
421426
expirationOptions: this.expirationOptions,
422427
setExpiration: ({ target }) => {
423428
apiKey.expires_at = target.value || null;
424429
},
425430
viewRequestLogs: this.viewRequestLogs,
426431
password: null,
432+
formPermission,
427433
apiKey,
428434
confirm: async modal => {
429435
modal.startLoading();

0 commit comments

Comments
 (0)