satitm-sso-node/routes/auth.js
2024-05-05 16:59:26 +07:00

69 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'];
directory.queryUser(username, attributes, function(err, user) {
if (err) {
console.log('Error:', err);
}
else {
console.log('User:', user);
response += 'Username: ' + req.user.username + '<br>';
response += 'First Name: ' + req.user.first_name + '<br>';
response += 'Last Name: ' + req.user.last_name + '<br>';
usertype_str_map = ['Unknown', 'Student', 'Parent'];
response += 'User Type: ' + usertype_str_map[directory.getUserType(req, res)] + '<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/api');
});
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/api',successRedirect: '/selfservice/api', 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;