mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
fix(plugin-authentication): CB-924 auth dialog mode switch
This commit is contained in:
@@ -107,7 +107,7 @@ export const AuthDialog: DialogComponent<IAuthPayload, null> = observer(function
|
||||
if (provider) {
|
||||
controller.selectProvider(provider);
|
||||
} else {
|
||||
controller.admin = administrationScreenService.activeScreen !== null;
|
||||
controller.setAdminMode(administrationScreenService.activeScreen !== null);
|
||||
}
|
||||
|
||||
const showTabs = !provider && controller.providers.length > 1;
|
||||
|
||||
@@ -38,7 +38,7 @@ export class AuthDialogController implements IInitializableController, IDestruct
|
||||
readonly error = new GQLErrorCatcher();
|
||||
private isDistructed = false;
|
||||
private link!: boolean;
|
||||
admin: boolean;
|
||||
private admin: boolean;
|
||||
private close!: () => void;
|
||||
|
||||
constructor(
|
||||
@@ -47,7 +47,7 @@ export class AuthDialogController implements IInitializableController, IDestruct
|
||||
private authInfoService: AuthInfoService,
|
||||
private commonDialogService: CommonDialogService
|
||||
) {
|
||||
makeObservable(this, {
|
||||
makeObservable<AuthDialogController, 'admin'>(this, {
|
||||
provider: observable,
|
||||
isAuthenticating: observable,
|
||||
credentials: observable,
|
||||
@@ -64,6 +64,14 @@ export class AuthDialogController implements IInitializableController, IDestruct
|
||||
this.loadProviders();
|
||||
}
|
||||
|
||||
setAdminMode(mode: boolean): void {
|
||||
if (this.admin !== mode) {
|
||||
this.admin = mode;
|
||||
|
||||
this.selectFirstAvailable();
|
||||
}
|
||||
}
|
||||
|
||||
destruct(): void {
|
||||
this.isDistructed = true;
|
||||
}
|
||||
@@ -104,14 +112,18 @@ export class AuthDialogController implements IInitializableController, IDestruct
|
||||
try {
|
||||
await this.authProvidersResource.loadAll();
|
||||
|
||||
if (this.providers.length > 0) {
|
||||
this.provider = this.providers.find(provider => provider.defaultProvider) ?? this.providers[0];
|
||||
}
|
||||
this.selectFirstAvailable();
|
||||
} catch (exception) {
|
||||
this.notificationService.logException(exception, 'Can\'t load auth providers');
|
||||
}
|
||||
}
|
||||
|
||||
private selectFirstAvailable(): void {
|
||||
if (this.providers.length > 0) {
|
||||
this.provider = this.providers.find(provider => provider.defaultProvider) ?? this.providers[0];
|
||||
}
|
||||
}
|
||||
|
||||
private compareProviders = (providerA: AuthProvider, providerB: AuthProvider): number => {
|
||||
if (providerA.defaultProvider === providerB.defaultProvider) {
|
||||
return providerA.label.localeCompare(providerB.label);
|
||||
|
||||
Reference in New Issue
Block a user