mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-05 02:39:33 +02:00
Add external login tests
This commit is contained in:
parent
4a8d113b9b
commit
9107d791e2
19 changed files with 582 additions and 27 deletions
|
@ -21,7 +21,8 @@ import { ClientHtml } from '../client-html'
|
|||
import { PluginTranslation } from '../../../shared/models/plugins/plugin-translation.model'
|
||||
import { RegisterHelpersStore } from './register-helpers-store'
|
||||
import { RegisterServerHookOptions } from '@shared/models/plugins/register-server-hook.model'
|
||||
import { MOAuthTokenUser } from '@server/typings/models'
|
||||
import { MOAuthTokenUser, MUser } from '@server/typings/models'
|
||||
import { RegisterServerAuthPassOptions, RegisterServerAuthExternalOptions } from '@shared/models/plugins/register-server-auth.model'
|
||||
|
||||
export interface RegisteredPlugin {
|
||||
npmName: string
|
||||
|
@ -133,14 +134,14 @@ export class PluginManager implements ServerHook {
|
|||
return this.translations[locale] || {}
|
||||
}
|
||||
|
||||
onLogout (npmName: string, authName: string) {
|
||||
onLogout (npmName: string, authName: string, user: MUser) {
|
||||
const auth = this.getAuth(npmName, authName)
|
||||
|
||||
if (auth?.onLogout) {
|
||||
logger.info('Running onLogout function from auth %s of plugin %s', authName, npmName)
|
||||
|
||||
try {
|
||||
auth.onLogout()
|
||||
auth.onLogout(user)
|
||||
} catch (err) {
|
||||
logger.warn('Cannot run onLogout function from auth %s of plugin %s.', authName, npmName, { err })
|
||||
}
|
||||
|
@ -478,8 +479,10 @@ export class PluginManager implements ServerHook {
|
|||
const plugin = this.getRegisteredPluginOrTheme(npmName)
|
||||
if (!plugin || plugin.type !== PluginType.PLUGIN) return null
|
||||
|
||||
return plugin.registerHelpersStore.getIdAndPassAuths()
|
||||
.find(a => a.authName === authName)
|
||||
let auths: (RegisterServerAuthPassOptions | RegisterServerAuthExternalOptions)[] = plugin.registerHelpersStore.getIdAndPassAuths()
|
||||
auths = auths.concat(plugin.registerHelpersStore.getExternalAuths())
|
||||
|
||||
return auths.find(a => a.authName === authName)
|
||||
}
|
||||
|
||||
// ###################### Private getters ######################
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
import * as express from 'express'
|
||||
import { logger } from '@server/helpers/logger'
|
||||
import { VIDEO_CATEGORIES, VIDEO_LANGUAGES, VIDEO_LICENCES, VIDEO_PLAYLIST_PRIVACIES, VIDEO_PRIVACIES } from '@server/initializers/constants'
|
||||
import {
|
||||
VIDEO_CATEGORIES,
|
||||
VIDEO_LANGUAGES,
|
||||
VIDEO_LICENCES,
|
||||
VIDEO_PLAYLIST_PRIVACIES,
|
||||
VIDEO_PRIVACIES
|
||||
} from '@server/initializers/constants'
|
||||
import { onExternalUserAuthenticated } from '@server/lib/auth'
|
||||
import { PluginModel } from '@server/models/server/plugin'
|
||||
import { RegisterServerOptions } from '@server/typings/plugins'
|
||||
|
@ -10,11 +17,15 @@ import { PluginVideoCategoryManager } from '@shared/models/plugins/plugin-video-
|
|||
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, RegisterServerExternalAuthenticatedResult } from '@shared/models/plugins/register-server-auth.model'
|
||||
import {
|
||||
RegisterServerAuthExternalOptions,
|
||||
RegisterServerAuthExternalResult,
|
||||
RegisterServerAuthPassOptions,
|
||||
RegisterServerExternalAuthenticatedResult
|
||||
} from '@shared/models/plugins/register-server-auth.model'
|
||||
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 * as express from 'express'
|
||||
import { buildPluginHelpers } from './plugin-helpers'
|
||||
|
||||
type AlterableVideoConstant = 'language' | 'licence' | 'category' | 'privacy' | 'playlistPrivacy'
|
||||
|
@ -174,6 +185,11 @@ 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 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue