1 | const Express = require( 'express' );
|
2 |
|
3 | const router = Express.Router();
|
4 |
|
5 | const {
|
6 | isAuth, getToken, JWTValidation, cookieExists, deleteCookie
|
7 | } = require( './functions' );
|
8 |
|
9 | module.exports = ( config, passport ) => {
|
10 |
|
11 | router.get(
|
12 | config.routes.appRoute,
|
13 | ( req, res ) => {
|
14 | if ( isAuth( req ) ) {
|
15 | res.render(
|
16 | config.routes.appView,
|
17 | {
|
18 | user : req.user
|
19 | }
|
20 | );
|
21 | }
|
22 | else {
|
23 | res.render(
|
24 | config.routes.appView,
|
25 | {
|
26 | user : null
|
27 | }
|
28 | );
|
29 | }
|
30 | }
|
31 | );
|
32 |
|
33 | router.get(
|
34 | config.routes.login,
|
35 | passport.authenticate(
|
36 | config.passport.strategy,
|
37 | {
|
38 | successRedirect : config.routes.appRoute,
|
39 | failureRedirect : config.routes.login
|
40 | }
|
41 | )
|
42 | );
|
43 |
|
44 | router.post(
|
45 | config.passport.saml.path,
|
46 | passport.authenticate(
|
47 | config.passport.strategy,
|
48 | {
|
49 | failureRedirect : config.routes.appRoute,
|
50 | failureFlash : true
|
51 | }
|
52 | ),
|
53 | ( req, res ) => {
|
54 |
|
55 | res.cookie(
|
56 | 'musd_id',
|
57 | getToken( req.user ),
|
58 | {
|
59 | maxAge : ( 60 * 60 * 8 ),
|
60 | domain : '.madera.k12.ca.us'
|
61 | }
|
62 | );
|
63 |
|
64 | res.redirect( config.routes.appRoute );
|
65 | }
|
66 | );
|
67 |
|
68 | router.get(
|
69 | config.routes.userRoute,
|
70 | ( req, res ) => {
|
71 | if ( isAuth( req ) && JWTValidation( req, res ) ) {
|
72 | res.render(
|
73 | config.routes.userView,
|
74 | {
|
75 | user : req.user
|
76 | }
|
77 | );
|
78 | }
|
79 | else {
|
80 | res.redirect( config.routes.login );
|
81 | }
|
82 | }
|
83 | );
|
84 |
|
85 | router.get(
|
86 | config.routes.logout,
|
87 | ( req, res ) => {
|
88 |
|
89 | deleteCookie( req, res );
|
90 |
|
91 | res.redirect( config.passport.saml.logoutUrl );
|
92 | }
|
93 | );
|
94 |
|
95 | router.get(
|
96 | '/saml/get-profile',
|
97 | ( req, res ) => {
|
98 | if ( isAuth( req ) && cookieExists( req, res ) ) {
|
99 | res.send( req.user );
|
100 | }
|
101 | else {
|
102 | res.json( {
|
103 | success : true,
|
104 | redirectTo : `https://${req.headers.host}${config.routes.login}`,
|
105 | redirect : true
|
106 | } );
|
107 | }
|
108 | }
|
109 | );
|
110 |
|
111 | return router;
|
112 | };
|