Skip to content

Commit

Permalink
bug(requests): fix autofill on user requests
Browse files Browse the repository at this point in the history
[Finishes ]
  • Loading branch information
drayzii committed Nov 22, 2019
1 parent c5edd93 commit 1470212
Show file tree
Hide file tree
Showing 8 changed files with 56 additions and 2 deletions.
23 changes: 23 additions & 0 deletions src/controllers/userController.js
Original file line number Diff line number Diff line change
Expand Up @@ -447,5 +447,28 @@ class Users {
return next(error);
}
}

/**
* switchAutofill.
* @param {object} req details.
* @param {object} res details.
* @param {object} next nest task
* @returns {object}.
*/
async switchAutofill(req, res, next) {
try {
const { id, requestAutofill } = req.user;
const data = await userService.updateUser({ id }, { requestAutofill: !requestAutofill });
return Response.customResponse(
res,
200,
'Your request autofill preference has been successfully updated',
{ requestAutofill: data[1][0].requestAutofill }
);
} catch (error) {
return next(error);
}
}
}

export default new Users();
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
/* eslint-disable no-unused-vars */
export default {
up: (queryInterface, Sequelize) => queryInterface.addColumn('Users', 'requestAutofill', Sequelize.BOOLEAN),
down: (queryInterface, Sequelize) => queryInterface.removeColumn('Users', 'requestAutofill')
};
5 changes: 5 additions & 0 deletions src/database/models/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,11 @@ export default (sequelize, DataTypes) => {
type: DataTypes.BOOLEAN,
defaultValue: true,
allowNull: false
},
requestAutofill: {
type: DataTypes.BOOLEAN,
defaultValue: false,
allowNull: false
}
});

Expand Down
3 changes: 2 additions & 1 deletion src/middlewares/auth.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,10 @@ const verify = async (req, res, next) => {
if (result === null) return Response.authenticationError(res, 'User not logged In');
const { userEmail } = payload;
// checking for the updated userRole from the db not from the token
const { userRoles, emailAllowed } = await userService.findUser({ userEmail });
const { userRoles, emailAllowed, requestAutofill } = await userService.findUser({ userEmail });
payload.userRoles = userRoles;
payload.emailAllowed = emailAllowed;
payload.requestAutofill = requestAutofill;
req.user = payload;
next();
} catch (error) {
Expand Down
6 changes: 6 additions & 0 deletions src/routes/api/users.js
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,12 @@ router
.route('/email-preferences')
.patch(verify, Users.emailPreferences)
.all(method);

router
.route('/autofill-preference')
.patch(verify, Users.switchAutofill)
.all(method);

router
.route('/unsubscribe')
.patch(userValidator.validateUnsubscribe, Users.unsubscribe)
Expand Down
2 changes: 1 addition & 1 deletion src/services/userProfileService.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ class UserProfileService {
async getProfile(userId) {
try {
const profile = await Users.findOne({
attributes: ['firstName', 'lastName', 'userEmail', 'userRoles'],
attributes: ['firstName', 'lastName', 'userEmail', 'userRoles', 'requestAutofill'],
where: { id: userId },
include: [{ model: UserProfile, as: 'userProfile' }]
});
Expand Down
13 changes: 13 additions & 0 deletions src/test/user.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ const googleRedirect = '/api/v1/auth/google/redirect';
const facebookRedirect = '/api/v1/auth/facebook/redirect';
const signout = '/api/v1/auth/signout';
const emailPreferences = '/api/v1/auth/email-preferences';
const autofillPreference = '/api/v1/auth/autofill-preference';

chai.use(chaiHttp);

Expand Down Expand Up @@ -653,6 +654,18 @@ describe('Email Preference', () => {
done();
});
});
it('should update user autofill preference', (done) => {
chai
.request(server)
.patch(autofillPreference)
.set('Authorization', `Bearer ${token}`)
.end((_err, res) => {
if (_err) done(_err);
expect(res.status).to.eq(200);
expect(res.body.data.requestAutofill).to.eq(true);
done();
});
});
});

describe('Users Logout', () => {
Expand Down
1 change: 1 addition & 0 deletions src/utils/sessionManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ class SessionManager {
lastName: data.lastName,
accountVerified: data.accountVerified,
emailAllowed: data.emailAllowed,
requestAutofill: data.requestAutofill,
userRoles: data.userRoles
},
data.secret || process.env.TOKEN,
Expand Down

0 comments on commit 1470212

Please sign in to comment.