satitm-sso-node/routes/auth.js

67 lines
No EOL
2.1 KiB
JavaScript

let express = require('express');
let router = express.Router();
let passport = require('passport');
let directory = require('../directory.js');
router.get('/selfservice/api', function (req, res) {
response = 'Hello World!<br>';
console.log('User:', req.user);
if (req.user) {
// Query Active Directory for user details
// username is the UPN
let username = req.user.username;
attributes = ['dn', 'memberOf'];
response += 'Username: ' + req.user.username + '<br>';
response += 'First Name: ' + req.user.first_name + '<br>';
response += 'Last Name: ' + req.user.last_name + '<br>';
usertype_map = ['Unknown', 'Student', 'Parent'];
response += 'User Type: ' + usertype_map[req.user.userType] + '<br>';
if (req.user.userType === directory.USER_TYPE.STUDENT) {
response += 'Primary Parent: ' + req.user.primaryParent + '<br>';
}
else if (req.user.userType === directory.USER_TYPE.PARENT) {
response += 'Students: ' + req.user.students + '<br>';
}
response += '<a href="/selfservice/api/logout">Logout</a>';
res.send(response);
}
else {
response += '<a href="/selfservice/api/login">Login</a>';
res.send(response);
}
});
router.get('/selfservice/api/logout', function (req, res) {
req.logout();
res.redirect('/selfservice');
});
router.get('/selfservice/api/login',
passport.authenticate('saml', { failureRedirect: '/selfservice/api', failureFlash: true }),
function (req, res) {
res.redirect(end);
}
);
router.use(function(req, res, next) {
console.log('Received request:', req.method, req.url);
console.log('Data:', req.body);
next();
});
router.post('/selfservice/api/login/postResponse',
passport.authenticate('saml', { failureRedirect: '/selfservice',successRedirect: '/selfservice', failureFlash: true }),
function (req, res) {
console.log('SAML authentication successful');
res.redirect('/selfservice');
}
);
function validUser(req, res, next) {
if (!req.user) {
res.redirect('/api/login');
}
next();
}
module.exports = router;