unleash-server
Version:
Unleash is an enterprise ready feature flag service. It provides different strategies for handling feature flags.
45 lines • 1.93 kB
JavaScript
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