|
@@ -56,7 +56,7 @@ const lib = {
|
|
});
|
|
});
|
|
|
|
|
|
function redirectOnErr (res, err){
|
|
function redirectOnErr (res, err){
|
|
- return res.redirect(config.get('domain') + '/?err=' + encodeURIComponent('err'));
|
|
|
|
|
|
+ return res.redirect(`http://${config.get('domain')}/?err=${encodeURIComponent(err)}`);
|
|
}
|
|
}
|
|
|
|
|
|
app.get('/auth/github/authorize/callback', (req, res) => {
|
|
app.get('/auth/github/authorize/callback', (req, res) => {
|
|
@@ -66,30 +66,30 @@ const lib = {
|
|
url: `https://api.github.com/user?access_token=${access_token}`,
|
|
url: `https://api.github.com/user?access_token=${access_token}`,
|
|
headers: { 'User-Agent': 'request' }
|
|
headers: { 'User-Agent': 'request' }
|
|
}, (err, httpResponse, body) => {
|
|
}, (err, httpResponse, body) => {
|
|
- if (err) return redirectOnErr(res, 'err');
|
|
|
|
|
|
+ if (err) return redirectOnErr(res, err.message);
|
|
body = JSON.parse(body);
|
|
body = JSON.parse(body);
|
|
db.models.user.findOne({'services.github.id': body.id}, (err, user) => {
|
|
db.models.user.findOne({'services.github.id': body.id}, (err, user) => {
|
|
if (err) return redirectOnErr(res, 'err');
|
|
if (err) return redirectOnErr(res, 'err');
|
|
if (user) {
|
|
if (user) {
|
|
user.services.github.access_token = access_token;
|
|
user.services.github.access_token = access_token;
|
|
user.save(err => {
|
|
user.save(err => {
|
|
- if (err) return redirectOnErr(res, 'err');
|
|
|
|
|
|
+ if (err) return redirectOnErr(res, err.message);
|
|
let sessionId = utils.guid();
|
|
let sessionId = utils.guid();
|
|
cache.hset('sessions', sessionId, cache.schemas.session(sessionId, user._id), err => {
|
|
cache.hset('sessions', sessionId, cache.schemas.session(sessionId, user._id), err => {
|
|
- if (err) return redirectOnErr(res, 'err');
|
|
|
|
|
|
+ if (err) return redirectOnErr(res, err.message);
|
|
res.cookie('SID', sessionId);
|
|
res.cookie('SID', sessionId);
|
|
res.redirect(`http://${config.get('domain')}/`);
|
|
res.redirect(`http://${config.get('domain')}/`);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
} else {
|
|
} else {
|
|
db.models.user.findOne({ username: new RegExp(`^${body.login}$`, 'i') }, (err, user) => {
|
|
db.models.user.findOne({ username: new RegExp(`^${body.login}$`, 'i') }, (err, user) => {
|
|
- if (err) return redirectOnErr(res, 'err');
|
|
|
|
- if (user) return redirectOnErr(res, 'err');
|
|
|
|
|
|
+ if (err) return redirectOnErr(res, err.message);
|
|
|
|
+ if (user) return redirectOnErr(res, 'An account with that username already exists.');
|
|
else request.get({
|
|
else request.get({
|
|
url: `https://api.github.com/user/emails?access_token=${access_token}`,
|
|
url: `https://api.github.com/user/emails?access_token=${access_token}`,
|
|
headers: {'User-Agent': 'request'}
|
|
headers: {'User-Agent': 'request'}
|
|
}, (err, httpResponse, body2) => {
|
|
}, (err, httpResponse, body2) => {
|
|
- if (err) return redirectOnErr(res, 'err');
|
|
|
|
|
|
+ if (err) return redirectOnErr(res, err.message);
|
|
body2 = JSON.parse(body2);
|
|
body2 = JSON.parse(body2);
|
|
let address;
|
|
let address;
|
|
if (!Array.isArray(body2)) return redirectOnErr(res, body2.message);
|
|
if (!Array.isArray(body2)) return redirectOnErr(res, body2.message);
|
|
@@ -97,8 +97,8 @@ const lib = {
|
|
if (email.primary) address = email.email.toLowerCase();
|
|
if (email.primary) address = email.email.toLowerCase();
|
|
});
|
|
});
|
|
db.models.user.findOne({'email.address': address}, (err, user) => {
|
|
db.models.user.findOne({'email.address': address}, (err, user) => {
|
|
- if (err) return redirectOnErr(res, 'err');
|
|
|
|
- if (user) return redirectOnErr(res, 'err');
|
|
|
|
|
|
+ if (err) return redirectOnErr(res, err.message);
|
|
|
|
+ if (user) return redirectOnErr(res, 'An account with that email address already exists.');
|
|
else db.models.user.create({
|
|
else db.models.user.create({
|
|
username: body.login,
|
|
username: body.login,
|
|
email: {
|
|
email: {
|
|
@@ -109,11 +109,11 @@ const lib = {
|
|
github: {id: body.id, access_token}
|
|
github: {id: body.id, access_token}
|
|
}
|
|
}
|
|
}, (err, user) => {
|
|
}, (err, user) => {
|
|
- if (err) return redirectOnErr(res, 'err');
|
|
|
|
|
|
+ if (err) return redirectOnErr(res, err.message);
|
|
//TODO Send verification email
|
|
//TODO Send verification email
|
|
let sessionId = utils.guid();
|
|
let sessionId = utils.guid();
|
|
cache.hset('sessions', sessionId, cache.schemas.session(sessionId, user._id), err => {
|
|
cache.hset('sessions', sessionId, cache.schemas.session(sessionId, user._id), err => {
|
|
- if (err) return redirectOnErr(res, 'err');
|
|
|
|
|
|
+ if (err) return redirectOnErr(res, err.message);
|
|
res.cookie('SID', sessionId);
|
|
res.cookie('SID', sessionId);
|
|
res.redirect(`http://${config.get('domain')}/`);
|
|
res.redirect(`http://${config.get('domain')}/`);
|
|
});
|
|
});
|