]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/types/plugins/register-server-auth.model.ts
Merge branch 'release/5.0.0' into develop
[github/Chocobozzz/PeerTube.git] / server / types / plugins / register-server-auth.model.ts
CommitLineData
41fb13c3 1import express from 'express'
7e0c2606 2import { UserAdminFlag, UserRole } from '@shared/models'
67ed6552 3import { MOAuthToken, MUser } from '../models'
7fed6375
C
4
5export type RegisterServerAuthOptions = RegisterServerAuthPassOptions | RegisterServerAuthExternalOptions
6
60b880ac
C
7export type AuthenticatedResultUpdaterFieldName = 'displayName' | 'role' | 'adminFlags' | 'videoQuota' | 'videoQuotaDaily'
8
4a8d113b 9export 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
33export interface RegisterServerExternalAuthenticatedResult extends RegisterServerAuthenticatedResult {
34 req: express.Request
35 res: express.Response
36}
37
38interface 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
51export 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
63export 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
70export interface RegisterServerAuthExternalResult {
4a8d113b 71 userAuthenticated (options: RegisterServerExternalAuthenticatedResult): void
7fed6375 72}