Skip to content
This repository has been archived by the owner on May 9, 2021. It is now read-only.

Commit

Permalink
feature(UsersController): create social login controller and route
Browse files Browse the repository at this point in the history
- create social login route
- create create social login controller
- create social login validation
- add test for social login
- add article image to articles model and migration

[Finishes #162633744]
  • Loading branch information
KvNGCzA committed Dec 13, 2018
1 parent b26a673 commit 8bb0763
Show file tree
Hide file tree
Showing 14 changed files with 242 additions and 403 deletions.
27 changes: 0 additions & 27 deletions server/config/facebookPassportRoutes.js

This file was deleted.

30 changes: 0 additions & 30 deletions server/config/googlePassportRoutes.js

This file was deleted.

42 changes: 0 additions & 42 deletions server/config/twitterPassportRoutes.js

This file was deleted.

2 changes: 2 additions & 0 deletions server/controllers/ArticleController.js
Original file line number Diff line number Diff line change
Expand Up @@ -288,6 +288,7 @@ class ArticleController {
description,
body,
tags,
articleImage
} = req.body;

let { categoryName, status } = req.body;
Expand Down Expand Up @@ -318,6 +319,7 @@ class ArticleController {
description,
body,
readTime: stats.time,
articleImage,
status,
userId,
categoryId: category.id
Expand Down
114 changes: 79 additions & 35 deletions server/controllers/UsersController.js
Original file line number Diff line number Diff line change
Expand Up @@ -93,8 +93,7 @@ class UsersController {

res.status(200).json({
status: 'success',
message: 'email login link sent successfully',
token
message: 'email login link sent successfully'
});
})
.catch(err => res.status(500).json({
Expand Down Expand Up @@ -408,39 +407,6 @@ class UsersController {
});
}

/**
* @description - This method returns a token and
* user object for social login
* @param {object} req The express request object
* @param {object} res The express response object
* @param {object} next The express next object
* @returns {void}
*/
static socialEnd(req, res) {
const {
id,
fullName,
email,
created
} = req.user;
const user = {
id,
fullName,
email
};
user.token = createToken(id, '90d');
if (created) {
return res.status(201).json({
message: 'New account created successfully',
user
});
}
return res.status(200).json({
message: 'Log in successful',
user
});
}

/**
* @description - This method deactivates a user account
* @param {object} req The express request object
Expand Down Expand Up @@ -587,6 +553,84 @@ class UsersController {
});
}
}

/**
* @description - This method returns a token and
* user object for social login
* @param {object} req The express request object
* @param {object} res The express response object
* @param {object} next The express next object
* @returns {void}
*/
static async socialSignup(req, res, next) {
const {
socialType,
socialId,
email,
fullName,
avatarUrl
} = req.body;

let checkExisting;
try {
checkExisting = await User.find({
where: {
[Op.or]: {
email, [`${socialType}Id`]: socialId
}
}
});
} catch (error) {
return next(error);
}

if (checkExisting) {
const token = createToken(checkExisting.id);
const {
id,
roleId,
} = checkExisting;
return res.status(200).json({
message: 'User successfully logged in!',
user: {
id,
fullName,
email,
roleId,
token
}
});
}

let createUser;
try {
createUser = await User.create({
fullName,
email,
avatarUrl,
[`${socialType}Id`]: socialId,
confirmEmail: true
});
} catch (error) {
return next(error);
}

const token = createToken(createUser.id);
const {
id,
roleId,
} = createUser;
return res.status(201).json({
message: 'New user successfully created!',
user: {
id,
fullName,
email,
roleId,
token
}
});
}
}

export default UsersController;
50 changes: 0 additions & 50 deletions server/helpers/facebookCallback.js

This file was deleted.

45 changes: 0 additions & 45 deletions server/helpers/googleCallback.js

This file was deleted.

48 changes: 0 additions & 48 deletions server/helpers/twitterCallback.js

This file was deleted.

Loading

0 comments on commit 8bb0763

Please sign in to comment.