]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - shared/models/plugins/register-server-auth.model.ts
Add external login tests
[github/Chocobozzz/PeerTube.git] / shared / models / plugins / register-server-auth.model.ts
CommitLineData
7fed6375 1import { UserRole } from '@shared/models'
9107d791 2import { MOAuthToken, MUser } from '@server/typings/models'
4a8d113b 3import * as express from 'express'
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
12}
13
14export interface RegisterServerExternalAuthenticatedResult extends RegisterServerAuthenticatedResult {
15 req: express.Request
16 res: express.Response
17}
18
19interface RegisterServerAuthBase {
e1c55031
C
20 // Authentication name (a plugin can register multiple auth strategies)
21 authName: string
7fed6375 22
e307e4fc 23 // Called by PeerTube when a user from your plugin logged out
9107d791 24 onLogout?(user: MUser): void
7fed6375 25
e307e4fc
C
26 // Your plugin can hook PeerTube access/refresh token validity
27 // So you can control for your plugin the user session lifetime
28 hookTokenValidity?(options: { token: MOAuthToken, type: 'access' | 'refresh' }): Promise<{ valid: boolean }>
4a8d113b
C
29}
30
31export interface RegisterServerAuthPassOptions extends RegisterServerAuthBase {
32 // Weight of this authentication so PeerTube tries the auth methods in DESC weight order
33 getWeight(): number
e307e4fc 34
7fed6375
C
35 // Used by PeerTube to login a user
36 // Returns null if the login failed, or { username, email } on success
37 login(body: {
38 id: string
39 password: string
4a8d113b 40 }): Promise<RegisterServerAuthenticatedResult | null>
7fed6375
C
41}
42
4a8d113b
C
43export interface RegisterServerAuthExternalOptions extends RegisterServerAuthBase {
44 // Will be displayed in a block next to the login form
45 authDisplayName: string
7fed6375 46
4a8d113b 47 onAuthRequest: (req: express.Request, res: express.Response) => void
7fed6375
C
48}
49
50export interface RegisterServerAuthExternalResult {
4a8d113b 51 userAuthenticated (options: RegisterServerExternalAuthenticatedResult): void
7fed6375 52}