UNPKG

unleash-server

Version:

Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.

45 lines 1.93 kB
import { extractClientIp } from '../../util/extract-user.js'; import { NONE } from '../../types/permissions.js'; import Controller from '../controller.js'; import { createRequestSchema } from '../../openapi/util/create-request-schema.js'; import { createResponseSchema } from '../../openapi/util/create-response-schema.js'; import { userSchema } from '../../openapi/spec/user-schema.js'; import { serializeDates } from '../../types/serialize-dates.js'; import { getStandardResponses } from '../../openapi/index.js'; export class SimplePasswordProvider extends Controller { constructor(config, { userService, openApiService, }) { super(config); this.openApiService = openApiService; this.userService = userService; this.route({ method: 'post', path: '/login', handler: this.login, permission: NONE, middleware: [ openApiService.validPath({ tags: ['Auth'], summary: 'Log in', description: 'Logs in the user and creates an active session', operationId: 'login', requestBody: createRequestSchema('loginSchema'), responses: { 200: createResponseSchema('userSchema'), ...getStandardResponses(401), }, }), ], }); } async login(req, res) { const { username, password } = req.body; const userAgent = req.get('user-agent'); const { isAPI, ...user } = await this.userService.loginUser(username, password, { userAgent, ip: extractClientIp(req), }); req.session.user = user; this.openApiService.respondWithValidation(200, res, userSchema.$id, serializeDates(user)); } } //# sourceMappingURL=simple-password-provider.js.map