private readonly settings: RegisterServerSettingOptions[] = []
- private readonly idAndPassAuths: RegisterServerAuthPassOptions[] = []
- private readonly externalAuths: RegisterServerAuthExternalOptions[] = []
+ private idAndPassAuths: RegisterServerAuthPassOptions[] = []
+ private externalAuths: RegisterServerAuthExternalOptions[] = []
+
+ private readonly onSettingsChangeCallbacks: ((settings: any) => void)[] = []
private readonly router: express.Router
const registerIdAndPassAuth = this.buildRegisterIdAndPassAuth()
const registerExternalAuth = this.buildRegisterExternalAuth()
+ const unregisterIdAndPassAuth = this.buildUnregisterIdAndPassAuth()
+ const unregisterExternalAuth = this.buildUnregisterExternalAuth()
const peertubeHelpers = buildPluginHelpers(this.npmName)
registerIdAndPassAuth,
registerExternalAuth,
+ unregisterIdAndPassAuth,
+ unregisterExternalAuth,
peertubeHelpers
}
return this.externalAuths
}
+ getOnSettingsChangedCallbacks () {
+ return this.onSettingsChangeCallbacks
+ }
+
private buildGetRouter () {
return () => this.router
}
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
}
const self = this
return (options: RegisterServerAuthExternalOptions) => {
- if (!options.authName || !options.onAuthRequest || typeof options.onAuthRequest !== 'function') {
- logger.error('Cannot register auth plugin %s: authName of getWeight or login are not valid.', this.npmName)
+ if (!options.authName || typeof options.authDisplayName !== 'function' || typeof options.onAuthRequest !== 'function') {
+ logger.error('Cannot register auth plugin %s: authName, authDisplayName or onAuthRequest are not valid.', this.npmName, { options })
return
}
}
}
+ 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),
+ getSetting: (name: string) => PluginModel.getSetting(this.plugin.name, this.plugin.type, name, this.settings),
+
+ getSettings: (names: string[]) => PluginModel.getSettings(this.plugin.name, this.plugin.type, names, this.settings),
- getSettings: (names: string[]) => PluginModel.getSettings(this.plugin.name, this.plugin.type, names),
+ setSetting: (name: string, value: string) => PluginModel.setSetting(this.plugin.name, this.plugin.type, name, value),
- setSetting: (name: string, value: string) => PluginModel.setSetting(this.plugin.name, this.plugin.type, name, value)
+ onSettingsChange: (cb: (settings: any) => void) => this.onSettingsChangeCallbacks.push(cb)
}
}