|
|
@@ -17,6 +17,33 @@ module.exports = function(crowi, app) {
|
|
|
|
|
|
const ApiResponse = require('../util/apiResponse');
|
|
|
|
|
|
+ const promisifiedPassportAuthentication = (strategyName, req, res) => {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ passport.authenticate(strategyName, (err, response, info) => {
|
|
|
+ if (res.headersSent) { // dirty hack -- 2017.09.25
|
|
|
+ return; // cz: somehow passport.authenticate called twice when ECONNREFUSED error occurred
|
|
|
+ }
|
|
|
+
|
|
|
+ logger.debug(`--- authenticate with ${strategyName} strategy ---`);
|
|
|
+
|
|
|
+ if (err) {
|
|
|
+ logger.error(`'${strategyName}' passport authentication error: `, err);
|
|
|
+ reject(err);
|
|
|
+ }
|
|
|
+
|
|
|
+ logger.debug('response', response);
|
|
|
+ logger.debug('info', info);
|
|
|
+
|
|
|
+ // authentication failure
|
|
|
+ if (!response) {
|
|
|
+ reject(response);
|
|
|
+ }
|
|
|
+
|
|
|
+ resolve(response);
|
|
|
+ })(req, res);
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
/**
|
|
|
* success handler
|
|
|
* @param {*} req
|
|
|
@@ -562,33 +589,6 @@ module.exports = function(crowi, app) {
|
|
|
});
|
|
|
};
|
|
|
|
|
|
- const promisifiedPassportAuthentication = (strategyName, req, res) => {
|
|
|
- return new Promise((resolve, reject) => {
|
|
|
- passport.authenticate(strategyName, (err, response, info) => {
|
|
|
- if (res.headersSent) { // dirty hack -- 2017.09.25
|
|
|
- return; // cz: somehow passport.authenticate called twice when ECONNREFUSED error occurred
|
|
|
- }
|
|
|
-
|
|
|
- logger.debug(`--- authenticate with ${strategyName} strategy ---`);
|
|
|
-
|
|
|
- if (err) {
|
|
|
- logger.error(`'${strategyName}' passport authentication error: `, err);
|
|
|
- reject(err);
|
|
|
- }
|
|
|
-
|
|
|
- logger.debug('response', response);
|
|
|
- logger.debug('info', info);
|
|
|
-
|
|
|
- // authentication failure
|
|
|
- if (!response) {
|
|
|
- reject(response);
|
|
|
- }
|
|
|
-
|
|
|
- resolve(response);
|
|
|
- })(req, res);
|
|
|
- });
|
|
|
- };
|
|
|
-
|
|
|
const getOrCreateUser = async(req, res, userInfo, providerId) => {
|
|
|
// get option
|
|
|
const isSameUsernameTreatedAsIdenticalUser = crowi.passportService.isSameUsernameTreatedAsIdenticalUser(providerId);
|