PeerTube/shared/models/plugins/register-server-auth.model.ts

53 lines
1.8 KiB
TypeScript
Raw Normal View History

2020-04-22 14:07:04 +00:00
import { UserRole } from '@shared/models'
2020-04-29 07:04:42 +00:00
import { MOAuthToken, MUser } from '@server/typings/models'
2020-04-28 12:49:03 +00:00
import * as express from 'express'
2020-04-22 14:07:04 +00:00
export type RegisterServerAuthOptions = RegisterServerAuthPassOptions | RegisterServerAuthExternalOptions
2020-04-28 12:49:03 +00:00
export interface RegisterServerAuthenticatedResult {
username: string
email: string
role?: UserRole
displayName?: string
}
export interface RegisterServerExternalAuthenticatedResult extends RegisterServerAuthenticatedResult {
req: express.Request
res: express.Response
}
interface RegisterServerAuthBase {
// Authentication name (a plugin can register multiple auth strategies)
authName: string
2020-04-22 14:07:04 +00:00
// Called by PeerTube when a user from your plugin logged out
2020-04-29 07:04:42 +00:00
onLogout?(user: MUser): void
2020-04-22 14:07:04 +00:00
// Your plugin can hook PeerTube access/refresh token validity
// So you can control for your plugin the user session lifetime
hookTokenValidity?(options: { token: MOAuthToken, type: 'access' | 'refresh' }): Promise<{ valid: boolean }>
2020-04-28 12:49:03 +00:00
}
export interface RegisterServerAuthPassOptions extends RegisterServerAuthBase {
// Weight of this authentication so PeerTube tries the auth methods in DESC weight order
getWeight(): number
2020-04-22 14:07:04 +00:00
// Used by PeerTube to login a user
// Returns null if the login failed, or { username, email } on success
login(body: {
id: string
password: string
2020-04-28 12:49:03 +00:00
}): Promise<RegisterServerAuthenticatedResult | null>
2020-04-22 14:07:04 +00:00
}
2020-04-28 12:49:03 +00:00
export interface RegisterServerAuthExternalOptions extends RegisterServerAuthBase {
// Will be displayed in a block next to the login form
2020-04-30 07:28:39 +00:00
authDisplayName: () => string
2020-04-22 14:07:04 +00:00
2020-04-28 12:49:03 +00:00
onAuthRequest: (req: express.Request, res: express.Response) => void
2020-04-22 14:07:04 +00:00
}
export interface RegisterServerAuthExternalResult {
2020-04-28 12:49:03 +00:00
userAuthenticated (options: RegisterServerExternalAuthenticatedResult): void
2020-04-22 14:07:04 +00:00
}