Skip to content

Commit

Permalink
bug(socialAUth) fix social auth
Browse files Browse the repository at this point in the history
fix social auth so that it can redirect to a desired page and also fix body parser issues

[Starts #169039872]
  • Loading branch information
salviosage committed Oct 9, 2019
1 parent 58d762b commit e41b3be
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 52 deletions.
4 changes: 3 additions & 1 deletion src/app.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
import winston from 'winston';
import express from 'express';
import bodyParser from 'body-parser';
import logging from './helpers/logging';
import routes from './routes/index';
import './config/cloudinary.config';
import { mock } from './middlewares/validators/socialLogin-mock';


const app = express();
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));

if (process.env.NODE_ENV === 'test' || process.env.NODE_ENV === 'development') {
app.use(mock);
Expand Down
83 changes: 36 additions & 47 deletions src/controllers/social.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,56 +21,45 @@ class Social {
* @memberof Social
*/
static async login(req, res) {
let user;
let message;
let status = 200;
let registeredUser;
data = req.user;
const firstname = data.name ? data.name.givenName : data.displayName.split(' ')[0];
const lastname = data.name ? data.name.middleName || data.name.familyName : data.displayName.split(' ')[1];
const email = data.emails ? data.emails[0].value : '';
const username = `${firstname}.${lastname}`;
// check if user is in db
const tempUser = await User.findOne(email, username);
if (data.provider === 'twitter') {
registeredUser = await dbService.getStat({
firstname: lastname.toLowerCase(), lastname: firstname.toLowerCase()
}, 'user')[0] || tempUser;
} else {
registeredUser = tempUser;
}
if (registeredUser) {
user = registeredUser;
message = 'Logged in successfully';
} else {
const pass = randPass();
const password = Helper.hashPassword(pass);
status = 201;
const newUser = {
firstname, lastname, email, username, password
};
user = await User.addUser(newUser);
message = `Account created with password ${pass}, please change your password`;
try {
let user;
let registeredUser;
data = req.user;
const firstname = data.name ? data.name.givenName : data.displayName.split(' ')[0];
const lastname = data.name ? data.name.middleName || data.name.familyName : data.displayName.split(' ')[1];
const email = data.emails ? data.emails[0].value : '';
const username = `${firstname}.${lastname}`;
const tempUser = await User.findOne(email, username);
if (data.provider === 'twitter') {
message += ' and update your email address';
console.log('cccc', message);
registeredUser = await dbService.getStat({
firstname: lastname.toLowerCase(), lastname: firstname.toLowerCase()
}, 'user')[0] || tempUser;
} else {
registeredUser = tempUser;
}
if (registeredUser) {
user = registeredUser;
} else {
const pass = randPass();
const password = Helper.hashPassword(pass);
const newUser = {
firstname, lastname, email, username, password
};
user = await User.addUser(newUser);
}
const payload = {
id: user.id,
email,
role: user.role,
verified: user.verified
};
const token = Helper.generateToken(payload);
return res.redirect(`${process.env.FRONT_END_URL}/social-login?token=${token}`);
} catch (error) {
return res.redirect(`${process.env.FRONT_END_URL}/social-login`);
}
const payload = {
id: user.id,
email,
role: user.role,
verified: user.verified
};
const token = Helper.generateToken(payload);
return res.status(status).json({
message,
status,
token,
data: {
firstname, lastname, username, email
},
});

// check if user is in db
}
}

Expand Down
4 changes: 0 additions & 4 deletions src/routes/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import express from 'express';
import session from 'express-session';
import bodyParser from 'body-parser';
import cors from 'cors';
import dotenv from 'dotenv';
import passport from 'passport';
Expand All @@ -14,9 +13,6 @@ import { mock } from '../middlewares/validators/socialLogin-mock';
dotenv.config();

const router = express.Router();

router.use(bodyParser.json());
router.use(bodyParser.urlencoded({ extended: true }));
router.use(cors());
router.use(
session({
Expand Down

0 comments on commit e41b3be

Please sign in to comment.