Browse Source

Feature: Improve UI for authentication provider display

pull/6075/head
Germán Martín 1 week ago
parent
commit
c1e9c321a8
  1. 25
      apps/client/src/app/components/user-account-settings/user-account-settings.component.ts
  2. 40
      apps/client/src/app/components/user-account-settings/user-account-settings.html

25
apps/client/src/app/components/user-account-settings/user-account-settings.component.ts

@ -68,14 +68,14 @@ import { catchError, takeUntil } from 'rxjs/operators';
export class GfUserAccountSettingsComponent implements OnDestroy, OnInit { export class GfUserAccountSettingsComponent implements OnDestroy, OnInit {
public appearancePlaceholder = $localize`Auto`; public appearancePlaceholder = $localize`Auto`;
public baseCurrency: string; public baseCurrency: string;
public canLinkOidc: boolean = false; public canLinkOidc = false;
public currencies: string[] = []; public currencies: string[] = [];
public deleteOwnUserForm = this.formBuilder.group({ public deleteOwnUserForm = this.formBuilder.group({
accessToken: ['', Validators.required] accessToken: ['', Validators.required]
}); });
public hasOidcLinked: boolean = false; public hasOidcLinked = false;
public hasPermissionForAuthOidc: boolean = false; public hasPermissionForAuthOidc = false;
public hasPermissionForAuthToken: boolean = false; public hasPermissionForAuthToken = false;
public hasPermissionToDeleteOwnUser: boolean; public hasPermissionToDeleteOwnUser: boolean;
public hasPermissionToUpdateViewMode: boolean; public hasPermissionToUpdateViewMode: boolean;
public hasPermissionToUpdateUserSettings: boolean; public hasPermissionToUpdateUserSettings: boolean;
@ -211,6 +211,21 @@ export class GfUserAccountSettingsComponent implements OnDestroy, OnInit {
}); });
} }
public getAuthProviderDisplayName(): string {
switch (this.user?.provider) {
case 'ANONYMOUS':
return 'Security Token';
case 'GOOGLE':
return 'Google';
case 'INTERNET_IDENTITY':
return 'Internet Identity';
case 'OIDC':
return 'OpenID Connect (OIDC)';
default:
return this.user?.provider || 'Unknown';
}
}
public isCommunityLanguage() { public isCommunityLanguage() {
return !['de', 'en'].includes(this.language); return !['de', 'en'].includes(this.language);
} }
@ -436,7 +451,7 @@ export class GfUserAccountSettingsComponent implements OnDestroy, OnInit {
this.update(); this.update();
resolve(); resolve();
}, },
error: (error) => { error: (error: Error) => {
reject(error); reject(error);
} }
}); });

40
apps/client/src/app/components/user-account-settings/user-account-settings.html

@ -261,29 +261,25 @@
</button> </button>
</div> </div>
</div> </div>
@if (canLinkOidc || hasOidcLinked) { <div class="align-items-center d-flex mt-4 py-1">
<div class="align-items-center d-flex mt-4 py-1"> <div class="pr-1 w-50">
<div class="pr-1 w-50"> <div i18n>Authentication Provider</div>
<div i18n>OIDC Provider</div>
<div class="hint-text text-muted" i18n>
Link your account to sign in with OpenID Connect
</div>
</div>
<div class="pl-1 w-50">
@if (hasOidcLinked) {
<span class="badge badge-success" i18n>
<ion-icon class="mr-1" name="link-outline"></ion-icon>
Linked
</span>
} @else {
<button color="primary" mat-flat-button (click)="onLinkOidc()">
<ion-icon class="mr-2" name="link-outline"></ion-icon>
<span i18n>Link OIDC Provider</span>
</button>
}
</div>
</div> </div>
} <div class="pl-1 w-50">
<div>{{ getAuthProviderDisplayName() }}</div>
@if (canLinkOidc) {
<button
class="mt-2"
color="primary"
mat-flat-button
(click)="onLinkOidc()"
>
<ion-icon class="mr-2" name="link-outline"></ion-icon>
<span i18n>Link OIDC</span>
</button>
}
</div>
</div>
@if (hasPermissionToDeleteOwnUser) { @if (hasPermissionToDeleteOwnUser) {
<hr class="mt-5" /> <hr class="mt-5" />
<form <form

Loading…
Cancel
Save