diff --git a/src/app.js b/src/app.js index d7350af..5b48948 100644 --- a/src/app.js +++ b/src/app.js @@ -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); diff --git a/src/controllers/social.js b/src/controllers/social.js index 26c5e66..bf220ca 100644 --- a/src/controllers/social.js +++ b/src/controllers/social.js @@ -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 } } diff --git a/src/routes/index.js b/src/routes/index.js index 63cc803..b245728 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -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'; @@ -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({