62 lines
1.4 KiB
JavaScript
62 lines
1.4 KiB
JavaScript
var express = require('express');
|
|
var route = express.Router();
|
|
|
|
const cfg = require(global['__dirname']+'/bin/config');
|
|
const sso = require(global['__dirname']+'/bin/sso/module');
|
|
|
|
route.get('/login', (req, res) => {
|
|
// TODO: login
|
|
let a = sso.createAuthentication({
|
|
url: cfg.sso.authenticator,
|
|
appId: cfg.sso.appId
|
|
});
|
|
res.redirect(a);
|
|
});
|
|
|
|
route.get('/authenticate', async (req, res) => {
|
|
if(req.query && req.query.uid && req.query.token) {
|
|
let auth = await sso.authenticateUser({
|
|
userId: req.query.uid,
|
|
token: req.query.token,
|
|
appId: cfg.sso.appId,
|
|
appSecret: cfg.sso.appSecret
|
|
});
|
|
if(auth) {
|
|
req.session.user = {
|
|
ssoId: req.query.uid,
|
|
initializeUser: true
|
|
};
|
|
return res.redirect(cfg.web.rootUrl);
|
|
}
|
|
else return res.redirect(cfg.web.rootUrl + 'auth/login');
|
|
}
|
|
});
|
|
|
|
route.get('/logout', (req, res) => {
|
|
if(!req.session.user) {
|
|
return res.type('json').end(JSON.stringify({
|
|
status: 401,
|
|
message: 'msg.auth.login.required'
|
|
}));
|
|
} else {
|
|
res.clearCookie('RememberMe');
|
|
req.session.destroy();
|
|
return res.type('json').end(JSON.stringify({
|
|
status: 200,
|
|
message: 'msg.auth.logout.successful'
|
|
}));
|
|
}
|
|
});
|
|
|
|
if(global['debug']) {
|
|
// DEBUG info
|
|
route.get('/info', (req, res) => {
|
|
let obj = {};
|
|
if(req.session) obj.session = req.session;
|
|
if(req.cookies) obj.cookie = req.cookies;
|
|
res.type('json').end(JSON.stringify(obj));
|
|
});
|
|
}
|
|
|
|
module.exports = route;
|