Skip to content

Commit

Permalink
reset password
Browse files Browse the repository at this point in the history
  • Loading branch information
El-khamisi committed Jun 5, 2022
1 parent 58f1ea0 commit 27bd699
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 16 deletions.
3 changes: 1 addition & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
/node_modules
.env
/tmp
gmail.js
/tmp
1 change: 0 additions & 1 deletion src/index.routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ const role = require('./services/role/role.routes');
const profile = require('./services/user/profile.routes');
const plans = require('./services/plans/plans.routes');


const { initPlans } = require('./services/plans/plans.model');

module.exports = async (app) => {
Expand Down
41 changes: 34 additions & 7 deletions src/services/login/login.controller.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
const User = require('../user/user.model');
const bcrypt = require('bcrypt');
const { successfulRes, failedRes } = require('../../utils/response');
const {premiumPlan, freePlan} = require('../../config/membership');
const {plansNames} = require('../plans/plans.model');
const { premiumPlan, freePlan } = require('../../config/membership');
const { plansNames } = require('../plans/plans.model');
const { setS_id } = require('../../utils/cookie');
const { default: mongoose } = require('mongoose');
const MongoStore = require('connect-mongo');

exports.regUser = async (req, res) => {
try {
Expand Down Expand Up @@ -55,7 +57,7 @@ exports.logUser = async (req, res) => {
} else {
const token = logged.generateToken(req, res);
const date = new Date().toISOString().split('T')[0];
if(logged.membership==premiumPlan && date > logged.end_of_membership){
if (logged.membership == premiumPlan && date > logged.end_of_membership) {
logged.membership = freePlan;
logged.memberplan = plansNames.None;
await logged.save();
Expand All @@ -69,20 +71,45 @@ exports.logUser = async (req, res) => {
user.inprogress = undefined;
user.quizzes = undefined;

setS_id(req, res);
setS_id(req, res);
return successfulRes(res, 200, { user: user, token });
}
} catch (e) {
return failedRes(res, 500, e);
}
};

exports.logout = (req, res) => {
exports.logout = async (req, res) => {
try {
req.session.destroy(() => {});
const session = MongoStore.create({ client: mongoose.connection.getClient() });
session.destroy(req.sessionID);

res.clearCookie('authorization');
successfulRes(res, 200, 'You have been logged out successfully');
return successfulRes(res, 200, 'You have been logged out successfully');
} catch (err) {
failedRes(res, 500, 'Invalid logout operation');
return failedRes(res, 500, 'Invalid logout operation');
}
};

exports.resetPassword = async (req, res) => {
const {current_password, new_password} = req.body;
const user_id = res.locals.user.id;
try {
const user = await User.findById(user_id).exec();
if (!user) {
return failedRes(res, 400, new Error('User not found'));
}
const matched = bcrypt.compareSync(current_password, user.password);
if (!matched) {
return failedRes(res, 400, new Error('Current password is invalid'));
}else{
user.password = bcrypt.hashSync(new_password, 10);
await user.save();
return successfulRes(res, 200, 'Password has been changed successfully');
}

}catch(e){
return failedRes(res, 500, e);
}
};
5 changes: 3 additions & 2 deletions src/services/login/login.routes.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
const router = require('express').Router();
const { logUser, regUser, logout } = require('./login.controller');
const { logUser, regUser, logout, resetPassword } = require('./login.controller');
const {authN} = require('../../middelwares/authN');

router.post('/login', logUser);
router.post('/signup', regUser);

router.post('/reset-password', authN, resetPassword);
router.post('/logout', logout);

module.exports = router;
2 changes: 1 addition & 1 deletion src/services/reading/reading.controllers.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ exports.getReading = async (req, res) => {
try {
const _id = req.params.id;
const user = req.session.user;
console.log(req.session);

const doc = await Reading.findById(_id).populate('quizzes').sort('-createdAt');

if (doc && doc.membership == premiumPlan && user.membership == freePlan) {
Expand Down
1 change: 0 additions & 1 deletion src/services/user/profile.routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ const { payment, paymentcb } = require('./payment.controller');
const { submitQuiz } = require('../quiz/quiz.controllers');

//Profile

router.get('/myprofile', authN, profileView);
router.put('/myprofile', authN, imageUpload.single('photo'), profileUpdate);
router.delete('/myprofile', authN, profileDelete);
Expand Down
2 changes: 0 additions & 2 deletions src/utils/cookie.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,7 @@
const crypto = require('crypto');
const { TOKENKEY, NODE_ENV } = require('../config/env');
var decode = decodeURIComponent;
var encode = encodeURIComponent;
var fieldContentRegExp = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/;
var pairSplitRegExp = /; */;

serialize = function (name, val, options) {
var opt = options || {};
Expand Down

0 comments on commit 27bd699

Please sign in to comment.