]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/types/plugins/register-server-auth.model.ts
Merge branch 'release/4.3.0' into develop
[github/Chocobozzz/PeerTube.git] / server / types / plugins / register-server-auth.model.ts
1 import express from 'express'
2 import { UserRole } from '@shared/models'
3 import { MOAuthToken, MUser } from '../models'
4
5 export type RegisterServerAuthOptions = RegisterServerAuthPassOptions | RegisterServerAuthExternalOptions
6
7 export interface RegisterServerAuthenticatedResult {
8 username: string
9 email: string
10 role?: UserRole
11 displayName?: string
12 }
13
14 export interface RegisterServerExternalAuthenticatedResult extends RegisterServerAuthenticatedResult {
15 req: express.Request
16 res: express.Response
17 }
18
19 interface RegisterServerAuthBase {
20 // Authentication name (a plugin can register multiple auth strategies)
21 authName: string
22
23 // Called by PeerTube when a user from your plugin logged out
24 // Returns a redirectUrl sent to the client or nothing
25 onLogout?(user: MUser, req: express.Request): Promise<string>
26
27 // Your plugin can hook PeerTube access/refresh token validity
28 // So you can control for your plugin the user session lifetime
29 hookTokenValidity?(options: { token: MOAuthToken, type: 'access' | 'refresh' }): Promise<{ valid: boolean }>
30 }
31
32 export interface RegisterServerAuthPassOptions extends RegisterServerAuthBase {
33 // Weight of this authentication so PeerTube tries the auth methods in DESC weight order
34 getWeight(): number
35
36 // Used by PeerTube to login a user
37 // Returns null if the login failed, or { username, email } on success
38 login(body: {
39 id: string
40 password: string
41 }): Promise<RegisterServerAuthenticatedResult | null>
42 }
43
44 export interface RegisterServerAuthExternalOptions extends RegisterServerAuthBase {
45 // Will be displayed in a block next to the login form
46 authDisplayName: () => string
47
48 onAuthRequest: (req: express.Request, res: express.Response) => void
49 }
50
51 export interface RegisterServerAuthExternalResult {
52 userAuthenticated (options: RegisterServerExternalAuthenticatedResult): void
53 }