1
1
if ( process . env . NODE_ENV !== 'production' ) require ( 'dotenv' ) . config ( ) ;
2
2
const Utils = require ( './bin/lib/utils/utils' ) ;
3
- const s3o = require ( '@financial-times/s3o-middleware' ) ;
4
3
const express = require ( 'express' ) ;
5
4
const path = require ( 'path' ) ;
6
5
const fs = require ( 'fs' ) ;
7
6
const bodyParser = require ( 'body-parser' ) ;
8
7
const app = express ( ) ;
9
8
const helmet = require ( 'helmet' ) ;
10
9
const express_enforces_ssl = require ( 'express-enforces-ssl' ) ;
10
+ const OktaMiddleware = require ( '@financial-times/okta-express-middleware' ) ;
11
+ const session = require ( 'cookie-session' ) ;
11
12
const PORT = Utils . processEnv ( 'PORT' , { validateInteger : true , default : "2018" } ) ;
12
13
const extract = require ( './bin/lib/utils/extract-text' ) ;
13
14
const hbs = require ( 'hbs' ) ;
@@ -26,6 +27,14 @@ if (process.env.NODE_ENV === 'production') {
26
27
app . use ( bodyParser . json ( ) ) ;
27
28
app . use ( bodyParser . urlencoded ( { extended : false } ) ) ;
28
29
30
+ const okta = new OktaMiddleware ( {
31
+ client_id : process . env . OKTA_CLIENT ,
32
+ client_secret : process . env . OKTA_SECRET ,
33
+ issuer : process . env . OKTA_ISSUER ,
34
+ appBaseUrl : process . env . BASE_URL ,
35
+ scope : 'openid offline_access'
36
+ } ) ;
37
+
29
38
const CAPI = require ( './bin/lib/ft/capi' ) . init ( Utils . processEnv ( 'FT_API_KEY' ) ) ;
30
39
const Translator = require ( './bin/lib/translators/multi-translator' ) ;
31
40
const Audio = require ( './bin/lib/utils/get-audio' ) ;
@@ -73,6 +82,12 @@ app.use(function(req, res, next) {
73
82
next ( ) ;
74
83
} ) ;
75
84
85
+ app . use ( session ( {
86
+ secret : process . env . SESSION_TOKEN ,
87
+ maxAge : 24 * 3600 * 1000 , //24h
88
+ httpOnly : true
89
+ } ) ) ;
90
+
76
91
app . post ( '/article/:uuid/:lang' , ( req , res , next ) => {
77
92
res . uuid = req . params . uuid ;
78
93
res . lang = req . params . lang ;
@@ -302,10 +317,12 @@ app.get('/content/:uuid', (req,res) => {
302
317
res . render ( 'content' , data ) ;
303
318
} ) ;
304
319
305
- app . use ( s3o ) ;
320
+ app . use ( okta . router ) ;
321
+ app . use ( okta . ensureAuthenticated ( ) ) ;
322
+ app . use ( okta . verifyJwts ( ) ) ;
306
323
307
324
app . get ( '/' , async ( req , res ) => {
308
- const settings = await Translator . settings ( Utils . extractUser ( req . headers . cookie ) ) ;
325
+ const settings = await Translator . settings ( Utils . extractUser ( req . userContext . userinfo ) ) ;
309
326
return res . render ( 'index' , settings ) ;
310
327
} ) ;
311
328
0 commit comments