app.use(function(req, res, next) { // Set the authenticated user in the // template locals if (req.user) { res.locals.user = req.user.profile; } next(); });
// Authentication callback. // After we have an access token, get user data and load the sendMail page. router.get('/token', passport.authenticate('azuread-openidconnect', { failureRedirect: '/' }), (req, res) => { graphHelper.getUserData(req.user.accessToken, (err, user) => { if (!err) { req.user.profile.displayName = user.body.displayName; req.user.profile.emails = [{ address: user.body.mail || user.body.userPrincipalName }]; renderSendMail(req, res); } else { renderError(err, res); } }); });
app.post('/emailSender', ensureAuthenticated, (req, res) => { const mailBody = emailHelper.generateMailBody(req.user.profile.displayName, req.body.input_email); graphHelper.sendEmail(req.user, mailBody, function(err) { if (err) { renderError(res, err); return; } console.log("Sent an email"); res.render('emailSender', { user: req.user.profile, status: "success"}); }); });
// application ================================================================= app.get('/', function(req, res){ if (req.isAuthenticated()) { var userEmail = req.user.email; if (userEmail === undefined) { graphHelper.getUserEmail(req.user, function(err, email){ if (email) { userEmail = email; // Update user in cache var userIndex = users.findIndex((obj => obj.profile.oid == req.user.profile.oid)); users[userIndex]["email"] = email; res.render('emailSender', { user: req.user.profile, email: userEmail }); } }); } else { res.render('emailSender', { user: req.user.profile, email: userEmail }); } } else { res.render('login'); } });
// Send an email. router.post('/sendMail', (req, res) => { const response = res; const templateData = { display_name: req.user.profile.displayName, email_address: req.user.profile.emails[0].address, actual_recipient: req.body.default_email }; prepForEmailMessage(req, (errMailBody, mailBody) => { if (errMailBody) renderError(errMailBody); graphHelper.postSendMail(req.user.accessToken, JSON.stringify(mailBody), (errSendMail) => { if (!errSendMail) { response.render('sendMail', templateData); } else { if (hasAccessTokenExpired(errSendMail)) { errSendMail.message += ' Expired token. Please sign out and sign in again.'; } renderError(errSendMail, response); } }); }); });
//Used to get the user's profile data; this is called by the client views whenever the user logs in and out so //the the client has up-to-date user data. router.get('/auth/user_profile', function getUserProfileData(req, res) { var userFriendlyId = ''; var fullName = ''; var email = ''; if (req.user && req.user.profile){ //Get a user friendly identifier to display by the client when the user logs in. First we attempt to show the first name, otherwise we use the display name. userFriendlyId = req.user.profile.firstName ? req.user.profile.firstName : req.user.profile.displayName; var firstName = req.user.profile.firstName ? req.user.profile.firstName : ''; var lastName = req.user.profile.lastName ? req.user.profile.lastName : ''; fullName = firstName + ' ' + lastName; email = req.user.profile.email; } res.send({ profile:{ isAuthenticated: req.isAuthenticated(), userFriendlyId: userFriendlyId, fullName: fullName, email: email } }); });
user.facebook.token = token; user.facebook.email = profile.emails[0].value; user.profile.pictureUrl = user.profile.pictureUrl || profile.picture; user.save(function(err) { if (err) newUser.facebook.email = profile.emails[0].value; newUser.profile.name = profile.displayName; newUser.profile.pictureUrl = profile.picture; user.facebook.token = token; user.facebook.email = profile.emails[0].value; user.profile.pictureUrl = user.profile.pictureUrl || profile.picture;
app.use(function(req, res, next) { // Set the authenticated user in the // template locals if (req.user) { res.locals.user = req.user.profile; } next(); });
// Authentication callback. // After we have an access token, get user data and load the sendMail page. router.get('/token', passport.authenticate('azuread-openidconnect', { failureRedirect: '/' }), (req, res) => { graphHelper.getUserData(req.user.accessToken, (err, user) => { if (!err) { req.user.profile.displayName = user.body.displayName; req.user.profile.emails = [{ address: user.body.mail || user.body.userPrincipalName }]; renderSendMail(req, res); } else { renderError(err, res); } }); });
//Used to get the user's profile data; this is called by the client views whenever the user logs in and out so //the the client has up-to-date user data. router.get('/auth/user_profile', function getUserProfileData(req, res) { var userFriendlyId = ''; var fullName = ''; var email = ''; if (req.user && req.user.profile){ //Get a user friendly identifier to display by the client when the user logs in. First we attempt to show the first name, otherwise we use the display name. userFriendlyId = req.user.profile.firstName ? req.user.profile.firstName : req.user.profile.displayName; var firstName = req.user.profile.firstName ? req.user.profile.firstName : ''; var lastName = req.user.profile.lastName ? req.user.profile.lastName : ''; fullName = firstName + ' ' + lastName; email = req.user.profile.email; } res.send({ profile:{ isAuthenticated: req.isAuthenticated(), userFriendlyId: userFriendlyId, fullName: fullName, email: email } }); });
// Send an email. router.post('/sendMail', (req, res) => { const response = res; const templateData = { display_name: req.user.profile.displayName, email_address: req.user.profile.emails[0].address, actual_recipient: req.body.default_email }; prepForEmailMessage(req, (errMailBody, mailBody) => { if (errMailBody) renderError(errMailBody); graphHelper.postSendMail(req.user.accessToken, JSON.stringify(mailBody), (errSendMail) => { if (!errSendMail) { response.render('sendMail', templateData); } else { if (hasAccessTokenExpired(errSendMail)) { errSendMail.message += ' Expired token. Please sign out and sign in again.'; } renderError(errSendMail, response); } }); }); });