open-collaboration-server
Version:
Open Collaboration Server implementation, part of the Open Collaboration Tools project
105 lines • 4.38 kB
JavaScript
// ******************************************************************************
// 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