mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
feat(plugin-authentication-administration): CB-1410 add required auth provider services
This commit is contained in:
@@ -133,7 +133,7 @@ export const Switch: SwitchType = observer(function Switch({
|
||||
}
|
||||
|
||||
return styled(styles)(
|
||||
<field className={className}>
|
||||
<field className={className} title={rest.title}>
|
||||
<switch-body>
|
||||
<switch-control>
|
||||
<switch-control-track />
|
||||
|
||||
@@ -45,5 +45,6 @@ query getAuthProviders {
|
||||
encryption
|
||||
}
|
||||
}
|
||||
requiredFeatures
|
||||
}
|
||||
}
|
||||
@@ -124,14 +124,13 @@ export interface AuthProviderCredentialsProfile {
|
||||
export interface AuthProviderInfo {
|
||||
configurable: Scalars['Boolean'];
|
||||
configurations?: Maybe<AuthProviderConfiguration[]>;
|
||||
/** @deprecated Field no longer supported */
|
||||
credentialParameters: AuthCredentialInfo[];
|
||||
credentialProfiles: AuthProviderCredentialsProfile[];
|
||||
defaultProvider: Scalars['Boolean'];
|
||||
description?: Maybe<Scalars['String']>;
|
||||
icon?: Maybe<Scalars['ID']>;
|
||||
id: Scalars['ID'];
|
||||
label: Scalars['String'];
|
||||
requiredFeatures: Array<Scalars['String']>;
|
||||
}
|
||||
|
||||
export interface ConnectionConfig {
|
||||
@@ -1133,6 +1132,7 @@ export interface ServerConfigInput {
|
||||
export interface ServerError {
|
||||
causedBy?: Maybe<ServerError>;
|
||||
errorCode?: Maybe<Scalars['String']>;
|
||||
errorType?: Maybe<Scalars['String']>;
|
||||
message?: Maybe<Scalars['String']>;
|
||||
stackTrace?: Maybe<Scalars['String']>;
|
||||
}
|
||||
@@ -1277,7 +1277,7 @@ export interface GetAuthProviderConfigurationsQuery { configurations: Array<{ pr
|
||||
|
||||
export type GetAuthProvidersQueryVariables = Exact<{ [key: string]: never }>;
|
||||
|
||||
export interface GetAuthProvidersQuery { providers: Array<{ id: string; label: string; icon?: Maybe<string>; description?: Maybe<string>; defaultProvider: boolean; configurable: boolean; configurations?: Maybe<Array<{ id: string; displayName: string; iconURL?: Maybe<string>; description?: Maybe<string>; signInLink?: Maybe<string>; signOutLink?: Maybe<string>; metadataLink?: Maybe<string> }>>; credentialProfiles: Array<{ id?: Maybe<string>; label?: Maybe<string>; description?: Maybe<string>; credentialParameters: Array<{ id: string; displayName: string; description?: Maybe<string>; admin: boolean; user: boolean; identifying: boolean; possibleValues?: Maybe<Array<Maybe<string>>>; encryption?: Maybe<AuthCredentialEncryption> }> }> }> }
|
||||
export interface GetAuthProvidersQuery { providers: Array<{ id: string; label: string; icon?: Maybe<string>; description?: Maybe<string>; defaultProvider: boolean; configurable: boolean; requiredFeatures: string[]; configurations?: Maybe<Array<{ id: string; displayName: string; iconURL?: Maybe<string>; description?: Maybe<string>; signInLink?: Maybe<string>; signOutLink?: Maybe<string>; metadataLink?: Maybe<string> }>>; credentialProfiles: Array<{ id?: Maybe<string>; label?: Maybe<string>; description?: Maybe<string>; credentialParameters: Array<{ id: string; displayName: string; description?: Maybe<string>; admin: boolean; user: boolean; identifying: boolean; possibleValues?: Maybe<Array<Maybe<string>>>; encryption?: Maybe<AuthCredentialEncryption> }> }> }> }
|
||||
|
||||
export type GetUserProfilePropertiesQueryVariables = Exact<{ [key: string]: never }>;
|
||||
|
||||
@@ -2293,6 +2293,7 @@ export const GetAuthProvidersDocument = `
|
||||
encryption
|
||||
}
|
||||
}
|
||||
requiredFeatures
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
+21
-1
@@ -41,9 +41,25 @@ export const AuthenticationProviders: PlaceholderComponent<IConfigurationPlaceho
|
||||
useExecutor({
|
||||
executor: formContext.changeExecutor,
|
||||
handlers: [function switchControls() {
|
||||
if (serverConfig.enabledAuthProviders?.length === 0 && localProvider) {
|
||||
const enabledProviders = serverConfig.enabledAuthProviders;
|
||||
|
||||
if (enabledProviders?.length === 0 && localProvider) {
|
||||
serverConfig.anonymousAccessEnabled = true;
|
||||
}
|
||||
|
||||
if (enabledProviders?.length && enabledProviders.length > 0) {
|
||||
for (let i = enabledProviders.length - 1; i >= 0; i--) {
|
||||
const provider = providers.resource.get(enabledProviders[i] ?? '');
|
||||
|
||||
if (provider?.requiredFeatures.length) {
|
||||
const unavailable = provider.requiredFeatures.some(feat => !serverConfig.enabledFeatures?.includes(feat));
|
||||
|
||||
if (unavailable) {
|
||||
enabledProviders.splice(i, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}],
|
||||
});
|
||||
|
||||
@@ -75,11 +91,14 @@ export const AuthenticationProviders: PlaceholderComponent<IConfigurationPlaceho
|
||||
<>
|
||||
{providers.resource.values.map(provider => {
|
||||
const links = authProviderService.getServiceDescriptionLinks(provider);
|
||||
const disabled = provider.requiredFeatures.some(feat => !serverConfig.enabledFeatures?.includes(feat));
|
||||
const tooltip = disabled ? `Following services need to be enabled: "${provider.requiredFeatures.join(', ')}"` : '';
|
||||
|
||||
return (
|
||||
<Switch
|
||||
key={provider.id}
|
||||
id={`authProvider_${provider.id}`}
|
||||
title={tooltip}
|
||||
value={provider.id}
|
||||
name="enabledAuthProviders"
|
||||
state={serverConfig}
|
||||
@@ -93,6 +112,7 @@ export const AuthenticationProviders: PlaceholderComponent<IConfigurationPlaceho
|
||||
</>
|
||||
)}
|
||||
mod={['primary']}
|
||||
disabled={disabled}
|
||||
small
|
||||
autoHide
|
||||
>
|
||||
|
||||
Reference in New Issue
Block a user