]>
Commit | Line | Data |
---|---|---|
1 | import express from 'express' | |
2 | import { UserAdminFlag, 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 | adminFlags?: UserAdminFlag | |
14 | ||
15 | videoQuota?: number | |
16 | videoQuotaDaily?: number | |
17 | } | |
18 | ||
19 | export interface RegisterServerExternalAuthenticatedResult extends RegisterServerAuthenticatedResult { | |
20 | req: express.Request | |
21 | res: express.Response | |
22 | } | |
23 | ||
24 | interface RegisterServerAuthBase { | |
25 | // Authentication name (a plugin can register multiple auth strategies) | |
26 | authName: string | |
27 | ||
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> | |
31 | ||
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 }> | |
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 | |
40 | ||
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 | |
46 | }): Promise<RegisterServerAuthenticatedResult | null> | |
47 | } | |
48 | ||
49 | export interface RegisterServerAuthExternalOptions extends RegisterServerAuthBase { | |
50 | // Will be displayed in a block next to the login form | |
51 | authDisplayName: () => string | |
52 | ||
53 | onAuthRequest: (req: express.Request, res: express.Response) => void | |
54 | } | |
55 | ||
56 | export interface RegisterServerAuthExternalResult { | |
57 | userAuthenticated (options: RegisterServerExternalAuthenticatedResult): void | |
58 | } |