From a4995eb7ac5745f62604d70f7b2225ff33916d49 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 30 Apr 2020 10:03:09 +0200 Subject: Add ability to unregister plugin auths --- server/lib/plugins/register-helpers-store.ts | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'server/lib') diff --git a/server/lib/plugins/register-helpers-store.ts b/server/lib/plugins/register-helpers-store.ts index 6317ac2cf..a3ec7ef6a 100644 --- a/server/lib/plugins/register-helpers-store.ts +++ b/server/lib/plugins/register-helpers-store.ts @@ -49,8 +49,8 @@ export class RegisterHelpersStore { private readonly settings: RegisterServerSettingOptions[] = [] - private readonly idAndPassAuths: RegisterServerAuthPassOptions[] = [] - private readonly externalAuths: RegisterServerAuthExternalOptions[] = [] + private idAndPassAuths: RegisterServerAuthPassOptions[] = [] + private externalAuths: RegisterServerAuthExternalOptions[] = [] private readonly onSettingsChangeCallbacks: ((settings: any) => void)[] = [] @@ -83,6 +83,8 @@ export class RegisterHelpersStore { const registerIdAndPassAuth = this.buildRegisterIdAndPassAuth() const registerExternalAuth = this.buildRegisterExternalAuth() + const unregisterIdAndPassAuth = this.buildUnregisterIdAndPassAuth() + const unregisterExternalAuth = this.buildUnregisterExternalAuth() const peertubeHelpers = buildPluginHelpers(this.npmName) @@ -104,6 +106,8 @@ export class RegisterHelpersStore { registerIdAndPassAuth, registerExternalAuth, + unregisterIdAndPassAuth, + unregisterExternalAuth, peertubeHelpers } @@ -179,7 +183,7 @@ export class RegisterHelpersStore { private buildRegisterIdAndPassAuth () { return (options: RegisterServerAuthPassOptions) => { if (!options.authName || typeof options.getWeight !== 'function' || typeof options.login !== 'function') { - logger.error('Cannot register auth plugin %s: authName of getWeight or login are not valid.', this.npmName) + logger.error('Cannot register auth plugin %s: authName, getWeight or login are not valid.', this.npmName, { options }) return } @@ -192,7 +196,7 @@ export class RegisterHelpersStore { return (options: RegisterServerAuthExternalOptions) => { if (!options.authName || typeof options.authDisplayName !== 'function' || typeof options.onAuthRequest !== 'function') { - logger.error('Cannot register auth plugin %s: authName of getWeight or login are not valid.', this.npmName) + logger.error('Cannot register auth plugin %s: authName, authDisplayName or onAuthRequest are not valid.', this.npmName, { options }) return } @@ -212,6 +216,18 @@ export class RegisterHelpersStore { } } + private buildUnregisterExternalAuth () { + return (authName: string) => { + this.externalAuths = this.externalAuths.filter(a => a.authName !== authName) + } + } + + private buildUnregisterIdAndPassAuth () { + return (authName: string) => { + this.idAndPassAuths = this.idAndPassAuths.filter(a => a.authName !== authName) + } + } + private buildSettingsManager (): PluginSettingsManager { return { getSetting: (name: string) => PluginModel.getSetting(this.plugin.name, this.plugin.type, name), -- cgit v1.2.3