UNPKG

open-collaboration-server

Version:

Open Collaboration Server implementation, part of the Open Collaboration Tools project

105 lines 4.38 kB
// ****************************************************************************** // Copyright 2024 TypeFox GmbH // This program and the accompanying materials are made available under the // terms of the MIT License, which is available in the project root. // ****************************************************************************** var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var SimpleLoginEndpoint_1; import { inject, injectable } from 'inversify'; import { Emitter, Info } from 'open-collaboration-protocol'; import { Logger } from '../utils/logging.js'; import { Configuration } from '../utils/configuration.js'; let SimpleLoginEndpoint = class SimpleLoginEndpoint { static { SimpleLoginEndpoint_1 = this; } static ENDPOINT = '/api/login/simple'; logger; configuration; authSuccessEmitter = new Emitter(); onDidAuthenticate = this.authSuccessEmitter.event; shouldActivate() { return this.configuration.getValue('oct-activate-simple-login', 'boolean') ?? false; } getProtocolProvider() { return { type: 'form', name: 'unverified', endpoint: SimpleLoginEndpoint_1.ENDPOINT, label: { code: Info.Codes.UnverifiedLoginLabel, message: 'Unverified', params: [] }, details: { code: Info.Codes.UnverifiedLoginDetails, message: 'Login with a user name and an optional email address', params: [] }, group: { code: Info.Codes.BuiltinsGroup, message: 'Builtins', params: [] }, fields: [ { name: 'user', label: { code: Info.Codes.UsernameLabel, message: 'Username', params: [] }, required: true, placeHolder: { code: Info.Codes.UsernamePlaceholder, message: 'Your user name that will be shown to all session participants', params: [] } }, { name: 'email', label: { code: Info.Codes.EmailLabel, message: 'Email', params: [] }, required: false, placeHolder: { code: Info.Codes.EmailPlaceholder, message: 'Your email that will be shown to the host when joining the session', params: [] } } ] }; } onStart(app, _hostname, _port) { app.post(SimpleLoginEndpoint_1.ENDPOINT, async (req, res) => { try { const token = req.body.token; const user = req.body.user; const email = req.body.email; await Promise.all(this.authSuccessEmitter.fire({ token, userInfo: { name: user, email, authProvider: 'Unverified' } })); res.send('Ok'); } catch (err) { this.logger.error('Failed to perform simple login', err); res.status(400); res.send('Failed to perform simple login'); } }); } }; __decorate([ inject(Logger) ], SimpleLoginEndpoint.prototype, "logger", void 0); __decorate([ inject(Configuration) ], SimpleLoginEndpoint.prototype, "configuration", void 0); SimpleLoginEndpoint = SimpleLoginEndpoint_1 = __decorate([ injectable() ], SimpleLoginEndpoint); export { SimpleLoginEndpoint }; //# sourceMappingURL=simple-login-endpoint.js.map