]>
Commit | Line | Data |
---|---|---|
41fb13c3 | 1 | import express from 'express' |
7e0c2606 | 2 | import { UserAdminFlag, UserRole } from '@shared/models' |
67ed6552 | 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 | |
7e0c2606 C |
12 | |
13 | adminFlags?: UserAdminFlag | |
14 | ||
15 | videoQuota?: number | |
16 | videoQuotaDaily?: number | |
4a8d113b C |
17 | } |
18 | ||
19 | export interface RegisterServerExternalAuthenticatedResult extends RegisterServerAuthenticatedResult { | |
20 | req: express.Request | |
21 | res: express.Response | |
22 | } | |
23 | ||
24 | interface RegisterServerAuthBase { | |
e1c55031 C |
25 | // Authentication name (a plugin can register multiple auth strategies) |
26 | authName: string | |
7fed6375 | 27 | |
e307e4fc | 28 | // Called by PeerTube when a user from your plugin logged out |
74fd2643 C |
29 | // Returns a redirectUrl sent to the client or nothing |
30 | onLogout?(user: MUser, req: express.Request): Promise<string> | |
7fed6375 | 31 | |
e307e4fc C |
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 }> | |
4a8d113b C |
35 | } |
36 | ||
37 | export interface RegisterServerAuthPassOptions extends RegisterServerAuthBase { | |
38 | // Weight of this authentication so PeerTube tries the auth methods in DESC weight order | |
39 | getWeight(): number | |
e307e4fc | 40 | |
7fed6375 C |
41 | // Used by PeerTube to login a user |
42 | // Returns null if the login failed, or { username, email } on success | |
43 | login(body: { | |
44 | id: string | |
45 | password: string | |
4a8d113b | 46 | }): Promise<RegisterServerAuthenticatedResult | null> |
7fed6375 C |
47 | } |
48 | ||
4a8d113b C |
49 | export interface RegisterServerAuthExternalOptions extends RegisterServerAuthBase { |
50 | // Will be displayed in a block next to the login form | |
a5896799 | 51 | authDisplayName: () => string |
7fed6375 | 52 | |
4a8d113b | 53 | onAuthRequest: (req: express.Request, res: express.Response) => void |
7fed6375 C |
54 | } |
55 | ||
56 | export interface RegisterServerAuthExternalResult { | |
4a8d113b | 57 | userAuthenticated (options: RegisterServerExternalAuthenticatedResult): void |
7fed6375 | 58 | } |