]>
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 | ||
60b880ac C |
7 | export type AuthenticatedResultUpdaterFieldName = 'displayName' | 'role' | 'adminFlags' | 'videoQuota' | 'videoQuotaDaily' |
8 | ||
4a8d113b | 9 | export interface RegisterServerAuthenticatedResult { |
60b880ac C |
10 | // Update the user profile if it already exists |
11 | // Default behaviour is no update | |
12 | // Introduced in PeerTube >= 5.1 | |
13 | userUpdater?: <T> (options: { | |
14 | fieldName: AuthenticatedResultUpdaterFieldName | |
15 | currentValue: T | |
16 | newValue: T | |
17 | }) => T | |
18 | ||
4a8d113b C |
19 | username: string |
20 | email: string | |
21 | role?: UserRole | |
22 | displayName?: string | |
7e0c2606 | 23 | |
60b880ac | 24 | // PeerTube >= 5.1 |
7e0c2606 C |
25 | adminFlags?: UserAdminFlag |
26 | ||
60b880ac | 27 | // PeerTube >= 5.1 |
7e0c2606 | 28 | videoQuota?: number |
60b880ac | 29 | // PeerTube >= 5.1 |
7e0c2606 | 30 | videoQuotaDaily?: number |
4a8d113b C |
31 | } |
32 | ||
33 | export interface RegisterServerExternalAuthenticatedResult extends RegisterServerAuthenticatedResult { | |
34 | req: express.Request | |
35 | res: express.Response | |
36 | } | |
37 | ||
38 | interface RegisterServerAuthBase { | |
e1c55031 C |
39 | // Authentication name (a plugin can register multiple auth strategies) |
40 | authName: string | |
7fed6375 | 41 | |
e307e4fc | 42 | // Called by PeerTube when a user from your plugin logged out |
74fd2643 C |
43 | // Returns a redirectUrl sent to the client or nothing |
44 | onLogout?(user: MUser, req: express.Request): Promise<string> | |
7fed6375 | 45 | |
e307e4fc C |
46 | // Your plugin can hook PeerTube access/refresh token validity |
47 | // So you can control for your plugin the user session lifetime | |
48 | hookTokenValidity?(options: { token: MOAuthToken, type: 'access' | 'refresh' }): Promise<{ valid: boolean }> | |
4a8d113b C |
49 | } |
50 | ||
51 | export interface RegisterServerAuthPassOptions extends RegisterServerAuthBase { | |
52 | // Weight of this authentication so PeerTube tries the auth methods in DESC weight order | |
53 | getWeight(): number | |
e307e4fc | 54 | |
7fed6375 C |
55 | // Used by PeerTube to login a user |
56 | // Returns null if the login failed, or { username, email } on success | |
57 | login(body: { | |
58 | id: string | |
59 | password: string | |
4a8d113b | 60 | }): Promise<RegisterServerAuthenticatedResult | null> |
7fed6375 C |
61 | } |
62 | ||
4a8d113b C |
63 | export interface RegisterServerAuthExternalOptions extends RegisterServerAuthBase { |
64 | // Will be displayed in a block next to the login form | |
a5896799 | 65 | authDisplayName: () => string |
7fed6375 | 66 | |
4a8d113b | 67 | onAuthRequest: (req: express.Request, res: express.Response) => void |
7fed6375 C |
68 | } |
69 | ||
70 | export interface RegisterServerAuthExternalResult { | |
4a8d113b | 71 | userAuthenticated (options: RegisterServerExternalAuthenticatedResult): void |
7fed6375 | 72 | } |