1
0
Fork 0
SSObaseApp_nodeJS/bin/web/auth/routes/api.js

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;