feathers-authentication-management
Version:
Adds sign up verification, forgotten password reset, and other capabilities to local feathers-authentication
53 lines (48 loc) • 1.64 kB
text/typescript
import { checkContext, getItems, replaceItems } from 'feathers-hooks-common';
import type { HookContext } from '@feathersjs/feathers';
import type { User } from '../types';
/**
* Sanitize users. After-hook for '/users' service.
*/
export function removeVerification <H extends HookContext = HookContext> (
ifReturnTokens?: boolean
) {
return (context: H): H => {
checkContext(context, 'after');
// Retrieve the items from the hook
const items: User | User[] = getItems(context);
if (!items) return;
const isArray = Array.isArray(items);
const users = (isArray ? items : [items]);
users.forEach((user) => {
if (!('isVerified' in user) && context.method === 'create') {
/* eslint-disable no-console */
console.warn(
'Property isVerified not found in user properties. (removeVerification)'
);
console.warn(
"Have you added authManagement's properties to your model? (Refer to README)"
);
console.warn(
'Have you added the addVerification hook on users::create?'
);
/* eslint-enable */
}
if (context.params.provider && user) {
// noop if initiated by server
delete user.verifyExpires;
delete user.resetExpires;
delete user.verifyChanges;
if (!ifReturnTokens) {
delete user.verifyToken;
delete user.verifyShortToken;
delete user.resetToken;
delete user.resetShortToken;
}
}
});
// Replace the items within the hook
replaceItems(context, isArray ? users : users[0]);
return context;
};
}