]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/types/plugins/register-server-auth.model.ts
External auth can set more user fields
[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
4a8d113b
C
7export 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
19export interface RegisterServerExternalAuthenticatedResult extends RegisterServerAuthenticatedResult {
20 req: express.Request
21 res: express.Response
22}
23
24interface 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
37export 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
49export 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
56export interface RegisterServerAuthExternalResult {
4a8d113b 57 userAuthenticated (options: RegisterServerExternalAuthenticatedResult): void
7fed6375 58}