|
|
@@ -321,7 +321,7 @@ module.exports = function(crowi, app) {
|
|
|
passport.authenticate('saml')(req, res);
|
|
|
};
|
|
|
|
|
|
- const loginPassportSamlCallback = async(req, res, next) => {
|
|
|
+ const loginPassportSamlCallback = async(req, res) => {
|
|
|
const providerId = 'saml';
|
|
|
const strategyName = 'saml';
|
|
|
const attrMapId = config.crowi['security:passport-saml:attrMapId'];
|
|
|
@@ -329,7 +329,8 @@ module.exports = function(crowi, app) {
|
|
|
const attrMapMail = config.crowi['security:passport-saml:attrMapMail'];
|
|
|
const attrMapFirstName = config.crowi['security:passport-saml:attrMapFirstName'] || 'firstName';
|
|
|
const attrMapLastName = config.crowi['security:passport-saml:attrMapLastName'] || 'lastName';
|
|
|
- const response = await promisifiedPassportAuthentication(req, res, next, strategyName);
|
|
|
+
|
|
|
+ const response = await promisifiedPassportAuthentication(req, res, loginFailure, strategyName);
|
|
|
const userInfo = {
|
|
|
'id': response[attrMapId],
|
|
|
'username': response[attrMapUsername],
|
|
|
@@ -343,16 +344,19 @@ module.exports = function(crowi, app) {
|
|
|
userInfo['name'] = `${response[attrMapFirstName]} ${response[attrMapLastName]}`.trim();
|
|
|
}
|
|
|
|
|
|
- const externalAccount = await getOrCreateUser(req, res, next, userInfo, providerId);
|
|
|
+ const externalAccount = await getOrCreateUser(req, res, loginFailure, userInfo, providerId);
|
|
|
if (!externalAccount) {
|
|
|
- return loginFailure(req, res, next);
|
|
|
+ return loginFailure(req, res);
|
|
|
}
|
|
|
|
|
|
const user = await externalAccount.getPopulatedUser();
|
|
|
|
|
|
// login
|
|
|
req.logIn(user, err => {
|
|
|
- if (err) { return next(err) }
|
|
|
+ if (err != null) {
|
|
|
+ logger.error(err);
|
|
|
+ return loginFailure(req, res);
|
|
|
+ }
|
|
|
return loginSuccess(req, res, user);
|
|
|
});
|
|
|
};
|
|
|
@@ -368,13 +372,13 @@ module.exports = function(crowi, app) {
|
|
|
|
|
|
if (err) {
|
|
|
logger.error(`'${strategyName}' passport authentication error: `, err);
|
|
|
- req.flash('warningMessage', `Error occured in '${strategyName}' passport authentication`);
|
|
|
- return next(); // pass and the flash message is displayed when all of authentications are failed.
|
|
|
+ req.flash('warningMessage', `Error occured in '${strategyName}' passport authentication`); // pass and the flash message is displayed when all of authentications are failed.
|
|
|
+ return next(req, res);
|
|
|
}
|
|
|
|
|
|
// authentication failure
|
|
|
if (!response) {
|
|
|
- return next();
|
|
|
+ return next(req, res);
|
|
|
}
|
|
|
|
|
|
logger.debug('response', response);
|