1
0
mirror of https://github.com/0rangebananaspy/authelia.git synced 2024-09-14 22:47:21 +07:00
authelia/server/src/lib/configuration/schema/Configuration.ts
Clement Michaud 9fc55543fd Integrate more policy options in ACL rules.
The possible values for ACL policies are now: bypass, one_factor, two_factor,
deny.

This change also deprecate auth_methods because the method is now associated
directly to a resource in the ACLs instead of a domain.
2018-11-17 18:08:29 +01:00

64 lines
2.3 KiB
TypeScript

import { ACLConfiguration, complete as AclConfigurationComplete } from "./AclConfiguration";
import { AuthenticationBackendConfiguration, complete as AuthenticationBackendComplete } from "./AuthenticationBackendConfiguration";
import { NotifierConfiguration, complete as NotifierConfigurationComplete } from "./NotifierConfiguration";
import { RegulationConfiguration, complete as RegulationConfigurationComplete } from "./RegulationConfiguration";
import { SessionConfiguration, complete as SessionConfigurationComplete } from "./SessionConfiguration";
import { StorageConfiguration, complete as StorageConfigurationComplete } from "./StorageConfiguration";
import { TotpConfiguration, complete as TotpConfigurationComplete } from "./TotpConfiguration";
export interface Configuration {
access_control?: ACLConfiguration;
authentication_backend: AuthenticationBackendConfiguration;
default_redirection_url?: string;
logs_level?: string;
notifier?: NotifierConfiguration;
port?: number;
regulation?: RegulationConfiguration;
session?: SessionConfiguration;
storage?: StorageConfiguration;
totp?: TotpConfiguration;
}
export function complete(
configuration: Configuration):
[Configuration, string[]] {
const newConfiguration: Configuration = JSON.parse(
JSON.stringify(configuration));
const errors: string[] = [];
newConfiguration.access_control =
AclConfigurationComplete(
newConfiguration.access_control);
const [backend, error] =
AuthenticationBackendComplete(
newConfiguration.authentication_backend);
if (error) errors.push(error);
newConfiguration.authentication_backend = backend;
if (!newConfiguration.logs_level) {
newConfiguration.logs_level = "info";
}
const [notifier, notifierError] = NotifierConfigurationComplete(
newConfiguration.notifier);
newConfiguration.notifier = notifier;
if (notifierError) errors.push(notifierError);
if (!newConfiguration.port) {
newConfiguration.port = 8080;
}
newConfiguration.regulation = RegulationConfigurationComplete(
newConfiguration.regulation);
newConfiguration.session = SessionConfigurationComplete(
newConfiguration.session);
newConfiguration.storage = StorageConfigurationComplete(
newConfiguration.storage);
newConfiguration.totp = TotpConfigurationComplete(
newConfiguration.totp);
return [newConfiguration, errors];
}