@accounts/module-magic-link
Version:
Magic link module
29 lines (25 loc) • 964 B
text/typescript
import { AccountsMagicLink, RequestMagicLinkEmailErrors } from '@accounts/magic-link';
import { AccountsServer, AccountsJsError } from '@accounts/server';
import { type MutationResolvers } from '../models';
export const Mutation: MutationResolvers = {
requestMagicLinkEmail: async (_, { email }, ctx) => {
const { injector } = ctx;
const accountsServer = injector.get(AccountsServer);
const accountsMagicLink = injector.get(AccountsMagicLink);
try {
await accountsMagicLink.requestMagicLinkEmail(email);
} catch (error) {
// If ambiguousErrorMessages is true,
// to prevent user enumeration we fail silently in case there is no user attached to this email
if (
accountsServer.options.ambiguousErrorMessages &&
error instanceof AccountsJsError &&
error.code === RequestMagicLinkEmailErrors.UserNotFound
) {
return null;
}
throw error;
}
return null;
},
};