feat(plugin-authentication-administration): CB-1410 add required auth provider services

This commit is contained in:
Naumov Alexey
2021-11-25 23:41:35 +03:00
parent e05910dfbd
commit 8a499b7cd4
4 changed files with 27 additions and 5 deletions
@@ -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
}
}
+4 -3
View File
@@ -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
}
}
`;
@@ -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
>