feathers-authentication-management
Version:
Adds sign up verification, forgotten password reset, and other capabilities to local feathers-authentication
46 lines (45 loc) • 2.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getUserData = void 0;
const errors_1 = require("@feathersjs/errors");
const date_or_number_to_number_1 = require("./date-or-number-to-number");
function checkOneUser(users) {
if (users.length === 0) {
throw new errors_1.BadRequest('User not found.', { errors: { $className: 'badParams' } });
}
if (users.length !== 1) {
throw new errors_1.BadRequest('More than 1 user selected.', { errors: { $className: 'badParams' } });
}
return users[0];
}
function checkUserChecks(user, checks) {
checks = checks || [];
if (checks.includes('isNotVerified') &&
user.isVerified) {
throw new errors_1.BadRequest('User is already verified.', { errors: { $className: 'isNotVerified' } });
}
if (checks.includes('isNotVerifiedOrHasVerifyChanges') &&
user.isVerified &&
!Object.keys(user.verifyChanges || {}).length) {
throw new errors_1.BadRequest('User is already verified & not awaiting changes.', { errors: { $className: 'nothingToVerify' } });
}
if (checks.includes('isVerified') &&
!user.isVerified) {
throw new errors_1.BadRequest('User is not verified.', { errors: { $className: 'isVerified' } });
}
if (checks.includes('verifyNotExpired') &&
(0, date_or_number_to_number_1.dateOrNumberToNumber)(user.verifyExpires) < Date.now()) {
throw new errors_1.BadRequest('Verification token has expired.', { errors: { $className: 'verifyExpired' } });
}
if (checks.includes('resetNotExpired') &&
(0, date_or_number_to_number_1.dateOrNumberToNumber)(user.resetExpires) < Date.now()) {
throw new errors_1.BadRequest('Password reset token has expired.', { errors: { $className: 'resetExpired' } });
}
}
function getUserData(data, checks) {
const users = Array.isArray(data) ? data : data.data;
const user = checkOneUser(users);
checkUserChecks(user, checks);
return user;
}
exports.getUserData = getUserData;