X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Fplugins%2Fregister-helpers-store.ts;h=151196bf19eaa12be4c5e92e0865b3ba1cd6a650;hb=ebefc902f59be6c5542c19ff706e310d9dddf75f;hp=7e827401f580e43c064f9e1e64149cbcf87b9796;hpb=7fed637506043e4432cbebe041ada0625171cceb;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/plugins/register-helpers-store.ts b/server/lib/plugins/register-helpers-store.ts index 7e827401f..151196bf1 100644 --- a/server/lib/plugins/register-helpers-store.ts +++ b/server/lib/plugins/register-helpers-store.ts @@ -1,7 +1,5 @@ -import { PluginSettingsManager } from '@shared/models/plugins/plugin-settings-manager.model' -import { PluginModel } from '@server/models/server/plugin' -import { PluginStorageManager } from '@shared/models/plugins/plugin-storage-manager.model' -import { PluginVideoLanguageManager } from '@shared/models/plugins/plugin-video-language-manager.model' +import * as express from 'express' +import { logger } from '@server/helpers/logger' import { VIDEO_CATEGORIES, VIDEO_LANGUAGES, @@ -9,23 +7,26 @@ import { VIDEO_PLAYLIST_PRIVACIES, VIDEO_PRIVACIES } from '@server/initializers/constants' -import { PluginVideoLicenceManager } from '@shared/models/plugins/plugin-video-licence-manager.model' -import { PluginVideoCategoryManager } from '@shared/models/plugins/plugin-video-category-manager.model' +import { onExternalUserAuthenticated } from '@server/lib/auth' +import { PluginModel } from '@server/models/server/plugin' import { RegisterServerOptions } from '@server/typings/plugins' -import { buildPluginHelpers } from './plugin-helpers' -import { logger } from '@server/helpers/logger' -import { RegisterServerHookOptions } from '@shared/models/plugins/register-server-hook.model' -import { serverHookObject } from '@shared/models/plugins/server-hook.model' -import { RegisterServerSettingOptions } from '@shared/models/plugins/register-server-setting.model' -import * as express from 'express' -import { PluginVideoPrivacyManager } from '@shared/models/plugins/plugin-video-privacy-manager.model' import { PluginPlaylistPrivacyManager } from '@shared/models/plugins/plugin-playlist-privacy-manager.model' +import { PluginSettingsManager } from '@shared/models/plugins/plugin-settings-manager.model' +import { PluginStorageManager } from '@shared/models/plugins/plugin-storage-manager.model' +import { PluginVideoCategoryManager } from '@shared/models/plugins/plugin-video-category-manager.model' +import { PluginVideoLanguageManager } from '@shared/models/plugins/plugin-video-language-manager.model' +import { PluginVideoLicenceManager } from '@shared/models/plugins/plugin-video-licence-manager.model' +import { PluginVideoPrivacyManager } from '@shared/models/plugins/plugin-video-privacy-manager.model' import { RegisterServerAuthExternalOptions, RegisterServerAuthExternalResult, - RegisterServerAuthPassOptions + RegisterServerAuthPassOptions, + RegisterServerExternalAuthenticatedResult } from '@shared/models/plugins/register-server-auth.model' -import { onExternalAuthPlugin } from '@server/lib/auth' +import { RegisterServerHookOptions } from '@shared/models/plugins/register-server-hook.model' +import { RegisterServerSettingOptions } from '@shared/models/plugins/register-server-setting.model' +import { serverHookObject } from '@shared/models/plugins/server-hook.model' +import { buildPluginHelpers } from './plugin-helpers' type AlterableVideoConstant = 'language' | 'licence' | 'category' | 'privacy' | 'playlistPrivacy' type VideoConstant = { [key in number | string]: string } @@ -171,6 +172,11 @@ 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) + return + } + this.idAndPassAuths.push(options) } } @@ -179,11 +185,22 @@ export class RegisterHelpersStore { 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) + return + } + this.externalAuths.push(options) return { - onAuth (options: { username: string, email: string }): void { - onExternalAuthPlugin(self.npmName, options.username, options.email) + userAuthenticated (result: RegisterServerExternalAuthenticatedResult): void { + onExternalUserAuthenticated({ + npmName: self.npmName, + authName: options.authName, + authResult: result + }).catch(err => { + logger.error('Cannot execute onExternalUserAuthenticated.', { npmName: self.npmName, authName: options.authName, err }) + }) } } as RegisterServerAuthExternalResult } @@ -193,6 +210,8 @@ export class RegisterHelpersStore { return { getSetting: (name: string) => PluginModel.getSetting(this.plugin.name, this.plugin.type, name), + 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) } }