1 import express from 'express'
2 import { UserAdminFlag, UserRole } from '@shared/models'
3 import { MOAuthToken, MUser } from '../models'
5 export type RegisterServerAuthOptions = RegisterServerAuthPassOptions | RegisterServerAuthExternalOptions
7 export interface RegisterServerAuthenticatedResult {
13 adminFlags?: UserAdminFlag
16 videoQuotaDaily?: number
19 export interface RegisterServerExternalAuthenticatedResult extends RegisterServerAuthenticatedResult {
24 interface RegisterServerAuthBase {
25 // Authentication name (a plugin can register multiple auth strategies)
28 // Called by PeerTube when a user from your plugin logged out
29 // Returns a redirectUrl sent to the client or nothing
30 onLogout?(user: MUser, req: express.Request): Promise<string>
32 // Your plugin can hook PeerTube access/refresh token validity
33 // So you can control for your plugin the user session lifetime
34 hookTokenValidity?(options: { token: MOAuthToken, type: 'access' | 'refresh' }): Promise<{ valid: boolean }>
37 export interface RegisterServerAuthPassOptions extends RegisterServerAuthBase {
38 // Weight of this authentication so PeerTube tries the auth methods in DESC weight order
41 // Used by PeerTube to login a user
42 // Returns null if the login failed, or { username, email } on success
46 }): Promise<RegisterServerAuthenticatedResult | null>
49 export interface RegisterServerAuthExternalOptions extends RegisterServerAuthBase {
50 // Will be displayed in a block next to the login form
51 authDisplayName: () => string
53 onAuthRequest: (req: express.Request, res: express.Response) => void
56 export interface RegisterServerAuthExternalResult {
57 userAuthenticated (options: RegisterServerExternalAuthenticatedResult): void