|
|
@@ -137,6 +137,7 @@ module.exports = function(crowi, app) {
|
|
|
var email = registerForm.email;
|
|
|
var password = registerForm.password;
|
|
|
var googleId = registerForm.googleId || null;
|
|
|
+ var googleImage = registerForm.googleImage || null;
|
|
|
|
|
|
// email と username の unique チェックする
|
|
|
User.isRegisterable(email, username, function (isRegisterable, errOn) {
|
|
|
@@ -157,14 +158,14 @@ module.exports = function(crowi, app) {
|
|
|
|
|
|
}
|
|
|
if (isError) {
|
|
|
- return res.render('login', {
|
|
|
- });
|
|
|
+ debug('isError user register error', errOn);
|
|
|
+ return res.redirect('/register');
|
|
|
}
|
|
|
|
|
|
User.createUserByEmailAndPassword(name, username, email, password, function(err, userData) {
|
|
|
if (err) {
|
|
|
req.flash('registerWarningMessage', 'ユーザー登録に失敗しました。');
|
|
|
- return res.redirect('/login?register=1');
|
|
|
+ return res.redirect('/register');
|
|
|
} else {
|
|
|
|
|
|
// 作成後、承認が必要なモードなら、管理者に通知する
|
|
|
@@ -204,24 +205,57 @@ module.exports = function(crowi, app) {
|
|
|
}
|
|
|
return loginSuccess(req, res, userData);
|
|
|
});
|
|
|
+
|
|
|
+ if (googleImage) {
|
|
|
+ var axios = require('axios');
|
|
|
+ var fileUploader = require('../util/fileUploader')(crowi, app);
|
|
|
+ var filePath = User.createUserPictureFilePath(
|
|
|
+ userData,
|
|
|
+ googleImage.replace(/^.+\/(.+\..+)$/, '$1')
|
|
|
+ );
|
|
|
+
|
|
|
+ axios.get(googleImage)
|
|
|
+ .then(function(response) {
|
|
|
+ var type = response.headers['content-type'];
|
|
|
+ var fileStream = response.data;
|
|
|
+
|
|
|
+ fileUploader.uploadFile(filePath, type, fileStream, {})
|
|
|
+ .then(function(data) {
|
|
|
+ var imageUrl = fileUploader.generateUrl(filePath);
|
|
|
+ debug('user picture uploaded', imageUrl);
|
|
|
+ userData.updateImage(imageUrl, function(err, data) {
|
|
|
+ if (err) {
|
|
|
+ debug('Error on update user image', err);
|
|
|
+ }
|
|
|
+ // DONE
|
|
|
+ });
|
|
|
+ }).catch(function (err) { // ignore
|
|
|
+ debug('Upload error', err);
|
|
|
+ });
|
|
|
+ }).catch(function() { // ignore
|
|
|
+ });
|
|
|
+ }
|
|
|
} else {
|
|
|
return loginSuccess(req, res, userData);
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
- } else { // method GET
|
|
|
+ } else { // method GET of form is not valid
|
|
|
+ debug('session is', req.session);
|
|
|
// google callback を受ける可能性もある
|
|
|
var code = req.session.googleAuthCode || null;
|
|
|
var googleId = req.session.googleId || null;
|
|
|
var googleEmail = req.session.googleEmail || null;
|
|
|
+ var googleName = req.session.googleName || null;
|
|
|
+ var googleImage = req.session.googleImage || null;
|
|
|
|
|
|
debug('register. if code', code);
|
|
|
// callback 経由で reigster にアクセスしてきた時最初だけこの if に入る
|
|
|
// code から email などを取得したらそれを session にいれて code は消去
|
|
|
if (code) {
|
|
|
googleAuth.handleCallback(req, function(err, tokenInfo) {
|
|
|
- debug('tokenInfo', tokenInfo);
|
|
|
+ debug('tokenInfo on register GET', tokenInfo);
|
|
|
req.session.googleAuthCode = null;
|
|
|
|
|
|
if (err) {
|
|
|
@@ -231,21 +265,17 @@ module.exports = function(crowi, app) {
|
|
|
|
|
|
req.session.googleId = googleId = tokenInfo.user_id;
|
|
|
req.session.googleEmail = googleEmail = tokenInfo.email;
|
|
|
+ req.session.googleName = googleName = tokenInfo.name;
|
|
|
+ req.session.googleImage = googleImage = tokenInfo.picture;
|
|
|
|
|
|
if (!User.isEmailValid(googleEmail)) {
|
|
|
req.flash('registerWarningMessage', 'このメールアドレスのGoogleアカウントはコネクトできません。');
|
|
|
return res.redirect('/login?register=1');
|
|
|
}
|
|
|
- return res.render('login', {
|
|
|
- googleId: googleId,
|
|
|
- googleEmail: googleEmail,
|
|
|
- });
|
|
|
+ return res.render('login', { googleId, googleEmail, googleName, googleImage, });
|
|
|
});
|
|
|
} else {
|
|
|
- return res.render('login', {
|
|
|
- googleId: googleId,
|
|
|
- googleEmail: googleEmail,
|
|
|
- });
|
|
|
+ return res.render('login', { googleId, googleEmail, googleName, googleImage, });
|
|
|
}
|
|
|
}
|
|
|
};
|