@@ -2,6 +2,7 @@ const express = require('express');
2
2
const passport = require ( 'passport' ) ;
3
3
const next = require ( 'next' ) ;
4
4
const session = require ( 'express-session' ) ;
5
+ const cookieSession = require ( 'cookie-session' ) ;
5
6
const ControlTowerStrategy = require ( 'passport-control-tower' ) ;
6
7
const cookieParser = require ( 'cookie-parser' ) ;
7
8
const bodyParser = require ( 'body-parser' ) ;
@@ -21,14 +22,14 @@ const server = express();
21
22
function isAuthenticated ( req , res , nextAction ) {
22
23
if ( req . isAuthenticated ( ) ) return nextAction ( ) ;
23
24
// if they aren't redirect them to the home page
24
- res . redirect ( '/login ' ) ;
25
+ res . redirect ( '/' ) ;
25
26
}
26
-
27
27
// Use the Control Tower Strategy within Passport.
28
- passport . use ( new ControlTowerStrategy ( {
29
- apiUrl : process . env . CONTROL_TOWER_API_URL ,
30
- callbackUrl : process . env . CALLBACK_URL
31
- } ) ) ;
28
+ const controlTowerStrategy = new ControlTowerStrategy ( {
29
+ controlTowerUrl : '[CONTROL_TOWER_API_URL]' ,
30
+ callbackUrl : '[YOUR_CALLBACK_URL]' // auth path
31
+ } ) ;
32
+ passport . use ( controlTowerStrategy ) ;
32
33
33
34
// Passport session setup.
34
35
// To support persistent login sessions, Passport needs to be able to
@@ -44,10 +45,14 @@ passport.deserializeUser(function (obj, done) {
44
45
server . use ( cookieParser ( ) ) ;
45
46
server . use ( bodyParser . urlencoded ( { extended : false } ) ) ;
46
47
server . use ( bodyParser . json ( ) ) ;
48
+ server . use ( cookieSession ( {
49
+ name : 'session' ,
50
+ keys : [ process . env . SECRET || 'keyboard cat' ]
51
+ } ) ) ;
47
52
server . use ( session ( {
48
53
secret : process . env . SECRET || 'keyboard cat' ,
49
54
resave : false ,
50
- saveUninitialized : false
55
+ saveUninitialized : true
51
56
} ) ) ;
52
57
// Initialize Passport! Also use passport.session() middleware, to support
53
58
// persistent login sessions (recommended).
@@ -62,18 +67,19 @@ app.prepare()
62
67
return app . render ( req , res , '/landing' ) ;
63
68
} ) ;
64
69
65
- server . get ( '/login' , passport . authenticate ( 'control-tower' ) , function ( req , res ) {
66
- // Success
67
- res . redirect ( '/admin' ) ;
70
+ server . get ( '/login' , function ( req , res ) {
71
+ controlTowerStrategy . login ( req , res ) ;
68
72
} ) ;
69
73
70
74
server . get ( '/logout' , function ( req , res ) {
71
- req . session . destroy ( ) ;
72
75
req . logout ( ) ;
73
- // Success
74
76
res . redirect ( '/' ) ;
75
77
} ) ;
76
78
79
+ server . get ( '/auth' , passport . authenticate ( 'control-tower' , { failureRedirect : '/' } ) , function ( req , res ) {
80
+ res . redirect ( '/admin' ) ;
81
+ } ) ;
82
+
77
83
server . get ( '/admin' , isAuthenticated , function ( req , res ) {
78
84
const parsedUrl = parse ( req . url , true ) ;
79
85
return handle ( req , res , parsedUrl ) ;
0 commit comments