This is an automated email from the ASF dual-hosted git repository. riemer pushed a commit to branch dev in repository https://gitbox.apache.org/repos/asf/incubator-streampipes.git
commit d47938a8c6771da86432ff133f7c7626dfedf835 Author: Dominik Riemer <[email protected]> AuthorDate: Wed Dec 1 09:59:02 2021 +0100 [STREAMPIPES-426] Allow admins to change usernames of existing users --- .../edit-user-dialog.component.html | 21 ++++++++++++--------- .../edit-user-dialog.component.scss | 6 ++++++ .../edit-user-dialog/edit-user-dialog.component.ts | 16 ++++++++++++++-- 3 files changed, 32 insertions(+), 11 deletions(-) diff --git a/ui/src/app/configuration/security-configuration/edit-user-dialog/edit-user-dialog.component.html b/ui/src/app/configuration/security-configuration/edit-user-dialog/edit-user-dialog.component.html index 7f3c131..224264a 100644 --- a/ui/src/app/configuration/security-configuration/edit-user-dialog/edit-user-dialog.component.html +++ b/ui/src/app/configuration/security-configuration/edit-user-dialog/edit-user-dialog.component.html @@ -37,6 +37,7 @@ data-cy="new-user-email"> <mat-error>Must be a valid email address.</mat-error> </mat-form-field> + <div class="email-changed" *ngIf="emailChanged">Changing the current user's email will require a re-login.</div> <mat-form-field color="accent" *ngIf="isUserAccount"> <mat-label>Full Name</mat-label> <input formControlName="fullName" fxFlex @@ -110,15 +111,17 @@ </div> <mat-divider></mat-divider> <div class="sp-dialog-actions"> - <div fxLayout="row"> - <button mat-button mat-raised-button color="accent" (click)="save()" style="margin-right:10px;" - [disabled]="!parentForm.valid" - data-cy="sp-element-edit-user-save"> - <i class="material-icons">save</i><span> Save</span> - </button> - <button mat-button mat-raised-button class="mat-basic" (click)="close(false)"> - Cancel - </button> + <div fxLayout="column"> + <div fxLayout="row"> + <button mat-button mat-raised-button color="accent" (click)="save()" style="margin-right:10px;" + [disabled]="!parentForm.valid" + data-cy="sp-element-edit-user-save"> + <i class="material-icons">save</i><span> Save</span> + </button> + <button mat-button mat-raised-button class="mat-basic" (click)="close(false)"> + Cancel + </button> + </div> </div> </div> </div> diff --git a/ui/src/app/configuration/security-configuration/edit-user-dialog/edit-user-dialog.component.scss b/ui/src/app/configuration/security-configuration/edit-user-dialog/edit-user-dialog.component.scss index aad1d42..71c46ee 100644 --- a/ui/src/app/configuration/security-configuration/edit-user-dialog/edit-user-dialog.component.scss +++ b/ui/src/app/configuration/security-configuration/edit-user-dialog/edit-user-dialog.component.scss @@ -26,3 +26,9 @@ .form-field .mat-form-field-infix { border-top: 0; } + +.email-changed { + color: var(--color-warn); + font-size: small; + margin-bottom: 10px; +} diff --git a/ui/src/app/configuration/security-configuration/edit-user-dialog/edit-user-dialog.component.ts b/ui/src/app/configuration/security-configuration/edit-user-dialog/edit-user-dialog.component.ts index 7044766..d29eede 100644 --- a/ui/src/app/configuration/security-configuration/edit-user-dialog/edit-user-dialog.component.ts +++ b/ui/src/app/configuration/security-configuration/edit-user-dialog/edit-user-dialog.component.ts @@ -39,6 +39,8 @@ import { UserService } from '../../../platform-services/apis/user.service'; import { UserGroupService } from '../../../platform-services/apis/user-group.service'; import { RoleDescription } from '../../../_models/auth.model'; import { AvailableRolesService } from '../../../services/available-roles.service'; +import {AuthService} from "../../../services/auth.service"; +import {Router} from "@angular/router"; @Component({ selector: 'sp-edit-user-dialog', @@ -64,12 +66,15 @@ export class EditUserDialogComponent implements OnInit { registrationError: string; sendPasswordToUser = false; + emailChanged = false; constructor(private dialogRef: DialogRef<EditUserDialogComponent>, private availableRolesService: AvailableRolesService, private fb: FormBuilder, private userService: UserService, - private userGroupService: UserGroupService) { + private userGroupService: UserGroupService, + private authService: AuthService, + private router: Router) { } ngOnInit(): void { @@ -105,6 +110,7 @@ export class EditUserDialogComponent implements OnInit { this.clonedUser.accountLocked = v.accountLocked; this.clonedUser.accountEnabled = v.accountEnabled; if (this.clonedUser instanceof UserAccount) { + this.emailChanged = (this.clonedUser.username !== this.user.username) && this.user.username === this.authService.getCurrentUser().username && this.editMode; this.clonedUser.fullName = v.fullName; if (!this.editMode) { this.sendPasswordToUser = v.sendPasswordToUser; @@ -149,7 +155,13 @@ export class EditUserDialogComponent implements OnInit { if (this.editMode) { if (this.isUserAccount) { this.userService.updateUser(this.clonedUser as UserAccount).subscribe(() => { - this.close(true); + if (this.emailChanged) { + this.authService.logout(); + this.close(false); + this.router.navigate(['login']); + } else { + this.close(true); + } }); } else { this.userService.updateService(this.clonedUser as ServiceAccount).subscribe(() => {
