diff --git a/packages/auth-core/src/consts.ts b/packages/auth-core/src/consts.ts index e7098a9df..403395961 100644 --- a/packages/auth-core/src/consts.ts +++ b/packages/auth-core/src/consts.ts @@ -13,3 +13,4 @@ export type BuiltinOAuthProviderNames = export const emailPasswordProviderName = "builtin::local_emailpassword"; export const webAuthnProviderName = "builtin::local_webauthn"; +export const magicLinkProviderName = "builtin::local_magic_link"; diff --git a/packages/auth-core/src/core.ts b/packages/auth-core/src/core.ts index 69d8b158c..e042d14e1 100644 --- a/packages/auth-core/src/core.ts +++ b/packages/auth-core/src/core.ts @@ -7,6 +7,7 @@ import { type BuiltinOAuthProviderNames, emailPasswordProviderName, webAuthnProviderName, + magicLinkProviderName, } from "./consts"; import { requestGET, requestPOST } from "./utils"; import type { @@ -172,6 +173,36 @@ export class Auth { return this.getToken(code, verifier); } + async signupWithMagicLink( + email: string, + callbackUrl: string, + redirectOnFailure: string, + challenge: string + ): Promise { + await this._post("magic-link/register", { + provider: magicLinkProviderName, + challenge, + email, + callback_url: callbackUrl, + redirect_on_failure: redirectOnFailure, + }); + } + + async signinWithMagicLink( + email: string, + callbackUrl: string, + redirectOnFailure: string, + challenge: string + ): Promise { + await this._post("magic-link/email", { + provider: magicLinkProviderName, + challenge, + email, + callback_url: callbackUrl, + redirect_on_failure: redirectOnFailure, + }); + } + async resendVerificationEmail(verificationToken: string) { await this._post("resend-verification-email", { provider: emailPasswordProviderName,