Passport control tower Strategy
A Passport's strategy for Control Tower
Installation
npm install --save passport-control-tower
Example of use
const express = require('express');
const passport = require('passport');
const ControlTowerStrategy = require('passport-control-tower');
const cookieParser = require('cookie-parser');
const bodyParser = require('body-parser');
const app = express();
function isAuthenticated(req, res, next) {
if (req.isAuthenticated()) return next();
res.redirect('/login');
}
passport.use(new ControlTowerStrategy({
apiUrl: '[CONTROL_TOWER_API_URL]',
callbackUrl: '[YOUR_CALLBACK_URL]'
}));
passport.serializeUser(function(user, done) {
done(null, user);
});
passport.deserializeUser(function(obj, done) {
done(null, obj);
});
app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(require('express-session')({ secret: 'keyboard cat', resave: false, saveUninitialized: false }));
app.use(passport.initialize());
app.use(passport.session());
app.get('/', function(req, res) {
res.send('Welcome!');
});
app.get('/private', isAuthenticated, function(req, res) {
res.send('Success!');
});
app.get('/login', passport.authenticate('control-tower'), function(req, res) {
res.redirect('/private');
});
app.get('/logout', function(req, res) {
req.session.destroy();
req.logout();
res.redirect('/');
});
app.listen(3000);