diff --git a/webapp/packages/core-authentication/src/AuthProvidersResource.ts b/webapp/packages/core-authentication/src/AuthProvidersResource.ts index e6ef04f020..11c001e509 100644 --- a/webapp/packages/core-authentication/src/AuthProvidersResource.ts +++ b/webapp/packages/core-authentication/src/AuthProvidersResource.ts @@ -6,7 +6,7 @@ * you may not use this file except in compliance with the License. */ -import { runInAction } from 'mobx'; +import { computed, makeObservable, runInAction } from 'mobx'; import { injectable } from '@cloudbeaver/core-di'; import { ServerConfigResource } from '@cloudbeaver/core-root'; @@ -30,6 +30,10 @@ export type AuthProviderConfiguration = BaseAuthProviderConfiguration; @injectable() export class AuthProvidersResource extends CachedMapResource { + get configurable(): AuthProvider[] { + return this.values.filter(provider => provider.configurable); + } + constructor( private readonly authSettingsService: AuthSettingsService, private readonly graphQLService: GraphQLService, @@ -43,6 +47,10 @@ export class AuthProvidersResource extends CachedMapResource { - if (!searchValue) { + if (searchValue === null) { return; } diff --git a/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/Options/AuthConfigurationOptions.tsx b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/Options/AuthConfigurationOptions.tsx index ea2971ce73..2010273d58 100644 --- a/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/Options/AuthConfigurationOptions.tsx +++ b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/Options/AuthConfigurationOptions.tsx @@ -49,7 +49,6 @@ export const AuthConfigurationOptions: TabContainerPanelComponent provider.configurable); const edit = state.mode === 'edit'; return styled(style)( @@ -59,7 +58,7 @@ export const AuthConfigurationOptions: TabContainerPanelComponent provider.id} valueSelector={provider => provider.label} placeholder={translate('administration_identity_providers_choose_provider_placeholder')} diff --git a/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/Options/AuthConfigurationOptionsTabService.ts b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/Options/AuthConfigurationOptionsTabService.ts index 63607b5fe6..171f1c0bee 100644 --- a/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/Options/AuthConfigurationOptionsTabService.ts +++ b/webapp/packages/plugin-authentication-administration/src/Administration/IdentityProviders/Options/AuthConfigurationOptionsTabService.ts @@ -6,14 +6,14 @@ * you may not use this file except in compliance with the License. */ -import { AuthConfigurationsResource } from '@cloudbeaver/core-authentication'; +import { AuthConfigurationsResource, AuthProvidersResource } from '@cloudbeaver/core-authentication'; import { Bootstrap, injectable } from '@cloudbeaver/core-di'; import type { IExecutionContextProvider } from '@cloudbeaver/core-executor'; import { getUniqueName } from '@cloudbeaver/core-utils'; import { AuthConfigurationFormService } from '../AuthConfigurationFormService'; import { authConfigurationContext } from '../Contexts/authConfigurationContext'; -import type { IAuthConfigurationFormFillConfigData, IAuthConfigurationFormSubmitData } from '../IAuthConfigurationFormProps'; +import type { IAuthConfigurationFormFillConfigData, IAuthConfigurationFormState, IAuthConfigurationFormSubmitData } from '../IAuthConfigurationFormProps'; import { AuthConfigurationOptions } from './AuthConfigurationOptions'; @injectable() @@ -21,6 +21,7 @@ export class AuthConfigurationOptionsTabService extends Bootstrap { constructor( private readonly authConfigurationFormService: AuthConfigurationFormService, private readonly authConfigurationsResource: AuthConfigurationsResource, + private readonly authProvidersResource: AuthProvidersResource, ) { super(); } @@ -130,7 +131,16 @@ export class AuthConfigurationOptionsTabService extends Bootstrap { } } - private fillConfig( + private async setDefaults(state: IAuthConfigurationFormState) { + if (state.mode === 'create') { + await this.authProvidersResource.loadAll(); + if (this.authProvidersResource.configurable.length === 1 && !state.config.providerId) { + state.config.providerId = this.authProvidersResource.configurable[0].id; + } + } + } + + private async fillConfig( { state, updated }: IAuthConfigurationFormFillConfigData, contexts: IExecutionContextProvider ) { @@ -139,6 +149,7 @@ export class AuthConfigurationOptionsTabService extends Bootstrap { } if (!state.info) { + await this.setDefaults(state); return; }