login.js 2.69 KB
const express = require('express');
const router = express.Router();
const sendRequest = require('utils/send-request');
const sendResponse = require('utils/send-response');
const validate = require('utils/validator');
//const passport = require('utils/passport-func')();
const conf = require('utils/config');

let logoutRedirectUrl;


module.exports = function(passport) {

    switch(conf.get('passport.strategy')) {
        case "local":
            console.log('passport local routes');
            logoutRedirectUrl = conf.get('passport.routes.local.logoutRedirectUrl');

            router.get('/login', (req, res) => {
                res.redirect(conf.get('passport.routes.local.loginPageUrl'));
            });

            router.post('/login', passport.authenticate('local', {  failureFlash: true }), (req, res) => {
                // this function runs if success
                console.log('post login');
                req.session.regenerate(function(err) {
                    if (err) {
                        res.json(err);
                    }
                });
                console.log('Login success... returning user in json');
                res.json(req.user);
            });

            break;

        case "saml":

            logoutRedirectUrl = conf.get('passport.routes.saml.logoutRedirectUrl');

            router.get('/login',
                passport.authenticate('saml',
                    {
                        successRedirect: '/',
                        failureRedirect: '/login'
                    })
            );

            router.post(conf.get('passport.configStrategy.saml.path'),
                passport.authenticate('saml',
                    {
                        failureRedirect: '/',
                        failureFlash: false
                    }),
                (req, res) => {
                    // code to get user permission
                    console.log(req.user);
                    // redirect to dashboard
                    res.redirect('http://localhost:4200');
                }
            );

            break;

        default:
            logoutRedirectUrl = '/';
    }

    router.get('/loggedin', (req, res) => {
        if (req.isUnauthenticated()) {
            console.log('GET /loggedin not authenticated');
            return res.json({ error: 'not logged in'});
        } else {
            console.log('authenticated');
            console.log('GET /loggedin ' + req.session.id);
            return res.json(req.user);
        }
    });

    router.get('/logout', (req, res) => {
        console.log('User logged out.');
        req.session.destroy();
        req.logout();
        res.redirect(logoutRedirectUrl);
    });


    return router;
};