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;