87 lines
2.5 KiB
TypeScript
87 lines
2.5 KiB
TypeScript
import { NextFunction, Request, Response } from 'express'
|
|
import { makeResponse } from '../libs'
|
|
import { ModRequest } from '../types'
|
|
import {
|
|
callback,
|
|
introspect,
|
|
refresh,
|
|
signon,
|
|
revoke,
|
|
APIKey,
|
|
} from '../auth/index'
|
|
|
|
export default class AuthController extends APIKey {
|
|
public signin = (req: Request, res: Response) => {
|
|
const { authurl } = signon()
|
|
res.redirect(authurl)
|
|
}
|
|
|
|
public callback = async (req: Request, res: Response) => {
|
|
const { session_state, code } = req.query as {
|
|
session_state: string
|
|
code: string
|
|
}
|
|
res.send(makeResponse(await callback(session_state, code)))
|
|
}
|
|
|
|
public me = (req: ModRequest, res: Response) => {
|
|
res.send(makeResponse(req.user.userData))
|
|
}
|
|
|
|
public logout = async (req: Request, res: Response, next: NextFunction) => {
|
|
res.send(makeResponse(await revoke(req, res, next)))
|
|
}
|
|
|
|
public refresh = async (
|
|
req: Request,
|
|
res: Response,
|
|
next: NextFunction
|
|
) => {
|
|
res.send(makeResponse(await refresh(req, res, next)))
|
|
}
|
|
|
|
public introspect = async (
|
|
req: Request,
|
|
res: Response,
|
|
next: NextFunction
|
|
) => {
|
|
res.send(makeResponse(await introspect(req, res, next)))
|
|
}
|
|
|
|
public createKey = async (req: ModRequest | any, res: Response) => {
|
|
res.send(
|
|
makeResponse(await this.createKeyS(req.user.userData.sub))
|
|
).status(201)
|
|
}
|
|
|
|
public fetchKey = async (req: ModRequest | any, res: Response) => {
|
|
res.send(makeResponse(await this.fetchKeyS(req.user.userData.sub)))
|
|
}
|
|
|
|
public deleteKey = async (req: ModRequest | any, res: Response) => {
|
|
res.send(
|
|
makeResponse(await this.deleteKeyS(req.user.userData.sub))
|
|
).status(204)
|
|
}
|
|
|
|
public validateKey = async (req: ModRequest, res: Response) => {
|
|
let api_key
|
|
if (req.method === 'POST') {
|
|
api_key = req.body.api_key
|
|
if (!api_key) {
|
|
return res
|
|
.status(400)
|
|
.send(makeResponse(null, 'Invalid api_key'))
|
|
}
|
|
} else if (req.method === 'GET') {
|
|
api_key = req.headers?.['x-api-key']
|
|
if (!api_key) {
|
|
return res
|
|
.status(400)
|
|
.send(makeResponse(null, 'Invalid api_key'))
|
|
}
|
|
}
|
|
res.send(makeResponse(await this.validateKeyS(api_key)))
|
|
}
|
|
}
|