-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
44 lines (37 loc) · 1.58 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
const express = require('express');
const morgan = require('morgan');
const cors = require('cors');
const passport = require('passport');
require('dotenv').config();
const config = require('./authConfig');
const router = require('./routes/router');
const routeGuard = require('./utils/guard');
const BearerStrategy = require('passport-azure-ad').BearerStrategy;
config.credentials.clientID = process.env.API_APP_ID;
config.credentials.tenantID = process.env.API_TENANT_ID;
const options = {
identityMetadata: `https://${config.metadata.authority}/${config.credentials.tenantID}/${config.metadata.version}/${config.metadata.discovery}`,
issuer: `https://${config.metadata.authority}/${config.credentials.tenantID}/${config.metadata.version}`,
clientID: config.credentials.clientID,
audience: config.credentials.clientID, // audience is this application
validateIssuer: config.settings.validateIssuer,
passReqToCallback: config.settings.passReqToCallback,
loggingLevel: config.settings.loggingLevel,
};
const bearerStrategy = new BearerStrategy(options, (token, done) => {
// Send user info using the second argument
done(null, {}, token);
});
const app = express();
app.use(morgan('dev'));
app.use(express.json());
app.use(cors());
app.use(passport.initialize());
passport.use(bearerStrategy);
// Validates token, checks for role and serve
app.use('/api', passport.authenticate('oauth-bearer', { session: false }), routeGuard(config.accessMatrix), router);
const port = process.env.PORT || 5000;
app.listen(port, () => {
console.log('Listening on port ' + port);
});
module.exports = app;