suvarna chikkamath
2 min readMar 13, 2023

App.js ( azure active directory token code )

const express = require(“express”);

const app = express();

const orderRoute = require(“./routes/orderRoute”);

const bodyParser = require(“body-parser”);

const cors = require(“cors”);

const passport = require(‘passport’);

const azureConfig = require(‘./azure.config.json’);

const BearerStrategy = require(‘passport-azure-ad’).BearerStrategy;

const options = {

// https://login.microsoftonline.com/<your_tenant_guid>/.well-known/openid-configuration

identityMetadata: `${azureConfig.metadata.authority}/${azureConfig.metadata.version}/${azureConfig.metadata.discovery}`,

/**

* Required if you are using common endpoint and setting `validateIssuer` to true.

* For tenant-specific endpoint, this field is optional, we will use the issuer from the metadata by default.

* issuer: `https://${azureConfig.metadata.authority}/${azureConfig.credentials.tenantID}/${azureConfig.metadata.version}`,

*/

// @ts-ignore

issuer: null,

validateIssuer: azureConfig.settings.validateIssuer,

clientID: azureConfig.credentials.clientID,

audience: azureConfig.credentials.audience,

passReqToCallback: azureConfig.settings.passReqToCallback,

loggingLevel: azureConfig.settings.loggingLevel,

scope: azureConfig.resource.scope,

// If this is set to true, no personal information such as tokens and claims will be logged. The default value is true.

loggingNoPII: true,

/**

* This value is the clock skew (in seconds) allowed in token validation. It must be a positive integer.

* The default value is 300 seconds.

*/

clockSkew: 320

};

const bearerStrategy = new BearerStrategy(options, (token, done) => {

// Verifying the user

/**

* You can use a function here that will lookup the users and add additional information to the user

* object.

**/

const user = {};

// Send user info using the second argument

console.log(‘token’, token);

return done(null, user, token);

}

);

app.use(cors());

app.use(function (req, res, next) {

//Enabling CORS

res.header(“Access-Control-Allow-Origin”, “*”);

res.header(“Access-Control-Allow-Methods”, “GET,HEAD,OPTIONS,POST,PUT”);

res.header(“Access-Control-Allow-Headers”, “Origin, X-Requested-With, Content-Type,Accept, x-client-key, x-client-token, x-client-secret, authorization”);

next();

});

app.use(passport.initialize());

passport.use(bearerStrategy);

// API endpoint exposed

app.use(passport.authenticate(‘oauth-bearer’, { session: false }),

(req, res, next) => {

// console.log(‘req.authInfo’, req.authInfo);

// Information will be available for request life cycle on server side, e.g. req.authInfo[‘name’] for requestor name

res.locals.authInfo = req.authInfo;

return next();

}

);

app.get(‘/protected-resource’, (req, res) => {

res.send(‘Hello! This resource is protected.’)

});

app.use(express.static(‘./public’));

app.use(bodyParser.urlencoded({ extended: false }));

app.use(bodyParser.json());

// const corsOptions ={

// origin:’http://localhost:3000',

// credentials:true, //access-control-allow-credentials:true

// optionSuccessStatus:200

// }

// app.use(cors(corsOptions));

/** app.use() puts the specified middleware functions at the specified path */

app.use(“/regulatory”, orderRoute);

module.exports = app;

Azure.json

{

“credentials”: {

“tenantID”: “b50d8ea7–50f7–44c1-b1e1–96d32db3b4ea”,

“clientID”: “98353746-dd9a-4db3-b589–2daea2d0c56a”,

“audience”: “98353746-dd9a-4db3-b589–2daea2d0c56a”

},

“resource”: {

“scope”: [“User.Read”]

},

“metadata”: {

“authority”: “https://login.microsoftonline.com/b50d8ea7-50f7-44c1-b1e1-96d32db3b4ea",

“discovery”: “.well-known/openid-configuration”,

“version”: “v2.0”

},

“settings”: {

“validateIssuer”: false,

“passReqToCallback”: false,

“loggingLevel”: “info”

}

}

orderROute.js correct code

/** Import the library */

const router = require(“express”).Router();

/** Path for all the apis */

const getRoleController = require(“../controllers/getUsersAndRole”);

const adminDashboardController = require(“../controllers/adminDashboard”);

const mangerDashboardController = require(“../controllers/mangerDashboard”);

const subjectExpertDashboardController = require(“../controllers/subjectExpertDashboard”);

const selectedRegulatoryController = require(“../controllers/userSelectedRegulatoryDetails”);

/**edit path */

const editDashboardUser = require(“../controllers/dashboardEditUser”)

const editTaginfo = require(“../controllers/editRequirmentAndTags”)

const editMangerAcceptandDeclineinfo = require(“../controllers/editResponsiableMangerUsers”)

const editSubjectExpertAcceptandDeclineinfo = require(“../controllers/editSubjectExpertUsers”)

/** router.http methods() function is used to create a new router object. This function is used when you want to create a new router object in your program to handle requests */

router.get(“/role”,getRoleController.getUserRole);

router.get(“/users”,getRoleController.getUserDetails);

router.get(“/admin_dashboard-data”, adminDashboardController.getAdminDashboadData);

router.post(“/manger-dashboard-data”, mangerDashboardController.getMangerDashboadData);

router.post(“/subject-dashboard-data”, subjectExpertDashboardController.getSubjectDashboadData);

router.post(“/get_selcted_regulatory”,selectedRegulatoryController.getSelctedRegulatoryDetails);

/** Edit apis */

router.post(“/edituser”,editDashboardUser.editDashboadUserData);

router.post(“/edittagandeditrequirement”,editTaginfo.editTagDetailsData);

router.post(“/editMangerAcceptandDecline”,editMangerAcceptandDeclineinfo.updateMangerAcceptDeclineandAllocatesubjectData);

router.post(“/editMangerEditTagAndRequirement”,editMangerAcceptandDeclineinfo.mangerEditditTagAndeEditRequirementData);

router.post(“/editSubjectExpertAcceptandDecline”,editSubjectExpertAcceptandDeclineinfo.updateSubjectExpertAcceptDeclineandAllocateSubjectData);

module.exports = router;

No responses yet