1 import { UserRole } from '@shared/models'
2 import { MOAuthToken } from '@server/typings/models'
3 import * as express from 'express'
5 export type RegisterServerAuthOptions = RegisterServerAuthPassOptions | RegisterServerAuthExternalOptions
7 export interface RegisterServerAuthenticatedResult {
14 export interface RegisterServerExternalAuthenticatedResult extends RegisterServerAuthenticatedResult {
19 interface RegisterServerAuthBase {
20 // Authentication name (a plugin can register multiple auth strategies)
23 // Called by PeerTube when a user from your plugin logged out
26 // Your plugin can hook PeerTube access/refresh token validity
27 // So you can control for your plugin the user session lifetime
28 hookTokenValidity?(options: { token: MOAuthToken, type: 'access' | 'refresh' }): Promise<{ valid: boolean }>
31 export interface RegisterServerAuthPassOptions extends RegisterServerAuthBase {
32 // Weight of this authentication so PeerTube tries the auth methods in DESC weight order
35 // Used by PeerTube to login a user
36 // Returns null if the login failed, or { username, email } on success
40 }): Promise<RegisterServerAuthenticatedResult | null>
43 export interface RegisterServerAuthExternalOptions extends RegisterServerAuthBase {
44 // Will be displayed in a block next to the login form
45 authDisplayName: string
47 onAuthRequest: (req: express.Request, res: express.Response) => void
50 export interface RegisterServerAuthExternalResult {
51 userAuthenticated (options: RegisterServerExternalAuthenticatedResult): void