Przeglądaj źródła

Fixed GitHub logging in/registering error message.

KrisVos130 8 lat temu
rodzic
commit
04ab5179ef
2 zmienionych plików z 14 dodań i 11 usunięć
  1. 11 11
      backend/logic/app.js
  2. 3 0
      frontend/App.vue

+ 11 - 11
backend/logic/app.js

@@ -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')}/`);
 												});
 												});

+ 3 - 0
frontend/App.vue

@@ -80,6 +80,9 @@
 			lofig.get('serverDomain', res => {
 			lofig.get('serverDomain', res => {
 				_this.serverDomain = res;
 				_this.serverDomain = res;
 			});
 			});
+			if (_this.$route.query.err) {
+				Toast.methods.addToast(_this.$route.query.err, 20000);
+			}
 		},
 		},
 		events: {
 		events: {
 			'register': function () {
 			'register': function () {