mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-05 19:42:24 +02:00
shared/ typescript types dir server-commands
This commit is contained in:
parent
6b5f72beda
commit
bf54587a3e
242 changed files with 228 additions and 172 deletions
132
shared/server-commands/users/login-command.ts
Normal file
132
shared/server-commands/users/login-command.ts
Normal file
|
@ -0,0 +1,132 @@
|
|||
import { HttpStatusCode, PeerTubeProblemDocument } from '@shared/models'
|
||||
import { unwrapBody } from '../requests'
|
||||
import { AbstractCommand, OverrideCommandOptions } from '../shared'
|
||||
|
||||
export class LoginCommand extends AbstractCommand {
|
||||
|
||||
login (options: OverrideCommandOptions & {
|
||||
client?: { id?: string, secret?: string }
|
||||
user?: { username: string, password?: string }
|
||||
} = {}) {
|
||||
const { client = this.server.store.client, user = this.server.store.user } = options
|
||||
const path = '/api/v1/users/token'
|
||||
|
||||
const body = {
|
||||
client_id: client.id,
|
||||
client_secret: client.secret,
|
||||
username: user.username,
|
||||
password: user.password ?? 'password',
|
||||
response_type: 'code',
|
||||
grant_type: 'password',
|
||||
scope: 'upload'
|
||||
}
|
||||
|
||||
return unwrapBody<{ access_token: string, refresh_token: string } & PeerTubeProblemDocument>(this.postBodyRequest({
|
||||
...options,
|
||||
|
||||
path,
|
||||
requestType: 'form',
|
||||
fields: body,
|
||||
implicitToken: false,
|
||||
defaultExpectedStatus: HttpStatusCode.OK_200
|
||||
}))
|
||||
}
|
||||
|
||||
getAccessToken (arg1?: { username: string, password?: string }): Promise<string>
|
||||
getAccessToken (arg1: string, password?: string): Promise<string>
|
||||
async getAccessToken (arg1?: { username: string, password?: string } | string, password?: string) {
|
||||
let user: { username: string, password?: string }
|
||||
|
||||
if (!arg1) user = this.server.store.user
|
||||
else if (typeof arg1 === 'object') user = arg1
|
||||
else user = { username: arg1, password }
|
||||
|
||||
try {
|
||||
const body = await this.login({ user })
|
||||
|
||||
return body.access_token
|
||||
} catch (err) {
|
||||
throw new Error(`Cannot authenticate. Please check your username/password. (${err})`)
|
||||
}
|
||||
}
|
||||
|
||||
loginUsingExternalToken (options: OverrideCommandOptions & {
|
||||
username: string
|
||||
externalAuthToken: string
|
||||
}) {
|
||||
const { username, externalAuthToken } = options
|
||||
const path = '/api/v1/users/token'
|
||||
|
||||
const body = {
|
||||
client_id: this.server.store.client.id,
|
||||
client_secret: this.server.store.client.secret,
|
||||
username: username,
|
||||
response_type: 'code',
|
||||
grant_type: 'password',
|
||||
scope: 'upload',
|
||||
externalAuthToken
|
||||
}
|
||||
|
||||
return this.postBodyRequest({
|
||||
...options,
|
||||
|
||||
path,
|
||||
requestType: 'form',
|
||||
fields: body,
|
||||
implicitToken: false,
|
||||
defaultExpectedStatus: HttpStatusCode.OK_200
|
||||
})
|
||||
}
|
||||
|
||||
logout (options: OverrideCommandOptions & {
|
||||
token: string
|
||||
}) {
|
||||
const path = '/api/v1/users/revoke-token'
|
||||
|
||||
return unwrapBody<{ redirectUrl: string }>(this.postBodyRequest({
|
||||
...options,
|
||||
|
||||
path,
|
||||
requestType: 'form',
|
||||
implicitToken: false,
|
||||
defaultExpectedStatus: HttpStatusCode.OK_200
|
||||
}))
|
||||
}
|
||||
|
||||
refreshToken (options: OverrideCommandOptions & {
|
||||
refreshToken: string
|
||||
}) {
|
||||
const path = '/api/v1/users/token'
|
||||
|
||||
const body = {
|
||||
client_id: this.server.store.client.id,
|
||||
client_secret: this.server.store.client.secret,
|
||||
refresh_token: options.refreshToken,
|
||||
response_type: 'code',
|
||||
grant_type: 'refresh_token'
|
||||
}
|
||||
|
||||
return this.postBodyRequest({
|
||||
...options,
|
||||
|
||||
path,
|
||||
requestType: 'form',
|
||||
fields: body,
|
||||
implicitToken: false,
|
||||
defaultExpectedStatus: HttpStatusCode.OK_200
|
||||
})
|
||||
}
|
||||
|
||||
getClient (options: OverrideCommandOptions = {}) {
|
||||
const path = '/api/v1/oauth-clients/local'
|
||||
|
||||
return this.getRequestBody<{ client_id: string, client_secret: string }>({
|
||||
...options,
|
||||
|
||||
path,
|
||||
host: this.server.host,
|
||||
implicitToken: false,
|
||||
defaultExpectedStatus: HttpStatusCode.OK_200
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue