]>
Commit | Line | Data |
---|---|---|
41fb13c3 | 1 | import express from 'express' |
67ed6552 C |
2 | import { UserRole } from '@shared/models' |
3 | import { MOAuthToken, MUser } from '../models' | |
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 |
74fd2643 C |
24 | // Returns a redirectUrl sent to the client or nothing |
25 | onLogout?(user: MUser, req: express.Request): Promise<string> | |
7fed6375 | 26 | |
e307e4fc C |
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 }> | |
4a8d113b C |
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 | |
e307e4fc | 35 | |
7fed6375 C |
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 | |
4a8d113b | 41 | }): Promise<RegisterServerAuthenticatedResult | null> |
7fed6375 C |
42 | } |
43 | ||
4a8d113b C |
44 | export interface RegisterServerAuthExternalOptions extends RegisterServerAuthBase { |
45 | // Will be displayed in a block next to the login form | |
a5896799 | 46 | authDisplayName: () => string |
7fed6375 | 47 | |
4a8d113b | 48 | onAuthRequest: (req: express.Request, res: express.Response) => void |
7fed6375 C |
49 | } |
50 | ||
51 | export interface RegisterServerAuthExternalResult { | |
4a8d113b | 52 | userAuthenticated (options: RegisterServerExternalAuthenticatedResult): void |
7fed6375 | 53 | } |