]>
Commit | Line | Data |
---|---|---|
7fed6375 | 1 | import { UserRole } from '@shared/models' |
9107d791 | 2 | import { MOAuthToken, MUser } from '@server/typings/models' |
4a8d113b | 3 | import * as express from 'express' |
7fed6375 C |
4 | |
5 | export type RegisterServerAuthOptions = RegisterServerAuthPassOptions | RegisterServerAuthExternalOptions | |
6 | ||
4a8d113b C |
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 { | |
e1c55031 C |
20 | // Authentication name (a plugin can register multiple auth strategies) |
21 | authName: string | |
7fed6375 | 22 | |
e307e4fc | 23 | // Called by PeerTube when a user from your plugin logged out |
9107d791 | 24 | onLogout?(user: MUser): void |
7fed6375 | 25 | |
e307e4fc C |
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 }> | |
4a8d113b C |
29 | } |
30 | ||
31 | export interface RegisterServerAuthPassOptions extends RegisterServerAuthBase { | |
32 | // Weight of this authentication so PeerTube tries the auth methods in DESC weight order | |
33 | getWeight(): number | |
e307e4fc | 34 | |
7fed6375 C |
35 | // Used by PeerTube to login a user |
36 | // Returns null if the login failed, or { username, email } on success | |
37 | login(body: { | |
38 | id: string | |
39 | password: string | |
4a8d113b | 40 | }): Promise<RegisterServerAuthenticatedResult | null> |
7fed6375 C |
41 | } |
42 | ||
4a8d113b C |
43 | export interface RegisterServerAuthExternalOptions extends RegisterServerAuthBase { |
44 | // Will be displayed in a block next to the login form | |
45 | authDisplayName: string | |
7fed6375 | 46 | |
4a8d113b | 47 | onAuthRequest: (req: express.Request, res: express.Response) => void |
7fed6375 C |
48 | } |
49 | ||
50 | export interface RegisterServerAuthExternalResult { | |
4a8d113b | 51 | userAuthenticated (options: RegisterServerExternalAuthenticatedResult): void |
7fed6375 | 52 | } |