@dreesq/serpent
Version:
An express wrapper for developing fast web applications
45 lines (38 loc) • 1.03 kB
JavaScript
const {config, getPlugins} = require('../index');
const {error, success} = require('../utils');
const {config: configPlugin} = getPlugins();
const {
USER_STATUS_ACTIVE,
TOKEN_TYPE_CONFIRM
} = require('../constants');
config({
name: 'confirmUser',
input: {
token: 'required|string|min:64'
},
enabled: configPlugin.get('plugins.auth.confirm')
})(
/**
* Confirm user account
* @param db
* @param input
* @param t
* @param crypto
* @returns {Promise<void>}
*/
async ({db, input, t, crypto}) => {
const {User, Token} = db;
const token = await Token.findOne({
token: await crypto.hash(input.token),
type: TOKEN_TYPE_CONFIRM
});
if (!token) {
return error(t('errors.invalidToken'));
}
await User.updateOne({_id: token.userId}, {
status: USER_STATUS_ACTIVE
});
await token.remove();
return success(t('messages.userConfirmed'));
}
);