]>
Commit | Line | Data |
---|---|---|
1 | import * as 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 | } |