mirror of
https://github.com/ceph/ceph
synced 2026-08-01 22:45:39 +00:00
mgr/dashboard: restricting admin user to revoke its own admin permissions
Fixes: https://tracker.ceph.com/issues/77813 Signed-off-by: Devika Babrekar <devika.babrekar@ibm.com> Conflicts: src/pybind/mgr/dashboard/frontend/src/app/core/auth/user-form/user-form.component.html -conflict while rebasing for SSO related parameters src/pybind/mgr/dashboard/frontend/src/app/core/auth/user-form/user-form.component.ts -conflict while rebasing for SSO related variables
This commit is contained in:
parent
5b1f1643a2
commit
95a096f2c6
@ -4,6 +4,7 @@ export class UserFormRoleModel implements SelectOption {
|
||||
name: string;
|
||||
description: string;
|
||||
selected = false;
|
||||
disabled: boolean = false;
|
||||
scopes_permissions?: object;
|
||||
enabled: boolean;
|
||||
content: string;
|
||||
|
||||
@ -235,15 +235,37 @@
|
||||
[invalidText]="rolesError"
|
||||
i18n
|
||||
>
|
||||
<cds-dropdown-list></cds-dropdown-list>
|
||||
<cds-dropdown-list [listTpl]="roleItemTpl"></cds-dropdown-list>
|
||||
</cds-combo-box>
|
||||
|
||||
<ng-template #rolesError>
|
||||
<span
|
||||
class="invalid-feedback"
|
||||
*ngIf="userForm.showError('roles', formDir, 'required')"
|
||||
i18n
|
||||
>This field is required.</span
|
||||
>
|
||||
>This field is required.</span>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #roleItemTpl
|
||||
let-item="item">
|
||||
<div class="cds--form-item cds--checkbox-wrapper">
|
||||
<label class="cds--checkbox-label"
|
||||
[attr.data-contained-checkbox-disabled]="item.disabled ? 'true' : null"
|
||||
[attr.data-contained-checkbox-state]="item.selected ? 'true' : 'false'"
|
||||
[ngbTooltip]="item.disabled ? roleTooltipTpl : null">
|
||||
<input class="cds--checkbox"
|
||||
type="checkbox"
|
||||
[checked]="item.selected"
|
||||
[disabled]="item.disabled"
|
||||
tabindex="-1"/>
|
||||
<span class="cds--checkbox-appearance"></span>
|
||||
<span class="cds--checkbox-label-text">{{ item.content }}</span>
|
||||
</label>
|
||||
</div>
|
||||
</ng-template>
|
||||
|
||||
<ng-template #roleTooltipTpl>
|
||||
<span i18n>You cannot remove the administrator role from your own account.</span>
|
||||
</ng-template>
|
||||
</div>
|
||||
<!-- Enabled -->
|
||||
|
||||
@ -180,6 +180,13 @@ export class UserFormComponent extends CdForm implements OnInit {
|
||||
this.userService.get(username).subscribe((userFormModel: UserFormModel) => {
|
||||
this.response = _.cloneDeep(userFormModel);
|
||||
this.setResponse(userFormModel);
|
||||
if (this.authStorageService.getUsername() === username) {
|
||||
this.allRoles = _.map(this.allRoles, (role) => {
|
||||
role.disabled =
|
||||
role.name.toLowerCase() === 'administrator' && this.isCurrentUser() ? true : false;
|
||||
return role;
|
||||
});
|
||||
}
|
||||
this.loadingReady();
|
||||
});
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user