ngx-better-auth 1.6.1 → 1.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -1
- package/fesm2022/ngx-better-auth.mjs +39 -2
- package/fesm2022/ngx-better-auth.mjs.map +1 -1
- package/index.d.ts +12 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -242,11 +242,13 @@ This library ships with guards to quickly set up route protection.
|
|
|
242
242
|
- `redirectUnauthorizedTo(['/login'])` → redirect if not logged in
|
|
243
243
|
- `redirectLoggedInTo(['/'])` → redirect if already logged in
|
|
244
244
|
- `hasRole(['admin'], ['/unauthorized'])` → restrict access by role and redirect if not authorized
|
|
245
|
+
- `hasOrganizationRole(['owner', 'admin'], ['/unauthorized'])` → restrict access by active organization role
|
|
246
|
+
- `hasActiveOrganization(['/select-organization'])` → require an active organization member
|
|
245
247
|
|
|
246
248
|
### Usage in routes
|
|
247
249
|
```ts
|
|
248
250
|
import { Routes } from '@angular/router'
|
|
249
|
-
import { canActivate, redirectLoggedInTo, redirectUnauthorizedTo, hasRole } from 'ngx-better-auth'
|
|
251
|
+
import { canActivate, redirectLoggedInTo, redirectUnauthorizedTo, hasRole, hasOrganizationRole, hasActiveOrganization } from 'ngx-better-auth'
|
|
250
252
|
|
|
251
253
|
export const routes: Routes = [
|
|
252
254
|
{
|
|
@@ -259,6 +261,16 @@ export const routes: Routes = [
|
|
|
259
261
|
component: AdminComponent,
|
|
260
262
|
...canActivate(hasRole(['admin'], ['/unauthorized']))
|
|
261
263
|
},
|
|
264
|
+
{
|
|
265
|
+
path: 'organization',
|
|
266
|
+
component: OrganizationComponent,
|
|
267
|
+
...canActivate(hasOrganizationRole(['owner', 'admin'], ['/unauthorized']))
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
path: 'organization/select',
|
|
271
|
+
component: SelectOrganizationComponent,
|
|
272
|
+
...canActivate(hasActiveOrganization(['/select-organization']))
|
|
273
|
+
},
|
|
262
274
|
{
|
|
263
275
|
path: 'login',
|
|
264
276
|
component: LoginComponent,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, Injector, resource, Injectable, signal, computed, InjectionToken, makeEnvironmentProviders } from '@angular/core';
|
|
3
|
-
import { defer, map, Observable, filter, shareReplay, switchMap, first, of, timer
|
|
3
|
+
import { defer, map, Observable, filter, shareReplay, switchMap, first, catchError, of, timer } from 'rxjs';
|
|
4
4
|
import { createAuthClient } from 'better-auth/client';
|
|
5
5
|
import { HttpClient } from '@angular/common/http';
|
|
6
6
|
import { Router } from '@angular/router';
|
|
@@ -656,6 +656,12 @@ const normalizeRoles = (role) => {
|
|
|
656
656
|
}
|
|
657
657
|
return [];
|
|
658
658
|
};
|
|
659
|
+
const redirectResult = (router, redirectTo) => {
|
|
660
|
+
if (Array.isArray(redirectTo)) {
|
|
661
|
+
return router.createUrlTree(redirectTo);
|
|
662
|
+
}
|
|
663
|
+
return redirectTo;
|
|
664
|
+
};
|
|
659
665
|
/**
|
|
660
666
|
* Redirects unauthorized users to the specified commands (route).
|
|
661
667
|
*/
|
|
@@ -696,6 +702,37 @@ function hasRole(requiredRoles, redirectTo = ['/unauthorized']) {
|
|
|
696
702
|
}));
|
|
697
703
|
};
|
|
698
704
|
}
|
|
705
|
+
/**
|
|
706
|
+
* Allows access only when an active organization member exists.
|
|
707
|
+
* Redirects users without an active organization to the specified commands or UrlTree.
|
|
708
|
+
*/
|
|
709
|
+
function hasActiveOrganization(redirectTo = ['/unauthorized']) {
|
|
710
|
+
return () => {
|
|
711
|
+
const organization = inject(OrganizationService);
|
|
712
|
+
const router = inject(Router);
|
|
713
|
+
return organization.getActiveMember().pipe(map((member) => (member ? true : redirectResult(router, redirectTo))), catchError(() => of(redirectResult(router, redirectTo))));
|
|
714
|
+
};
|
|
715
|
+
}
|
|
716
|
+
/**
|
|
717
|
+
* Allows access only to active organization members with at least one of the specified roles.
|
|
718
|
+
* Redirects users without an active organization, active member, or matching role.
|
|
719
|
+
*/
|
|
720
|
+
function hasOrganizationRole(requiredRoles, redirectTo = ['/unauthorized']) {
|
|
721
|
+
return () => {
|
|
722
|
+
const organization = inject(OrganizationService);
|
|
723
|
+
const router = inject(Router);
|
|
724
|
+
return organization.getActiveMember().pipe(map((member) => {
|
|
725
|
+
if (!member) {
|
|
726
|
+
return redirectResult(router, redirectTo);
|
|
727
|
+
}
|
|
728
|
+
const roles = normalizeRoles(member.role);
|
|
729
|
+
if (roles.some((role) => requiredRoles.includes(role))) {
|
|
730
|
+
return true;
|
|
731
|
+
}
|
|
732
|
+
return redirectResult(router, redirectTo);
|
|
733
|
+
}), catchError(() => of(redirectResult(router, redirectTo))));
|
|
734
|
+
};
|
|
735
|
+
}
|
|
699
736
|
|
|
700
737
|
function canActivate(pipe) {
|
|
701
738
|
return {
|
|
@@ -734,5 +771,5 @@ function usernameAvailableValidator(usernameService, initialUsername) {
|
|
|
734
771
|
* Generated bundle index. Do not edit.
|
|
735
772
|
*/
|
|
736
773
|
|
|
737
|
-
export { AccountService, AdminService, AuthService, BETTER_AUTH_CONFIG_TOKEN, EmailOtpService, GenericOauthService, MagicLinkService, OneTapService, OrganizationService, PasskeyService, SessionService, SiweService, TwoFactorService, UsernameService, canActivate, hasRole, provideBetterAuth, redirectLoggedInTo, redirectUnauthorizedTo, usernameAvailableValidator };
|
|
774
|
+
export { AccountService, AdminService, AuthService, BETTER_AUTH_CONFIG_TOKEN, EmailOtpService, GenericOauthService, MagicLinkService, OneTapService, OrganizationService, PasskeyService, SessionService, SiweService, TwoFactorService, UsernameService, canActivate, hasActiveOrganization, hasOrganizationRole, hasRole, provideBetterAuth, redirectLoggedInTo, redirectUnauthorizedTo, usernameAvailableValidator };
|
|
738
775
|
//# sourceMappingURL=ngx-better-auth.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-better-auth.mjs","sources":["../../../src/lib/services/main.service.ts","../../../src/lib/services/auth.service.ts","../../../src/lib/services/session.service.ts","../../../src/lib/services/account.service.ts","../../../src/lib/utils/validate-plugin.ts","../../../src/lib/services/plugins/two-factor.service.ts","../../../src/lib/services/plugins/passkey.service.ts","../../../src/lib/services/plugins/generic-oauth.service.ts","../../../src/lib/services/plugins/email-otp.service.ts","../../../src/lib/services/plugins/one-tap.service.ts","../../../src/lib/services/plugins/magic-link.service.ts","../../../src/lib/utils/email.util.ts","../../../src/lib/services/plugins/username.service.ts","../../../src/lib/services/plugins/admin.service.ts","../../../src/lib/services/plugins/organization.service.ts","../../../src/lib/services/plugins/siwe.service.ts","../../../src/lib/providers.ts","../../../src/lib/guards/auth-guard.utils.ts","../../../src/lib/guards/auth-guard.factory.ts","../../../src/lib/validators/username-available.validators.ts","../../../src/ngx-better-auth.ts"],"sourcesContent":["import { inject, Injectable, Injector, resource, type ResourceRef } from '@angular/core'\nimport { BETTER_AUTH_CONFIG_TOKEN } from '../providers'\nimport { BetterFetchError, createAuthClient } from 'better-auth/client'\nimport { defer, map, type Observable } from 'rxjs'\n\ntype BetterAuthResponse<T> = { data: T; error: BetterFetchError }\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MainService {\n private readonly config = inject(BETTER_AUTH_CONFIG_TOKEN)\n private readonly injector = inject(Injector)\n\n readonly authClient: any = createAuthClient({\n ...this.config,\n })\n\n readonly url = `${this.config.baseURL}${this.config.basePath || '/api/auth'}`\n\n mapData<T>(data: { data: T; error: BetterFetchError }): T {\n if (data.error) {\n throw data.error\n }\n return data.data\n }\n\n read<T>(loader: () => Promise<BetterAuthResponse<T>>): Observable<T> {\n return defer(loader).pipe(map((data) => this.mapData<T>(data)))\n }\n\n readResource<T>(loader: () => Promise<BetterAuthResponse<T>>): ResourceRef<T | undefined> {\n return resource({\n injector: this.injector,\n loader: async () => this.mapData<T>(await loader()),\n })\n }\n\n readResourceWithParams<T, R>(\n params: () => R,\n loader: (params: R) => Promise<BetterAuthResponse<T>>,\n ): ResourceRef<T | undefined> {\n return resource({\n injector: this.injector,\n params,\n loader: async ({ params }) => this.mapData<T>(await loader(params)),\n })\n }\n}\n","import { computed, inject, Injectable, signal } from '@angular/core'\nimport { BetterFetchError } from 'better-auth/client'\nimport { defer, filter, first, map, Observable, shareReplay, switchMap } from 'rxjs'\nimport { MainService } from './main.service'\nimport { Provider, Session, User } from '../models'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService {\n private readonly mainService = inject(MainService)\n\n private readonly client = this.mainService.authClient\n\n /**\n * Current authenticated session\n */\n readonly session = signal<{ user: any; session: any } | null>(null)\n\n /**\n * Whether there is an active session\n */\n readonly isLoggedIn = computed(() => !!this.session()?.session)\n\n /**\n * Observable stream of the session state. Emits only when the session is resolved (not pending).\n * This is intended for guards and other async operations.\n */\n readonly sessionState$!: Observable<{ user: User; session: Session } | null>\n\n constructor() {\n this.session$()\n\n const useSession$ = new Observable<{\n data: { user: User; session: Session } | null\n error: BetterFetchError | null\n isPending: boolean\n }>((subscriber) => {\n this.client.useSession.subscribe((value: any) => subscriber.next(value as any))\n })\n\n this.sessionState$ = useSession$.pipe(\n filter((session) => !session.isPending),\n map((session) => {\n if (session.error) {\n return null\n }\n return session.data\n }),\n shareReplay(1),\n )\n }\n\n /**\n * Asynchronously checks if the user is authenticated.\n * Ideal for route guards.\n * @returns An Observable that emits true for an active session, and false otherwise.\n */\n isLoggedIn$(): Observable<boolean> {\n return this.sessionState$.pipe(map((session) => !!session?.session))\n }\n\n private session$() {\n this.client.useSession.subscribe((session: any) => {\n if (session.isPending) {\n this.session.set(null)\n return\n }\n if (session.error) {\n const error: BetterFetchError = session.error\n if (error.status !== 401) {\n console.error('Error fetching session:', error)\n }\n this.session.set(null)\n return\n }\n this.session.set(session.data)\n })\n }\n\n signInEmail(data: { email: string; password: string; rememberMe?: boolean }): Observable<{\n user: User\n session: Session\n }> {\n return defer(() => this.client.signIn.email(data)).pipe(\n map((data) => this.mainService.mapData(data as any)),\n switchMap(() => this.sessionState$.pipe(filter((s) => s !== null))),\n )\n }\n\n /**\n * Sign up a new user using email and password.\n *\n * Parameters username and displayUsername can be used if the username's plugin is enabled.\n * @param data\n */\n signUpEmail(data: {\n name: string\n email: string\n password: string\n username: string\n displayUsername?: string\n }): Observable<{\n user: User\n session: Session\n }> {\n return defer(() => this.client.signUp.email(data)).pipe(\n map((data) => this.mainService.mapData(data as any)),\n switchMap(() => this.sessionState$.pipe(filter((s) => s !== null))),\n )\n }\n\n signInProvider(data: {\n provider: Provider\n callbackURL?: string\n disableRedirect?: boolean\n errorCallbackURL?: string\n idToken?: string\n loginHint?: string\n newUserCallbackURL?: string\n requestSignUp?: boolean\n scopes?: string[]\n }): Observable<{\n user: User\n session: Session\n }> {\n return defer(() =>\n this.client.signIn.social({\n callbackURL: window.location.origin,\n ...(data as any),\n }),\n ).pipe(\n map((data) => this.mainService.mapData(data as any)),\n switchMap(() => this.sessionState$.pipe(filter((s) => s !== null))),\n )\n }\n\n signOut(): Observable<null> {\n return defer(() => this.client.signOut()).pipe(\n map((data) => this.mainService.mapData(data as any)),\n switchMap(() => this.sessionState$.pipe(filter((s) => s === null))),\n )\n }\n\n sendVerificationEmail(data: { email: string; callbackURL?: string }): Observable<{ status: boolean }> {\n return defer(() => this.client.sendVerificationEmail(data)).pipe(\n map((data) => this.mainService.mapData<{ status: boolean }>(data as any)),\n )\n }\n\n requestPasswordReset(data: { email: string; redirectTo?: string }): Observable<{ status: boolean }> {\n return defer(() => this.client.requestPasswordReset(data)).pipe(\n map((data) => this.mainService.mapData<{ status: boolean }>(data as any)),\n )\n }\n\n resetPassword(data: { newPassword: string; token: string }): Observable<{ status: boolean }> {\n return defer(() => this.client.resetPassword(data)).pipe(\n map((data) => this.mainService.mapData<{ status: boolean }>(data as any)),\n )\n }\n\n changePassword(data: { currentPassword: string; newPassword: string; revokeOtherSessions?: boolean }): Observable<{\n token: string\n user: User\n }> {\n return defer(() => this.client.changePassword(data)).pipe(\n map((data) => this.mainService.mapData<{ token: string; user: User }>(data as any)),\n )\n }\n\n changeEmail(data: { newEmail: string; callbackURL?: string }): Observable<{ status: boolean }> {\n return defer(() => this.client.changeEmail(data)).pipe(\n map((data) => this.mainService.mapData<{ status: boolean }>(data as any)),\n )\n }\n\n updateUser(\n data: Partial<{\n name: string\n image: string\n username: string\n displayUsername: string\n [key: string]: any\n }>,\n ): Observable<{ status: boolean }> {\n return defer(() => this.client.updateUser(data)).pipe(\n map((data) => this.mainService.mapData<{ status: boolean }>(data as any)),\n )\n }\n\n deleteUser(data?: { callbackURL?: string; token?: string; password?: string }): Observable<null> {\n return defer(() => this.client.deleteUser(data)).pipe(\n map((data) => this.mainService.mapData(data as any)),\n switchMap(() => this.sessionState$.pipe(filter((s) => s === null))),\n first(),\n )\n }\n}\n","import { inject, Injectable, type ResourceRef } from '@angular/core'\nimport { defer, map, Observable } from 'rxjs'\nimport { MainService } from './main.service'\nimport { Session } from '../models'\n\n@Injectable({ providedIn: 'root' })\nexport class SessionService {\n private readonly mainService = inject(MainService)\n\n private readonly client = this.mainService.authClient\n\n listSessions(): Observable<Session[]> {\n return this.mainService.read<Session[]>(() => this.client.listSessions())\n }\n\n sessionsResource(): ResourceRef<Session[] | undefined> {\n return this.mainService.readResource<Session[]>(() => this.client.listSessions())\n }\n\n revokeSession(data: { token: string }): Observable<{ success: boolean }> {\n return defer(() => this.client.revokeSession(data)).pipe(\n map((data) => this.mainService.mapData<{ success: boolean }>(data as any)),\n )\n }\n\n revokeOtherSessions(): Observable<{ success: boolean }> {\n return defer(() => this.client.revokeOtherSessions()).pipe(\n map((data) => this.mainService.mapData<{ success: boolean }>(data as any)),\n )\n }\n\n revokeAllSessions(): Observable<{ success: boolean }> {\n return defer(() => this.client.revokeSessions()).pipe(\n map((data) => this.mainService.mapData<{ success: boolean }>(data as any)),\n )\n }\n}\n","import { inject, Injectable, type ResourceRef } from '@angular/core'\nimport { defer, map, Observable } from 'rxjs'\nimport { MainService } from './main.service'\nimport { Account, Provider } from '../models'\n\n@Injectable({ providedIn: 'root' })\nexport class AccountService {\n private readonly mainService = inject(MainService)\n\n private readonly client = this.mainService.authClient\n\n listAccounts(): Observable<Account[]> {\n return this.mainService.read<Account[]>(() => this.client.listAccounts())\n }\n\n accountsResource(): ResourceRef<Account[] | undefined> {\n return this.mainService.readResource<Account[]>(() => this.client.listAccounts())\n }\n\n linkSocial(data: {\n provider: Provider\n callbackURL?: string\n scopes?: string[]\n idToken?: {\n token: string\n nonce?: string\n accessToken?: string\n refreshToken?: string\n }\n }): Observable<{ url: string; redirect: boolean }> {\n return defer(() => this.client.linkSocial(data)).pipe(\n map((data) => this.mainService.mapData<{ url: string; redirect: boolean }>(data as any)),\n )\n }\n\n unlinkAccount(data: { providerId: Provider; accountId: string }): Observable<{ status: boolean }> {\n return defer(() => this.client.unlinkAccount(data)).pipe(\n map((data) => this.mainService.mapData<{ status: boolean }>(data as any)),\n )\n }\n}\n","export function validatePlugin(client: any, property: string) {\n if (!client) {\n throw new Error('AuthClient is not initialized.')\n }\n\n if (!client[property]) {\n throw new Error(\n `Property '${property}' is not available on authClient. Please ensure the plugin providing this property is included in the plugins array.`,\n )\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer, filter, first, map, Observable, switchMap } from 'rxjs'\nimport { validatePlugin } from '../../utils/validate-plugin'\nimport { MainService } from '../main.service'\nimport { AuthService } from '../auth.service'\nimport { Session, User } from '../../models'\n\n@Injectable({ providedIn: 'root' })\nexport class TwoFactorService {\n private readonly mainService = inject(MainService)\n private readonly authService = inject(AuthService)\n\n twoFactor: any\n\n constructor() {\n const client = this.mainService.authClient as { twoFactor?: any }\n validatePlugin(client, 'twoFactor')\n this.twoFactor = client.twoFactor\n }\n\n enable(data: { password: string; issuer?: string }): Observable<{ totpURI: string; backupCodes: string[] }> {\n return defer(() => this.twoFactor.enable(data)).pipe(\n map((data) =>\n this.mainService.mapData<{\n totpURI: string\n backupCodes: string[]\n }>(data as any),\n ),\n )\n }\n\n disable(data: { password: string }): Observable<{ status: boolean }> {\n return defer(() => this.twoFactor.disable(data)).pipe(\n map((data) => this.mainService.mapData<{ status: boolean }>(data as any)),\n )\n }\n\n getTotpUri(data: { password: string }): Observable<{ totpURI: string }> {\n return defer(() => this.twoFactor.getTotpUri(data)).pipe(\n map((data) => this.mainService.mapData<{ totpURI: string }>(data as any)),\n )\n }\n\n verifyTotp(data: { code: string; trustDevice?: boolean }): Observable<{ status: boolean }> {\n return defer(() => this.twoFactor.verifyTotp(data)).pipe(\n switchMap(() => this.authService.sessionState$.pipe(filter((s) => s !== null))),\n first(),\n map(() => ({ status: true })),\n )\n }\n\n sendOtp(): Observable<{ status: boolean }> {\n return defer(() => this.twoFactor.sendOtp()).pipe(\n map((data) => this.mainService.mapData<{ status: boolean }>(data as any)),\n )\n }\n\n verifyOtp(data: { code: string; trustDevice?: boolean }): Observable<{ status: boolean }> {\n return defer(() => this.twoFactor.verifyOtp(data)).pipe(\n switchMap(() => this.authService.sessionState$.pipe(filter((s) => s !== null))),\n first(),\n map(() => ({ status: true })),\n )\n }\n\n generateBackupCodes(data: { password: string }): Observable<{ status: boolean; backupCodes: string[] }> {\n return defer(() => this.twoFactor.generateBackupCodes(data)).pipe(\n map((data) => this.mainService.mapData<{ status: boolean; backupCodes: string[] }>(data as any)),\n )\n }\n\n verifyBackupCode(data: { code: string; disableSession?: boolean; trustDevice?: boolean }): Observable<{\n user: User\n session: Session\n }> {\n return defer(() => this.twoFactor.verifyBackupCode(data)).pipe(\n map((data) =>\n this.mainService.mapData<{\n user: User\n session: Session\n }>(data as any),\n ),\n )\n }\n}\n","import { inject, Injectable, type ResourceRef } from '@angular/core'\nimport { defer, map, Observable } from 'rxjs'\nimport { MainService } from '../main.service'\nimport { validatePlugin } from '../../utils/validate-plugin'\nimport type { Passkey } from '@better-auth/passkey'\n\n@Injectable({ providedIn: 'root' })\nexport class PasskeyService {\n private readonly mainService = inject(MainService)\n\n passkey: any\n\n constructor() {\n const client = this.mainService.authClient as { passkey?: any }\n validatePlugin(client, 'passkey')\n this.passkey = client.passkey\n }\n\n addPasskey(data: {\n name?: string\n authenticatorAttachment?: AuthenticatorAttachment\n }): Observable<{ passkey: Passkey }> {\n return defer(() => this.passkey.addPasskey(data)).pipe(\n map((data) => this.mainService.mapData<{ passkey: Passkey }>(data as any)),\n )\n }\n\n signIn(data: { email: string; autoFill?: boolean; callbackURL?: string }): Observable<unknown> {\n return defer(() => (this.mainService.authClient.signIn as any).passkey(data))\n }\n\n listUserPasskeys(): Observable<Passkey[]> {\n return this.mainService.read<Passkey[]>(() => this.passkey.listUserPasskeys())\n }\n\n userPasskeysResource(): ResourceRef<Passkey[] | undefined> {\n return this.mainService.readResource<Passkey[]>(() => this.passkey.listUserPasskeys())\n }\n\n deletePasskey(data: { id: string }): Observable<{ status: boolean }> {\n return defer(() => this.passkey.deletePasskey(data)).pipe(\n map((data) => this.mainService.mapData<{ status: boolean }>(data as any)),\n )\n }\n\n updatePasskey(data: { id: string; name: string }): Observable<{ passkey: Passkey }> {\n return defer(() => this.passkey.updatePasskey(data)).pipe(\n map((data) => this.mainService.mapData<{ passkey: Passkey }>(data as any)),\n )\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer, filter, switchMap } from 'rxjs'\nimport { MainService } from '../main.service'\nimport { validatePlugin } from '../../utils/validate-plugin'\nimport { AuthService } from '../auth.service'\n\n@Injectable({ providedIn: 'root' })\nexport class GenericOauthService {\n private readonly mainService = inject(MainService)\n private readonly authService = inject(AuthService)\n\n oauth: any\n\n constructor() {\n const client = this.mainService.authClient as { oauth2?: any }\n validatePlugin(client, 'oauth2')\n this.oauth = client.oauth2\n }\n\n signIn(data: {\n providerId: string\n callbackURL?: string\n errorCallbackURL?: string\n newUserCallbackURL?: string\n disableRedirect?: boolean\n scopes?: string[]\n requestSignUp?: boolean\n }) {\n return defer(() => (this.mainService.authClient.signIn as any).oauth2(data)).pipe(\n switchMap(() => this.authService.sessionState$.pipe(filter((s) => s !== null))),\n )\n }\n\n link(data: { providerId: string; callbackURL: string }) {\n return defer(() => this.oauth.link(data))\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer, filter, switchMap } from 'rxjs'\nimport { validatePlugin } from '../../utils/validate-plugin'\nimport { MainService } from '../main.service'\nimport { AuthService } from '../auth.service'\n\n@Injectable({ providedIn: 'root' })\nexport class EmailOtpService {\n private readonly mainService = inject(MainService)\n private readonly authService = inject(AuthService)\n\n emailOtp: any\n\n constructor() {\n const client = this.mainService.authClient as { emailOtp?: any }\n validatePlugin(client, 'emailOtp')\n this.emailOtp = client.emailOtp\n }\n\n signInEmailOtp(data: { email: string; otp: string }) {\n return defer(() => (this.mainService.authClient.signIn as any).emailOtp(data)).pipe(\n switchMap(() => this.authService.sessionState$.pipe(filter((s) => s !== null))),\n )\n }\n\n sendVerificationOtp(data: { email: string; type: 'sign-in' | 'email-verification' | 'forget-password' }) {\n return defer(() => this.emailOtp.sendVerificationOtp(data))\n }\n\n checkVerificationOtp(data: {\n email: string\n type: 'sign-in' | 'email-verification' | 'forget-password'\n otp: string\n }) {\n return defer(() => this.emailOtp.checkVerificationOtp(data))\n }\n\n verifyEmail(data: { email: string; otp: string }) {\n return defer(() => this.emailOtp.verifyEmail(data))\n }\n\n resetPassword(data: { email: string; otp: string; password: string }) {\n return defer(() => this.emailOtp.resetPassword(data))\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer } from 'rxjs'\nimport { validatePlugin } from '../../utils/validate-plugin'\nimport { MainService } from '../main.service'\n\n@Injectable({ providedIn: 'root' })\nexport class OneTapService {\n private readonly mainService = inject(MainService)\n\n oneTap: any\n\n constructor() {\n const client = this.mainService.authClient as { oneTap?: any }\n validatePlugin(client, 'oneTap')\n this.oneTap = client.oneTap\n }\n\n signIn(data?: {\n fetchOptions?: {\n onSuccess: () => void\n }\n callbackURL?: string\n onPromptNotification?: (notification: any) => void\n }) {\n return defer(() => this.oneTap(data))\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer } from 'rxjs'\nimport { validatePlugin } from '../../utils/validate-plugin'\nimport { MainService } from '../main.service'\n\n@Injectable({ providedIn: 'root' })\nexport class MagicLinkService {\n private readonly mainService = inject(MainService)\n\n magicLink: any\n\n constructor() {\n const client = this.mainService.authClient as { magicLink?: any }\n validatePlugin(client, 'magicLink')\n this.magicLink = client.magicLink\n }\n\n signIn(data: {\n email: string\n name?: string\n callbackURL?: string\n newUserCallbackURL?: string\n errorCallbackURL?: string\n }) {\n return defer(() => (this.mainService.authClient.signIn as any).magicLink(data))\n }\n\n verify(data: { token: string; callbackURL?: string }) {\n return defer(() => this.magicLink.verify(data))\n }\n}\n","export function isEmail(email: string): boolean {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n return emailRegex.test(email)\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer, filter, map, Observable, switchMap } from 'rxjs'\nimport { MainService } from '../main.service'\nimport { AuthService } from '../auth.service'\nimport { isEmail } from '../../utils/email.util'\nimport { Session, User } from '../../models'\nimport { HttpClient } from '@angular/common/http'\n\n@Injectable({ providedIn: 'root' })\nexport class UsernameService {\n private readonly http = inject(HttpClient)\n\n private readonly mainService = inject(MainService)\n private readonly authService = inject(AuthService)\n\n username: any = this.mainService.authClient\n\n /**\n * pass either email or username to sign in. Needs username plugin enabled to use username.\n * @param data : { email?: string; username?: string; password: string; rememberMe?: boolean }\n */\n signIn(data: { login: string; password: string; rememberMe?: boolean }): Observable<{\n user: User\n session: Session\n }> {\n if (isEmail(data.login)) {\n return this.authService.signInEmail({ email: data.login, password: data.password, rememberMe: data.rememberMe })\n } else {\n return this.signInUsername({ username: data.login, password: data.password, rememberMe: data.rememberMe })\n }\n }\n\n signInUsername(data: { username: string; password: string; rememberMe?: boolean }): Observable<{\n user: User\n session: Session\n }> {\n return defer(() => (this.username as any).signIn.username(data)).pipe(\n switchMap(() => this.authService.sessionState$.pipe(filter((s) => s !== null))),\n )\n }\n\n isUsernameAvailable(data: { username: string }): Observable<boolean> {\n return this.http\n .post<{ available: boolean }>(`${this.mainService.url}/is-username-available`, data)\n .pipe(map((res) => res.available))\n }\n}\n","import { inject, Injectable, type ResourceRef } from '@angular/core'\nimport { defer, map, Observable } from 'rxjs'\nimport { validatePlugin } from '../../utils/validate-plugin'\nimport { MainService } from '../main.service'\nimport { Session, User } from '../../models'\n\ntype ListUsersParams = {\n searchValue?: string\n searchField?: 'email' | 'name'\n searchOperator?: 'contains' | 'start_with' | 'end_with'\n limit?: number\n offset?: number\n sortBy?: string\n sortDirection?: 'asc' | 'desc'\n filterField?: string\n filterValue?: string | number | boolean\n filterOperator?: 'eq' | 'ne' | 'lt' | 'lte' | 'gt' | 'gte'\n}\n\ntype ListUsersResult = { users: User[]; total: number; limit: number; offset: number }\n\n@Injectable({ providedIn: 'root' })\nexport class AdminService {\n private readonly mainService = inject(MainService)\n\n admin: any\n\n constructor() {\n const client = this.mainService.authClient as { admin?: any }\n validatePlugin(client, 'admin')\n this.admin = client.admin\n }\n\n setRole(data: { userId: string; role: string | string[] }): Observable<{ user: User }> {\n return defer(() => this.admin.setRole(data)).pipe(\n map((data) => this.mainService.mapData<{ user: User }>(data as any)),\n )\n }\n\n createUser(data: {\n email: string\n password: string\n name: string\n role?: string | string[]\n data?: Record<string, any>\n }): Observable<{ user: User }> {\n return defer(() => this.admin.createUser(data)).pipe(\n map((data) => this.mainService.mapData<{ user: User }>(data as any)),\n )\n }\n\n updateUser(data: { userId: string; data: Partial<User> }): Observable<{ user: User }> {\n return defer(() => this.admin.updateUser(data)).pipe(\n map((data: any) => this.mainService.mapData<{ user: User }>(data)),\n )\n }\n\n listUsers(data: ListUsersParams): Observable<ListUsersResult> {\n return this.mainService.read<ListUsersResult>(() => this.admin.listUsers(data))\n }\n\n usersResource(params: () => ListUsersParams): ResourceRef<ListUsersResult | undefined> {\n return this.mainService.readResourceWithParams<ListUsersResult, ListUsersParams>(params, (data) =>\n this.admin.listUsers(data),\n )\n }\n\n listUserSessions(data: { userId: string }): Observable<{ sessions: Session[] }> {\n return this.mainService.read<{ sessions: Session[] }>(() => this.admin.listUserSessions(data))\n }\n\n userSessionsResource(params: () => { userId: string }): ResourceRef<{ sessions: Session[] } | undefined> {\n return this.mainService.readResourceWithParams<{ sessions: Session[] }, { userId: string }>(params, (data) =>\n this.admin.listUserSessions(data),\n )\n }\n\n unbanUser(data: { userId: string }): Observable<{ user: User }> {\n return defer(() => this.admin.unbanUser(data)).pipe(\n map((data: any) => this.mainService.mapData<{ user: User }>(data)),\n )\n }\n\n banUser(data: { userId: string; banReason?: string; banExpiresIn?: number }): Observable<{ user: User }> {\n return defer(() => this.admin.banUser(data)).pipe(\n map((data: any) => this.mainService.mapData<{ user: User }>(data)),\n )\n }\n\n impersonateUser(data: { userId: string }): Observable<{ session: Session; user: User }> {\n return defer(() => this.admin.impersonateUser(data)).pipe(\n map((data: any) => this.mainService.mapData<{ session: Session; user: User }>(data)),\n )\n }\n\n stopImpersonating(): Observable<unknown> {\n return defer(() => this.admin.stopImpersonating())\n }\n\n revokeUserSession(data: { sessionToken: string }): Observable<{ success: boolean }> {\n return defer(() => this.admin.revokeUserSession(data)).pipe(\n map((data: any) => this.mainService.mapData<{ success: boolean }>(data)),\n )\n }\n\n revokeUserSessions(data: { userId: string }): Observable<{ success: boolean }> {\n return defer(() => this.admin.revokeUserSessions(data)).pipe(\n map((data: any) => this.mainService.mapData<{ success: boolean }>(data)),\n )\n }\n\n removeUser(data: { userId: string }): Observable<{ success: boolean }> {\n return defer(() => this.admin.removeUser(data)).pipe(\n map((data: any) => this.mainService.mapData<{ success: boolean }>(data)),\n )\n }\n\n setUserPassword(data: { userId: string; newPassword: string }): Observable<{ success: boolean }> {\n return defer(() => this.admin.setUserPassword(data)).pipe(\n map((data: any) => this.mainService.mapData<{ success: boolean }>(data)),\n )\n }\n\n hasPermission(data: { userId?: string; permissions: Record<string, string[]> }) {\n return defer(() => this.admin.hasPermission(data))\n }\n\n checkRolePermission(data: { role: string; permissions: Record<string, string[]> }) {\n return defer(() => this.admin.checkRolePermission(data))\n }\n}\n","import { inject, Injectable, type ResourceRef } from '@angular/core'\nimport { defer, map, Observable } from 'rxjs'\nimport { validatePlugin } from '../../utils/validate-plugin'\nimport { MainService } from '../main.service'\nimport type { Organization, Member, Invitation } from 'better-auth/plugins/organization'\n\ntype FullOrganizationParams = {\n organizationId?: string\n organizationSlug?: string\n membersLimit?: number\n}\n\ntype InvitationDetails = {\n organizationName: string\n organizationSlug: string\n inviterEmail: string\n} & Invitation\n\n@Injectable({ providedIn: 'root' })\nexport class OrganizationService {\n private readonly mainService = inject(MainService)\n\n organization: any\n\n constructor() {\n const client = this.mainService.authClient as { organization?: any }\n validatePlugin(client, 'organization')\n this.organization = client.organization\n }\n\n create(data: {\n name: string\n slug: string\n logo?: string\n metadata?: Record<string, any>\n keepCurrentActiveOrganization?: boolean\n }): Observable<Organization> {\n return defer(() => this.organization.create(data)).pipe(\n map((data) => this.mainService.mapData<Organization>(data as any)),\n )\n }\n\n checkSlug(data: { slug: string }): Observable<unknown> {\n return defer(() => this.organization.checkSlug(data))\n }\n\n list(): Observable<Organization[]> {\n return this.mainService.read<Organization[]>(() => this.organization.list())\n }\n\n organizationsResource(): ResourceRef<Organization[] | undefined> {\n return this.mainService.readResource<Organization[]>(() => this.organization.list())\n }\n\n setActive(data: { organizationId?: string; organizationSlug?: string }): Observable<Organization> {\n return defer(() => this.organization.setActive(data)).pipe(\n map((data) => this.mainService.mapData<Organization>(data as any)),\n )\n }\n\n getFullOrganization(data: FullOrganizationParams): Observable<Organization> {\n return defer(() => this.organization.getFullOrganization(data)).pipe(\n map((data) => this.mainService.mapData<Organization>(data as any)),\n )\n }\n\n fullOrganizationResource(params: () => FullOrganizationParams): ResourceRef<Organization | undefined> {\n return this.mainService.readResourceWithParams<Organization, FullOrganizationParams>(params, (data) =>\n this.organization.getFullOrganization(data),\n )\n }\n\n update(data: {\n data: {\n name?: string\n slug?: string\n logo?: string\n metadata?: Record<string, any>\n }\n organizationId?: string\n }): Observable<Organization> {\n return defer(() => this.organization.update(data)).pipe(\n map((data) => this.mainService.mapData<Organization>(data as any)),\n )\n }\n\n delete(data: { organizationId: string }): Observable<void> {\n return defer(() => this.organization.delete(data)).pipe(map((data) => this.mainService.mapData<void>(data as any)))\n }\n\n inviteMember(data: {\n email: string\n role: string | string[]\n organizationId?: string\n resend?: boolean\n teamId?: string\n }): Observable<Invitation> {\n return defer(() => this.organization.inviteMember(data)).pipe(\n map((data) => this.mainService.mapData<Invitation>(data as any)),\n )\n }\n\n acceptInvitation(data: { invitationId: string }): Observable<{ invitation: Invitation; member: Member }> {\n return defer(() => this.organization.acceptInvitation(data)).pipe(\n map((data) => this.mainService.mapData<{ invitation: Invitation; member: Member }>(data as any)),\n )\n }\n\n cancelInvitation(data: { invitationId: string }): Observable<void> {\n return defer(() => this.organization.cancelInvitation(data)).pipe(\n map((data) => this.mainService.mapData<void>(data as any)),\n )\n }\n\n rejectInvitation(data: { invitationId: string }): Observable<{ invitation: Invitation; member: null }> {\n return defer(() => this.organization.rejectInvitation(data)).pipe(\n map((data) => this.mainService.mapData<{ invitation: Invitation; member: null }>(data as any)),\n )\n }\n\n getInvitation(data: { id: string }): Observable<InvitationDetails> {\n return defer(() => this.organization.getInvitation(data)).pipe(\n map((data) => this.mainService.mapData<InvitationDetails>(data as any)),\n )\n }\n\n invitationResource(params: () => { id: string }): ResourceRef<InvitationDetails | undefined> {\n return this.mainService.readResourceWithParams<InvitationDetails, { id: string }>(params, (data) =>\n this.organization.getInvitation(data),\n )\n }\n\n listInvitations(data: { organizationId?: string }): Observable<Invitation[]> {\n return this.mainService.read<Invitation[]>(() => this.organization.listInvitations(data))\n }\n\n invitationsResource(params: () => { organizationId?: string }): ResourceRef<Invitation[] | undefined> {\n return this.mainService.readResourceWithParams<Invitation[], { organizationId?: string }>(params, (data) =>\n this.organization.listInvitations(data),\n )\n }\n\n listUserInvitations(): Observable<Invitation[]> {\n return this.mainService.read<Invitation[]>(() => this.organization.listUserInvitations())\n }\n\n userInvitationsResource(): ResourceRef<Invitation[] | undefined> {\n return this.mainService.readResource<Invitation[]>(() => this.organization.listUserInvitations())\n }\n\n listMembers(\n data: {\n organizationId?: string\n limit?: number\n offset?: number\n sortBy?: string\n sortDirection?: 'asc' | 'desc'\n filterField?: string\n filterOperator?: 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'nin' | 'contains'\n filterValue?: string\n } = {},\n ) {\n return defer(() => this.organization.listMembers(data))\n }\n\n removeMember(data: { memberIdOrEmail: string; organizationId?: string }): Observable<{ member: Member }> {\n return defer(() => this.organization.removeMember(data)).pipe(\n map((data) => this.mainService.mapData<{ member: Member }>(data as any)),\n )\n }\n\n updateMemberRoles(data: { memberId: string; role: string | string[]; organizationId?: string }) {\n return defer(() => this.organization.updateMemberRoles(data))\n }\n\n getActiveMember(): Observable<Member> {\n return this.mainService.read<Member>(() => this.organization.getActiveMember())\n }\n\n activeMemberResource(): ResourceRef<Member | undefined> {\n return this.mainService.readResource<Member>(() => this.organization.getActiveMember())\n }\n\n leave(data: { organizationId?: string }): Observable<void> {\n return defer(() => this.organization.leave(data)).pipe(map((data) => this.mainService.mapData<void>(data as any)))\n }\n\n createTeam(data: { name: string; organizationId?: string }) {\n return defer(() => this.organization.createTeam(data))\n }\n\n listTeams(data: { organizationId?: string }) {\n return defer(() => this.organization.listTeams(data))\n }\n\n updateTeam(data: {\n teamId: string\n data: { name?: string; organizationId?: string; createdAt?: Date; updatedAt?: Date }\n }) {\n return defer(() => this.organization.updateTeam(data))\n }\n\n removeTeam(data: { teamId: string; organizationId?: string }) {\n return defer(() => this.organization.removeTeam(data))\n }\n\n setActiveTeam(data: { teamId?: string }) {\n return defer(() => this.organization.setActiveTeam(data))\n }\n\n listUsersTeams() {\n return defer(() => this.organization.listUsersTeams())\n }\n\n listTeamMembers(data: { teamId: string }) {\n return defer(() => this.organization.listTeamMembers(data))\n }\n\n addTeamMember(data: { teamId: string; userId: string }) {\n return defer(() => this.organization.addTeamMember(data))\n }\n\n removeTeamMember(data: { teamId: string; userId: string }) {\n return defer(() => this.organization.removeTeamMember(data))\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer, filter, map, Observable, switchMap } from 'rxjs'\nimport { validatePlugin } from '../../utils/validate-plugin'\nimport { MainService } from '../main.service'\nimport { AuthService } from '../auth.service'\n\nexport interface SiweNonceResult {\n nonce: string\n}\n\nexport type SiweNonceRequest = {\n walletAddress?: string\n address?: string\n chainId?: number\n}\n\nexport interface SiweVerifyResult {\n token: string\n success: boolean\n user: {\n id: string\n walletAddress: string\n chainId: number\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SiweService {\n private readonly mainService = inject(MainService)\n private readonly authService = inject(AuthService)\n\n siwe: any\n\n constructor() {\n const client = this.mainService.authClient as { siwe?: any }\n validatePlugin(client, 'siwe')\n this.siwe = client.siwe\n }\n\n /**\n * Fetches a nonce for the given wallet address to be included in the SIWE message.\n * @param data - The wallet address and optional chain ID\n */\n getNonce(data: SiweNonceRequest): Observable<SiweNonceResult> {\n return defer(() => this.siwe.getNonce(data)).pipe(\n map((res) => this.mainService.mapData<SiweNonceResult>(res as any)),\n )\n }\n\n /**\n * Verifies a signed SIWE message and signs the user in.\n * On success, waits for the session to be established before emitting.\n * @param data - The signed message, signature, wallet address, optional chain ID and optional email\n */\n verifyMessage(data: {\n message: string\n signature: string\n walletAddress: string\n chainId?: number\n email?: string\n }): Observable<SiweVerifyResult> {\n return defer(() => this.siwe.verifySiweMessage(data)).pipe(\n map((res) => this.mainService.mapData<SiweVerifyResult>(res as any)),\n switchMap((result) =>\n this.authService.sessionState$.pipe(\n filter((s) => s !== null),\n map(() => result),\n ),\n ),\n )\n }\n}\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core'\nimport { type BetterAuthClientOptions } from 'better-auth/client'\nimport { AuthService } from './services'\n\nexport const BETTER_AUTH_CONFIG_TOKEN = new InjectionToken<BetterAuthClientOptions>('BETTER_AUTH_CONFIG')\n\nconst DEFAULT_CONFIG: Partial<BetterAuthClientOptions> = {}\n\nexport function provideBetterAuth(options: BetterAuthClientOptions): EnvironmentProviders {\n const config: BetterAuthClientOptions = { ...DEFAULT_CONFIG, ...options }\n\n // if baseURL is not a url, it might be because of a proxy in development\n if (!config.baseURL?.startsWith('http')) {\n config.baseURL = window.location.origin\n }\n\n return makeEnvironmentProviders([{ provide: BETTER_AUTH_CONFIG_TOKEN, useValue: config }, AuthService])\n}\n","import { inject } from '@angular/core'\nimport { Router, type UrlTree } from '@angular/router'\nimport { map, type Observable } from 'rxjs'\nimport { AuthService } from '../services'\n\nconst normalizeRoles = (role: unknown): string[] => {\n if (Array.isArray(role)) {\n return role.map((value) => String(value).trim()).filter((value) => value.length > 0)\n }\n\n if (typeof role === 'string') {\n return role\n .split(',')\n .map((value) => value.trim())\n .filter((value) => value.length > 0)\n }\n\n return []\n}\n\n/**\n * Redirects unauthorized users to the specified commands (route).\n */\nexport function redirectUnauthorizedTo(commands: string[] = ['/login']): () => Observable<UrlTree | boolean> {\n return () => {\n const auth = inject(AuthService)\n const router = inject(Router)\n return auth.isLoggedIn$().pipe(map((isLoggedIn) => (isLoggedIn ? true : router.createUrlTree(commands))))\n }\n}\n\n/**\n * Redirects logged-in users to the specified commands (route).\n */\nexport function redirectLoggedInTo(commands: string[] = ['/']): () => Observable<UrlTree | boolean> {\n return () => {\n const auth = inject(AuthService)\n const router = inject(Router)\n return auth.isLoggedIn$().pipe(map((isLoggedIn) => (isLoggedIn ? router.createUrlTree(commands) : true)))\n }\n}\n\n/**\n * Allows access only to users with at least one of the specified roles.\n * Redirects unauthorized users to the specified commands (route).\n */\nexport function hasRole(requiredRoles: string[], redirectTo: string[] = ['/unauthorized']): () => Observable<UrlTree | boolean> {\n return () => {\n const auth = inject(AuthService)\n const router = inject(Router)\n\n return auth.sessionState$.pipe(\n map((session) => {\n if (!session || !session.user) {\n return router.createUrlTree(redirectTo)\n }\n\n const roles = normalizeRoles((session.user as { role?: unknown }).role)\n if (roles.some((role) => requiredRoles.includes(role))) {\n return true\n }\n\n return router.createUrlTree(redirectTo)\n }),\n )\n }\n}\n","import { CanActivateFn, UrlTree } from '@angular/router'\nimport { Observable } from 'rxjs'\n\nexport function canActivate(\n pipe: () => Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree,\n): {\n canActivate: [CanActivateFn]\n} {\n return {\n canActivate: [() => pipe()],\n }\n}\n","import { AbstractControl, AsyncValidatorFn } from '@angular/forms'\nimport { catchError, map, of, switchMap, timer } from 'rxjs'\nimport { UsernameService } from '../services'\n\nexport function usernameAvailableValidator(\n usernameService: UsernameService,\n initialUsername?: string,\n): AsyncValidatorFn {\n let lastValidationValue: string | null = null\n\n return (control: AbstractControl): any => {\n const username = control.value?.trim()\n\n if (!username || username === initialUsername) {\n lastValidationValue = null\n return of(null)\n }\n\n // If the value is the same as the last one we checked, don't check again\n if (username === lastValidationValue) {\n return of(null)\n }\n\n lastValidationValue = username\n\n return timer(500).pipe(\n switchMap(() => {\n const currentValue = control.value?.trim()\n\n // If the value has changed since the timer started, don't validate\n if (currentValue !== username) {\n return of(null)\n }\n\n if (!currentValue || currentValue === initialUsername) {\n return of(null)\n }\n\n return usernameService.isUsernameAvailable({ username: currentValue }).pipe(\n map((available) => (available ? null : { usernameTaken: true })),\n catchError(() => of(null)),\n )\n }),\n )\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-better-auth.mjs","sources":["../../../src/lib/services/main.service.ts","../../../src/lib/services/auth.service.ts","../../../src/lib/services/session.service.ts","../../../src/lib/services/account.service.ts","../../../src/lib/utils/validate-plugin.ts","../../../src/lib/services/plugins/two-factor.service.ts","../../../src/lib/services/plugins/passkey.service.ts","../../../src/lib/services/plugins/generic-oauth.service.ts","../../../src/lib/services/plugins/email-otp.service.ts","../../../src/lib/services/plugins/one-tap.service.ts","../../../src/lib/services/plugins/magic-link.service.ts","../../../src/lib/utils/email.util.ts","../../../src/lib/services/plugins/username.service.ts","../../../src/lib/services/plugins/admin.service.ts","../../../src/lib/services/plugins/organization.service.ts","../../../src/lib/services/plugins/siwe.service.ts","../../../src/lib/providers.ts","../../../src/lib/guards/auth-guard.utils.ts","../../../src/lib/guards/auth-guard.factory.ts","../../../src/lib/validators/username-available.validators.ts","../../../src/ngx-better-auth.ts"],"sourcesContent":["import { inject, Injectable, Injector, resource, type ResourceRef } from '@angular/core'\nimport { BETTER_AUTH_CONFIG_TOKEN } from '../providers'\nimport { BetterFetchError, createAuthClient } from 'better-auth/client'\nimport { defer, map, type Observable } from 'rxjs'\n\ntype BetterAuthResponse<T> = { data: T; error: BetterFetchError }\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MainService {\n private readonly config = inject(BETTER_AUTH_CONFIG_TOKEN)\n private readonly injector = inject(Injector)\n\n readonly authClient: any = createAuthClient({\n ...this.config,\n })\n\n readonly url = `${this.config.baseURL}${this.config.basePath || '/api/auth'}`\n\n mapData<T>(data: { data: T; error: BetterFetchError }): T {\n if (data.error) {\n throw data.error\n }\n return data.data\n }\n\n read<T>(loader: () => Promise<BetterAuthResponse<T>>): Observable<T> {\n return defer(loader).pipe(map((data) => this.mapData<T>(data)))\n }\n\n readResource<T>(loader: () => Promise<BetterAuthResponse<T>>): ResourceRef<T | undefined> {\n return resource({\n injector: this.injector,\n loader: async () => this.mapData<T>(await loader()),\n })\n }\n\n readResourceWithParams<T, R>(\n params: () => R,\n loader: (params: R) => Promise<BetterAuthResponse<T>>,\n ): ResourceRef<T | undefined> {\n return resource({\n injector: this.injector,\n params,\n loader: async ({ params }) => this.mapData<T>(await loader(params)),\n })\n }\n}\n","import { computed, inject, Injectable, signal } from '@angular/core'\nimport { BetterFetchError } from 'better-auth/client'\nimport { defer, filter, first, map, Observable, shareReplay, switchMap } from 'rxjs'\nimport { MainService } from './main.service'\nimport { Provider, Session, User } from '../models'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService {\n private readonly mainService = inject(MainService)\n\n private readonly client = this.mainService.authClient\n\n /**\n * Current authenticated session\n */\n readonly session = signal<{ user: any; session: any } | null>(null)\n\n /**\n * Whether there is an active session\n */\n readonly isLoggedIn = computed(() => !!this.session()?.session)\n\n /**\n * Observable stream of the session state. Emits only when the session is resolved (not pending).\n * This is intended for guards and other async operations.\n */\n readonly sessionState$!: Observable<{ user: User; session: Session } | null>\n\n constructor() {\n this.session$()\n\n const useSession$ = new Observable<{\n data: { user: User; session: Session } | null\n error: BetterFetchError | null\n isPending: boolean\n }>((subscriber) => {\n this.client.useSession.subscribe((value: any) => subscriber.next(value as any))\n })\n\n this.sessionState$ = useSession$.pipe(\n filter((session) => !session.isPending),\n map((session) => {\n if (session.error) {\n return null\n }\n return session.data\n }),\n shareReplay(1),\n )\n }\n\n /**\n * Asynchronously checks if the user is authenticated.\n * Ideal for route guards.\n * @returns An Observable that emits true for an active session, and false otherwise.\n */\n isLoggedIn$(): Observable<boolean> {\n return this.sessionState$.pipe(map((session) => !!session?.session))\n }\n\n private session$() {\n this.client.useSession.subscribe((session: any) => {\n if (session.isPending) {\n this.session.set(null)\n return\n }\n if (session.error) {\n const error: BetterFetchError = session.error\n if (error.status !== 401) {\n console.error('Error fetching session:', error)\n }\n this.session.set(null)\n return\n }\n this.session.set(session.data)\n })\n }\n\n signInEmail(data: { email: string; password: string; rememberMe?: boolean }): Observable<{\n user: User\n session: Session\n }> {\n return defer(() => this.client.signIn.email(data)).pipe(\n map((data) => this.mainService.mapData(data as any)),\n switchMap(() => this.sessionState$.pipe(filter((s) => s !== null))),\n )\n }\n\n /**\n * Sign up a new user using email and password.\n *\n * Parameters username and displayUsername can be used if the username's plugin is enabled.\n * @param data\n */\n signUpEmail(data: {\n name: string\n email: string\n password: string\n username: string\n displayUsername?: string\n }): Observable<{\n user: User\n session: Session\n }> {\n return defer(() => this.client.signUp.email(data)).pipe(\n map((data) => this.mainService.mapData(data as any)),\n switchMap(() => this.sessionState$.pipe(filter((s) => s !== null))),\n )\n }\n\n signInProvider(data: {\n provider: Provider\n callbackURL?: string\n disableRedirect?: boolean\n errorCallbackURL?: string\n idToken?: string\n loginHint?: string\n newUserCallbackURL?: string\n requestSignUp?: boolean\n scopes?: string[]\n }): Observable<{\n user: User\n session: Session\n }> {\n return defer(() =>\n this.client.signIn.social({\n callbackURL: window.location.origin,\n ...(data as any),\n }),\n ).pipe(\n map((data) => this.mainService.mapData(data as any)),\n switchMap(() => this.sessionState$.pipe(filter((s) => s !== null))),\n )\n }\n\n signOut(): Observable<null> {\n return defer(() => this.client.signOut()).pipe(\n map((data) => this.mainService.mapData(data as any)),\n switchMap(() => this.sessionState$.pipe(filter((s) => s === null))),\n )\n }\n\n sendVerificationEmail(data: { email: string; callbackURL?: string }): Observable<{ status: boolean }> {\n return defer(() => this.client.sendVerificationEmail(data)).pipe(\n map((data) => this.mainService.mapData<{ status: boolean }>(data as any)),\n )\n }\n\n requestPasswordReset(data: { email: string; redirectTo?: string }): Observable<{ status: boolean }> {\n return defer(() => this.client.requestPasswordReset(data)).pipe(\n map((data) => this.mainService.mapData<{ status: boolean }>(data as any)),\n )\n }\n\n resetPassword(data: { newPassword: string; token: string }): Observable<{ status: boolean }> {\n return defer(() => this.client.resetPassword(data)).pipe(\n map((data) => this.mainService.mapData<{ status: boolean }>(data as any)),\n )\n }\n\n changePassword(data: { currentPassword: string; newPassword: string; revokeOtherSessions?: boolean }): Observable<{\n token: string\n user: User\n }> {\n return defer(() => this.client.changePassword(data)).pipe(\n map((data) => this.mainService.mapData<{ token: string; user: User }>(data as any)),\n )\n }\n\n changeEmail(data: { newEmail: string; callbackURL?: string }): Observable<{ status: boolean }> {\n return defer(() => this.client.changeEmail(data)).pipe(\n map((data) => this.mainService.mapData<{ status: boolean }>(data as any)),\n )\n }\n\n updateUser(\n data: Partial<{\n name: string\n image: string\n username: string\n displayUsername: string\n [key: string]: any\n }>,\n ): Observable<{ status: boolean }> {\n return defer(() => this.client.updateUser(data)).pipe(\n map((data) => this.mainService.mapData<{ status: boolean }>(data as any)),\n )\n }\n\n deleteUser(data?: { callbackURL?: string; token?: string; password?: string }): Observable<null> {\n return defer(() => this.client.deleteUser(data)).pipe(\n map((data) => this.mainService.mapData(data as any)),\n switchMap(() => this.sessionState$.pipe(filter((s) => s === null))),\n first(),\n )\n }\n}\n","import { inject, Injectable, type ResourceRef } from '@angular/core'\nimport { defer, map, Observable } from 'rxjs'\nimport { MainService } from './main.service'\nimport { Session } from '../models'\n\n@Injectable({ providedIn: 'root' })\nexport class SessionService {\n private readonly mainService = inject(MainService)\n\n private readonly client = this.mainService.authClient\n\n listSessions(): Observable<Session[]> {\n return this.mainService.read<Session[]>(() => this.client.listSessions())\n }\n\n sessionsResource(): ResourceRef<Session[] | undefined> {\n return this.mainService.readResource<Session[]>(() => this.client.listSessions())\n }\n\n revokeSession(data: { token: string }): Observable<{ success: boolean }> {\n return defer(() => this.client.revokeSession(data)).pipe(\n map((data) => this.mainService.mapData<{ success: boolean }>(data as any)),\n )\n }\n\n revokeOtherSessions(): Observable<{ success: boolean }> {\n return defer(() => this.client.revokeOtherSessions()).pipe(\n map((data) => this.mainService.mapData<{ success: boolean }>(data as any)),\n )\n }\n\n revokeAllSessions(): Observable<{ success: boolean }> {\n return defer(() => this.client.revokeSessions()).pipe(\n map((data) => this.mainService.mapData<{ success: boolean }>(data as any)),\n )\n }\n}\n","import { inject, Injectable, type ResourceRef } from '@angular/core'\nimport { defer, map, Observable } from 'rxjs'\nimport { MainService } from './main.service'\nimport { Account, Provider } from '../models'\n\n@Injectable({ providedIn: 'root' })\nexport class AccountService {\n private readonly mainService = inject(MainService)\n\n private readonly client = this.mainService.authClient\n\n listAccounts(): Observable<Account[]> {\n return this.mainService.read<Account[]>(() => this.client.listAccounts())\n }\n\n accountsResource(): ResourceRef<Account[] | undefined> {\n return this.mainService.readResource<Account[]>(() => this.client.listAccounts())\n }\n\n linkSocial(data: {\n provider: Provider\n callbackURL?: string\n scopes?: string[]\n idToken?: {\n token: string\n nonce?: string\n accessToken?: string\n refreshToken?: string\n }\n }): Observable<{ url: string; redirect: boolean }> {\n return defer(() => this.client.linkSocial(data)).pipe(\n map((data) => this.mainService.mapData<{ url: string; redirect: boolean }>(data as any)),\n )\n }\n\n unlinkAccount(data: { providerId: Provider; accountId: string }): Observable<{ status: boolean }> {\n return defer(() => this.client.unlinkAccount(data)).pipe(\n map((data) => this.mainService.mapData<{ status: boolean }>(data as any)),\n )\n }\n}\n","export function validatePlugin(client: any, property: string) {\n if (!client) {\n throw new Error('AuthClient is not initialized.')\n }\n\n if (!client[property]) {\n throw new Error(\n `Property '${property}' is not available on authClient. Please ensure the plugin providing this property is included in the plugins array.`,\n )\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer, filter, first, map, Observable, switchMap } from 'rxjs'\nimport { validatePlugin } from '../../utils/validate-plugin'\nimport { MainService } from '../main.service'\nimport { AuthService } from '../auth.service'\nimport { Session, User } from '../../models'\n\n@Injectable({ providedIn: 'root' })\nexport class TwoFactorService {\n private readonly mainService = inject(MainService)\n private readonly authService = inject(AuthService)\n\n twoFactor: any\n\n constructor() {\n const client = this.mainService.authClient as { twoFactor?: any }\n validatePlugin(client, 'twoFactor')\n this.twoFactor = client.twoFactor\n }\n\n enable(data: { password: string; issuer?: string }): Observable<{ totpURI: string; backupCodes: string[] }> {\n return defer(() => this.twoFactor.enable(data)).pipe(\n map((data) =>\n this.mainService.mapData<{\n totpURI: string\n backupCodes: string[]\n }>(data as any),\n ),\n )\n }\n\n disable(data: { password: string }): Observable<{ status: boolean }> {\n return defer(() => this.twoFactor.disable(data)).pipe(\n map((data) => this.mainService.mapData<{ status: boolean }>(data as any)),\n )\n }\n\n getTotpUri(data: { password: string }): Observable<{ totpURI: string }> {\n return defer(() => this.twoFactor.getTotpUri(data)).pipe(\n map((data) => this.mainService.mapData<{ totpURI: string }>(data as any)),\n )\n }\n\n verifyTotp(data: { code: string; trustDevice?: boolean }): Observable<{ status: boolean }> {\n return defer(() => this.twoFactor.verifyTotp(data)).pipe(\n switchMap(() => this.authService.sessionState$.pipe(filter((s) => s !== null))),\n first(),\n map(() => ({ status: true })),\n )\n }\n\n sendOtp(): Observable<{ status: boolean }> {\n return defer(() => this.twoFactor.sendOtp()).pipe(\n map((data) => this.mainService.mapData<{ status: boolean }>(data as any)),\n )\n }\n\n verifyOtp(data: { code: string; trustDevice?: boolean }): Observable<{ status: boolean }> {\n return defer(() => this.twoFactor.verifyOtp(data)).pipe(\n switchMap(() => this.authService.sessionState$.pipe(filter((s) => s !== null))),\n first(),\n map(() => ({ status: true })),\n )\n }\n\n generateBackupCodes(data: { password: string }): Observable<{ status: boolean; backupCodes: string[] }> {\n return defer(() => this.twoFactor.generateBackupCodes(data)).pipe(\n map((data) => this.mainService.mapData<{ status: boolean; backupCodes: string[] }>(data as any)),\n )\n }\n\n verifyBackupCode(data: { code: string; disableSession?: boolean; trustDevice?: boolean }): Observable<{\n user: User\n session: Session\n }> {\n return defer(() => this.twoFactor.verifyBackupCode(data)).pipe(\n map((data) =>\n this.mainService.mapData<{\n user: User\n session: Session\n }>(data as any),\n ),\n )\n }\n}\n","import { inject, Injectable, type ResourceRef } from '@angular/core'\nimport { defer, map, Observable } from 'rxjs'\nimport { MainService } from '../main.service'\nimport { validatePlugin } from '../../utils/validate-plugin'\nimport type { Passkey } from '@better-auth/passkey'\n\n@Injectable({ providedIn: 'root' })\nexport class PasskeyService {\n private readonly mainService = inject(MainService)\n\n passkey: any\n\n constructor() {\n const client = this.mainService.authClient as { passkey?: any }\n validatePlugin(client, 'passkey')\n this.passkey = client.passkey\n }\n\n addPasskey(data: {\n name?: string\n authenticatorAttachment?: AuthenticatorAttachment\n }): Observable<{ passkey: Passkey }> {\n return defer(() => this.passkey.addPasskey(data)).pipe(\n map((data) => this.mainService.mapData<{ passkey: Passkey }>(data as any)),\n )\n }\n\n signIn(data: { email: string; autoFill?: boolean; callbackURL?: string }): Observable<unknown> {\n return defer(() => (this.mainService.authClient.signIn as any).passkey(data))\n }\n\n listUserPasskeys(): Observable<Passkey[]> {\n return this.mainService.read<Passkey[]>(() => this.passkey.listUserPasskeys())\n }\n\n userPasskeysResource(): ResourceRef<Passkey[] | undefined> {\n return this.mainService.readResource<Passkey[]>(() => this.passkey.listUserPasskeys())\n }\n\n deletePasskey(data: { id: string }): Observable<{ status: boolean }> {\n return defer(() => this.passkey.deletePasskey(data)).pipe(\n map((data) => this.mainService.mapData<{ status: boolean }>(data as any)),\n )\n }\n\n updatePasskey(data: { id: string; name: string }): Observable<{ passkey: Passkey }> {\n return defer(() => this.passkey.updatePasskey(data)).pipe(\n map((data) => this.mainService.mapData<{ passkey: Passkey }>(data as any)),\n )\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer, filter, switchMap } from 'rxjs'\nimport { MainService } from '../main.service'\nimport { validatePlugin } from '../../utils/validate-plugin'\nimport { AuthService } from '../auth.service'\n\n@Injectable({ providedIn: 'root' })\nexport class GenericOauthService {\n private readonly mainService = inject(MainService)\n private readonly authService = inject(AuthService)\n\n oauth: any\n\n constructor() {\n const client = this.mainService.authClient as { oauth2?: any }\n validatePlugin(client, 'oauth2')\n this.oauth = client.oauth2\n }\n\n signIn(data: {\n providerId: string\n callbackURL?: string\n errorCallbackURL?: string\n newUserCallbackURL?: string\n disableRedirect?: boolean\n scopes?: string[]\n requestSignUp?: boolean\n }) {\n return defer(() => (this.mainService.authClient.signIn as any).oauth2(data)).pipe(\n switchMap(() => this.authService.sessionState$.pipe(filter((s) => s !== null))),\n )\n }\n\n link(data: { providerId: string; callbackURL: string }) {\n return defer(() => this.oauth.link(data))\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer, filter, switchMap } from 'rxjs'\nimport { validatePlugin } from '../../utils/validate-plugin'\nimport { MainService } from '../main.service'\nimport { AuthService } from '../auth.service'\n\n@Injectable({ providedIn: 'root' })\nexport class EmailOtpService {\n private readonly mainService = inject(MainService)\n private readonly authService = inject(AuthService)\n\n emailOtp: any\n\n constructor() {\n const client = this.mainService.authClient as { emailOtp?: any }\n validatePlugin(client, 'emailOtp')\n this.emailOtp = client.emailOtp\n }\n\n signInEmailOtp(data: { email: string; otp: string }) {\n return defer(() => (this.mainService.authClient.signIn as any).emailOtp(data)).pipe(\n switchMap(() => this.authService.sessionState$.pipe(filter((s) => s !== null))),\n )\n }\n\n sendVerificationOtp(data: { email: string; type: 'sign-in' | 'email-verification' | 'forget-password' }) {\n return defer(() => this.emailOtp.sendVerificationOtp(data))\n }\n\n checkVerificationOtp(data: {\n email: string\n type: 'sign-in' | 'email-verification' | 'forget-password'\n otp: string\n }) {\n return defer(() => this.emailOtp.checkVerificationOtp(data))\n }\n\n verifyEmail(data: { email: string; otp: string }) {\n return defer(() => this.emailOtp.verifyEmail(data))\n }\n\n resetPassword(data: { email: string; otp: string; password: string }) {\n return defer(() => this.emailOtp.resetPassword(data))\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer } from 'rxjs'\nimport { validatePlugin } from '../../utils/validate-plugin'\nimport { MainService } from '../main.service'\n\n@Injectable({ providedIn: 'root' })\nexport class OneTapService {\n private readonly mainService = inject(MainService)\n\n oneTap: any\n\n constructor() {\n const client = this.mainService.authClient as { oneTap?: any }\n validatePlugin(client, 'oneTap')\n this.oneTap = client.oneTap\n }\n\n signIn(data?: {\n fetchOptions?: {\n onSuccess: () => void\n }\n callbackURL?: string\n onPromptNotification?: (notification: any) => void\n }) {\n return defer(() => this.oneTap(data))\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer } from 'rxjs'\nimport { validatePlugin } from '../../utils/validate-plugin'\nimport { MainService } from '../main.service'\n\n@Injectable({ providedIn: 'root' })\nexport class MagicLinkService {\n private readonly mainService = inject(MainService)\n\n magicLink: any\n\n constructor() {\n const client = this.mainService.authClient as { magicLink?: any }\n validatePlugin(client, 'magicLink')\n this.magicLink = client.magicLink\n }\n\n signIn(data: {\n email: string\n name?: string\n callbackURL?: string\n newUserCallbackURL?: string\n errorCallbackURL?: string\n }) {\n return defer(() => (this.mainService.authClient.signIn as any).magicLink(data))\n }\n\n verify(data: { token: string; callbackURL?: string }) {\n return defer(() => this.magicLink.verify(data))\n }\n}\n","export function isEmail(email: string): boolean {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n return emailRegex.test(email)\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer, filter, map, Observable, switchMap } from 'rxjs'\nimport { MainService } from '../main.service'\nimport { AuthService } from '../auth.service'\nimport { isEmail } from '../../utils/email.util'\nimport { Session, User } from '../../models'\nimport { HttpClient } from '@angular/common/http'\n\n@Injectable({ providedIn: 'root' })\nexport class UsernameService {\n private readonly http = inject(HttpClient)\n\n private readonly mainService = inject(MainService)\n private readonly authService = inject(AuthService)\n\n username: any = this.mainService.authClient\n\n /**\n * pass either email or username to sign in. Needs username plugin enabled to use username.\n * @param data : { email?: string; username?: string; password: string; rememberMe?: boolean }\n */\n signIn(data: { login: string; password: string; rememberMe?: boolean }): Observable<{\n user: User\n session: Session\n }> {\n if (isEmail(data.login)) {\n return this.authService.signInEmail({ email: data.login, password: data.password, rememberMe: data.rememberMe })\n } else {\n return this.signInUsername({ username: data.login, password: data.password, rememberMe: data.rememberMe })\n }\n }\n\n signInUsername(data: { username: string; password: string; rememberMe?: boolean }): Observable<{\n user: User\n session: Session\n }> {\n return defer(() => (this.username as any).signIn.username(data)).pipe(\n switchMap(() => this.authService.sessionState$.pipe(filter((s) => s !== null))),\n )\n }\n\n isUsernameAvailable(data: { username: string }): Observable<boolean> {\n return this.http\n .post<{ available: boolean }>(`${this.mainService.url}/is-username-available`, data)\n .pipe(map((res) => res.available))\n }\n}\n","import { inject, Injectable, type ResourceRef } from '@angular/core'\nimport { defer, map, Observable } from 'rxjs'\nimport { validatePlugin } from '../../utils/validate-plugin'\nimport { MainService } from '../main.service'\nimport { Session, User } from '../../models'\n\ntype ListUsersParams = {\n searchValue?: string\n searchField?: 'email' | 'name'\n searchOperator?: 'contains' | 'start_with' | 'end_with'\n limit?: number\n offset?: number\n sortBy?: string\n sortDirection?: 'asc' | 'desc'\n filterField?: string\n filterValue?: string | number | boolean\n filterOperator?: 'eq' | 'ne' | 'lt' | 'lte' | 'gt' | 'gte'\n}\n\ntype ListUsersResult = { users: User[]; total: number; limit: number; offset: number }\n\n@Injectable({ providedIn: 'root' })\nexport class AdminService {\n private readonly mainService = inject(MainService)\n\n admin: any\n\n constructor() {\n const client = this.mainService.authClient as { admin?: any }\n validatePlugin(client, 'admin')\n this.admin = client.admin\n }\n\n setRole(data: { userId: string; role: string | string[] }): Observable<{ user: User }> {\n return defer(() => this.admin.setRole(data)).pipe(\n map((data) => this.mainService.mapData<{ user: User }>(data as any)),\n )\n }\n\n createUser(data: {\n email: string\n password: string\n name: string\n role?: string | string[]\n data?: Record<string, any>\n }): Observable<{ user: User }> {\n return defer(() => this.admin.createUser(data)).pipe(\n map((data) => this.mainService.mapData<{ user: User }>(data as any)),\n )\n }\n\n updateUser(data: { userId: string; data: Partial<User> }): Observable<{ user: User }> {\n return defer(() => this.admin.updateUser(data)).pipe(\n map((data: any) => this.mainService.mapData<{ user: User }>(data)),\n )\n }\n\n listUsers(data: ListUsersParams): Observable<ListUsersResult> {\n return this.mainService.read<ListUsersResult>(() => this.admin.listUsers(data))\n }\n\n usersResource(params: () => ListUsersParams): ResourceRef<ListUsersResult | undefined> {\n return this.mainService.readResourceWithParams<ListUsersResult, ListUsersParams>(params, (data) =>\n this.admin.listUsers(data),\n )\n }\n\n listUserSessions(data: { userId: string }): Observable<{ sessions: Session[] }> {\n return this.mainService.read<{ sessions: Session[] }>(() => this.admin.listUserSessions(data))\n }\n\n userSessionsResource(params: () => { userId: string }): ResourceRef<{ sessions: Session[] } | undefined> {\n return this.mainService.readResourceWithParams<{ sessions: Session[] }, { userId: string }>(params, (data) =>\n this.admin.listUserSessions(data),\n )\n }\n\n unbanUser(data: { userId: string }): Observable<{ user: User }> {\n return defer(() => this.admin.unbanUser(data)).pipe(\n map((data: any) => this.mainService.mapData<{ user: User }>(data)),\n )\n }\n\n banUser(data: { userId: string; banReason?: string; banExpiresIn?: number }): Observable<{ user: User }> {\n return defer(() => this.admin.banUser(data)).pipe(\n map((data: any) => this.mainService.mapData<{ user: User }>(data)),\n )\n }\n\n impersonateUser(data: { userId: string }): Observable<{ session: Session; user: User }> {\n return defer(() => this.admin.impersonateUser(data)).pipe(\n map((data: any) => this.mainService.mapData<{ session: Session; user: User }>(data)),\n )\n }\n\n stopImpersonating(): Observable<unknown> {\n return defer(() => this.admin.stopImpersonating())\n }\n\n revokeUserSession(data: { sessionToken: string }): Observable<{ success: boolean }> {\n return defer(() => this.admin.revokeUserSession(data)).pipe(\n map((data: any) => this.mainService.mapData<{ success: boolean }>(data)),\n )\n }\n\n revokeUserSessions(data: { userId: string }): Observable<{ success: boolean }> {\n return defer(() => this.admin.revokeUserSessions(data)).pipe(\n map((data: any) => this.mainService.mapData<{ success: boolean }>(data)),\n )\n }\n\n removeUser(data: { userId: string }): Observable<{ success: boolean }> {\n return defer(() => this.admin.removeUser(data)).pipe(\n map((data: any) => this.mainService.mapData<{ success: boolean }>(data)),\n )\n }\n\n setUserPassword(data: { userId: string; newPassword: string }): Observable<{ success: boolean }> {\n return defer(() => this.admin.setUserPassword(data)).pipe(\n map((data: any) => this.mainService.mapData<{ success: boolean }>(data)),\n )\n }\n\n hasPermission(data: { userId?: string; permissions: Record<string, string[]> }) {\n return defer(() => this.admin.hasPermission(data))\n }\n\n checkRolePermission(data: { role: string; permissions: Record<string, string[]> }) {\n return defer(() => this.admin.checkRolePermission(data))\n }\n}\n","import { inject, Injectable, type ResourceRef } from '@angular/core'\nimport { defer, map, Observable } from 'rxjs'\nimport { validatePlugin } from '../../utils/validate-plugin'\nimport { MainService } from '../main.service'\nimport type { Organization, Member, Invitation } from 'better-auth/plugins/organization'\n\ntype FullOrganizationParams = {\n organizationId?: string\n organizationSlug?: string\n membersLimit?: number\n}\n\ntype InvitationDetails = {\n organizationName: string\n organizationSlug: string\n inviterEmail: string\n} & Invitation\n\n@Injectable({ providedIn: 'root' })\nexport class OrganizationService {\n private readonly mainService = inject(MainService)\n\n organization: any\n\n constructor() {\n const client = this.mainService.authClient as { organization?: any }\n validatePlugin(client, 'organization')\n this.organization = client.organization\n }\n\n create(data: {\n name: string\n slug: string\n logo?: string\n metadata?: Record<string, any>\n keepCurrentActiveOrganization?: boolean\n }): Observable<Organization> {\n return defer(() => this.organization.create(data)).pipe(\n map((data) => this.mainService.mapData<Organization>(data as any)),\n )\n }\n\n checkSlug(data: { slug: string }): Observable<unknown> {\n return defer(() => this.organization.checkSlug(data))\n }\n\n list(): Observable<Organization[]> {\n return this.mainService.read<Organization[]>(() => this.organization.list())\n }\n\n organizationsResource(): ResourceRef<Organization[] | undefined> {\n return this.mainService.readResource<Organization[]>(() => this.organization.list())\n }\n\n setActive(data: { organizationId?: string; organizationSlug?: string }): Observable<Organization> {\n return defer(() => this.organization.setActive(data)).pipe(\n map((data) => this.mainService.mapData<Organization>(data as any)),\n )\n }\n\n getFullOrganization(data: FullOrganizationParams): Observable<Organization> {\n return defer(() => this.organization.getFullOrganization(data)).pipe(\n map((data) => this.mainService.mapData<Organization>(data as any)),\n )\n }\n\n fullOrganizationResource(params: () => FullOrganizationParams): ResourceRef<Organization | undefined> {\n return this.mainService.readResourceWithParams<Organization, FullOrganizationParams>(params, (data) =>\n this.organization.getFullOrganization(data),\n )\n }\n\n update(data: {\n data: {\n name?: string\n slug?: string\n logo?: string\n metadata?: Record<string, any>\n }\n organizationId?: string\n }): Observable<Organization> {\n return defer(() => this.organization.update(data)).pipe(\n map((data) => this.mainService.mapData<Organization>(data as any)),\n )\n }\n\n delete(data: { organizationId: string }): Observable<void> {\n return defer(() => this.organization.delete(data)).pipe(map((data) => this.mainService.mapData<void>(data as any)))\n }\n\n inviteMember(data: {\n email: string\n role: string | string[]\n organizationId?: string\n resend?: boolean\n teamId?: string\n }): Observable<Invitation> {\n return defer(() => this.organization.inviteMember(data)).pipe(\n map((data) => this.mainService.mapData<Invitation>(data as any)),\n )\n }\n\n acceptInvitation(data: { invitationId: string }): Observable<{ invitation: Invitation; member: Member }> {\n return defer(() => this.organization.acceptInvitation(data)).pipe(\n map((data) => this.mainService.mapData<{ invitation: Invitation; member: Member }>(data as any)),\n )\n }\n\n cancelInvitation(data: { invitationId: string }): Observable<void> {\n return defer(() => this.organization.cancelInvitation(data)).pipe(\n map((data) => this.mainService.mapData<void>(data as any)),\n )\n }\n\n rejectInvitation(data: { invitationId: string }): Observable<{ invitation: Invitation; member: null }> {\n return defer(() => this.organization.rejectInvitation(data)).pipe(\n map((data) => this.mainService.mapData<{ invitation: Invitation; member: null }>(data as any)),\n )\n }\n\n getInvitation(data: { id: string }): Observable<InvitationDetails> {\n return defer(() => this.organization.getInvitation(data)).pipe(\n map((data) => this.mainService.mapData<InvitationDetails>(data as any)),\n )\n }\n\n invitationResource(params: () => { id: string }): ResourceRef<InvitationDetails | undefined> {\n return this.mainService.readResourceWithParams<InvitationDetails, { id: string }>(params, (data) =>\n this.organization.getInvitation(data),\n )\n }\n\n listInvitations(data: { organizationId?: string }): Observable<Invitation[]> {\n return this.mainService.read<Invitation[]>(() => this.organization.listInvitations(data))\n }\n\n invitationsResource(params: () => { organizationId?: string }): ResourceRef<Invitation[] | undefined> {\n return this.mainService.readResourceWithParams<Invitation[], { organizationId?: string }>(params, (data) =>\n this.organization.listInvitations(data),\n )\n }\n\n listUserInvitations(): Observable<Invitation[]> {\n return this.mainService.read<Invitation[]>(() => this.organization.listUserInvitations())\n }\n\n userInvitationsResource(): ResourceRef<Invitation[] | undefined> {\n return this.mainService.readResource<Invitation[]>(() => this.organization.listUserInvitations())\n }\n\n listMembers(\n data: {\n organizationId?: string\n limit?: number\n offset?: number\n sortBy?: string\n sortDirection?: 'asc' | 'desc'\n filterField?: string\n filterOperator?: 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'nin' | 'contains'\n filterValue?: string\n } = {},\n ) {\n return defer(() => this.organization.listMembers(data))\n }\n\n removeMember(data: { memberIdOrEmail: string; organizationId?: string }): Observable<{ member: Member }> {\n return defer(() => this.organization.removeMember(data)).pipe(\n map((data) => this.mainService.mapData<{ member: Member }>(data as any)),\n )\n }\n\n updateMemberRoles(data: { memberId: string; role: string | string[]; organizationId?: string }) {\n return defer(() => this.organization.updateMemberRoles(data))\n }\n\n getActiveMember(): Observable<Member> {\n return this.mainService.read<Member>(() => this.organization.getActiveMember())\n }\n\n activeMemberResource(): ResourceRef<Member | undefined> {\n return this.mainService.readResource<Member>(() => this.organization.getActiveMember())\n }\n\n leave(data: { organizationId?: string }): Observable<void> {\n return defer(() => this.organization.leave(data)).pipe(map((data) => this.mainService.mapData<void>(data as any)))\n }\n\n createTeam(data: { name: string; organizationId?: string }) {\n return defer(() => this.organization.createTeam(data))\n }\n\n listTeams(data: { organizationId?: string }) {\n return defer(() => this.organization.listTeams(data))\n }\n\n updateTeam(data: {\n teamId: string\n data: { name?: string; organizationId?: string; createdAt?: Date; updatedAt?: Date }\n }) {\n return defer(() => this.organization.updateTeam(data))\n }\n\n removeTeam(data: { teamId: string; organizationId?: string }) {\n return defer(() => this.organization.removeTeam(data))\n }\n\n setActiveTeam(data: { teamId?: string }) {\n return defer(() => this.organization.setActiveTeam(data))\n }\n\n listUsersTeams() {\n return defer(() => this.organization.listUsersTeams())\n }\n\n listTeamMembers(data: { teamId: string }) {\n return defer(() => this.organization.listTeamMembers(data))\n }\n\n addTeamMember(data: { teamId: string; userId: string }) {\n return defer(() => this.organization.addTeamMember(data))\n }\n\n removeTeamMember(data: { teamId: string; userId: string }) {\n return defer(() => this.organization.removeTeamMember(data))\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer, filter, map, Observable, switchMap } from 'rxjs'\nimport { validatePlugin } from '../../utils/validate-plugin'\nimport { MainService } from '../main.service'\nimport { AuthService } from '../auth.service'\n\nexport interface SiweNonceResult {\n nonce: string\n}\n\nexport type SiweNonceRequest = {\n walletAddress?: string\n address?: string\n chainId?: number\n}\n\nexport interface SiweVerifyResult {\n token: string\n success: boolean\n user: {\n id: string\n walletAddress: string\n chainId: number\n }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class SiweService {\n private readonly mainService = inject(MainService)\n private readonly authService = inject(AuthService)\n\n siwe: any\n\n constructor() {\n const client = this.mainService.authClient as { siwe?: any }\n validatePlugin(client, 'siwe')\n this.siwe = client.siwe\n }\n\n /**\n * Fetches a nonce for the given wallet address to be included in the SIWE message.\n * @param data - The wallet address and optional chain ID\n */\n getNonce(data: SiweNonceRequest): Observable<SiweNonceResult> {\n return defer(() => this.siwe.getNonce(data)).pipe(\n map((res) => this.mainService.mapData<SiweNonceResult>(res as any)),\n )\n }\n\n /**\n * Verifies a signed SIWE message and signs the user in.\n * On success, waits for the session to be established before emitting.\n * @param data - The signed message, signature, wallet address, optional chain ID and optional email\n */\n verifyMessage(data: {\n message: string\n signature: string\n walletAddress: string\n chainId?: number\n email?: string\n }): Observable<SiweVerifyResult> {\n return defer(() => this.siwe.verifySiweMessage(data)).pipe(\n map((res) => this.mainService.mapData<SiweVerifyResult>(res as any)),\n switchMap((result) =>\n this.authService.sessionState$.pipe(\n filter((s) => s !== null),\n map(() => result),\n ),\n ),\n )\n }\n}\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core'\nimport { type BetterAuthClientOptions } from 'better-auth/client'\nimport { AuthService } from './services'\n\nexport const BETTER_AUTH_CONFIG_TOKEN = new InjectionToken<BetterAuthClientOptions>('BETTER_AUTH_CONFIG')\n\nconst DEFAULT_CONFIG: Partial<BetterAuthClientOptions> = {}\n\nexport function provideBetterAuth(options: BetterAuthClientOptions): EnvironmentProviders {\n const config: BetterAuthClientOptions = { ...DEFAULT_CONFIG, ...options }\n\n // if baseURL is not a url, it might be because of a proxy in development\n if (!config.baseURL?.startsWith('http')) {\n config.baseURL = window.location.origin\n }\n\n return makeEnvironmentProviders([{ provide: BETTER_AUTH_CONFIG_TOKEN, useValue: config }, AuthService])\n}\n","import { inject } from '@angular/core'\nimport { Router, type UrlTree } from '@angular/router'\nimport { catchError, map, of, type Observable } from 'rxjs'\nimport { AuthService } from '../services'\nimport { OrganizationService } from '../services/plugins/organization.service'\n\ntype GuardRedirect = string[] | UrlTree\n\nconst normalizeRoles = (role: unknown): string[] => {\n if (Array.isArray(role)) {\n return role.map((value) => String(value).trim()).filter((value) => value.length > 0)\n }\n\n if (typeof role === 'string') {\n return role\n .split(',')\n .map((value) => value.trim())\n .filter((value) => value.length > 0)\n }\n\n return []\n}\n\nconst redirectResult = (router: Router, redirectTo: GuardRedirect): UrlTree => {\n if (Array.isArray(redirectTo)) {\n return router.createUrlTree(redirectTo)\n }\n\n return redirectTo\n}\n\n/**\n * Redirects unauthorized users to the specified commands (route).\n */\nexport function redirectUnauthorizedTo(commands: string[] = ['/login']): () => Observable<UrlTree | boolean> {\n return () => {\n const auth = inject(AuthService)\n const router = inject(Router)\n return auth.isLoggedIn$().pipe(map((isLoggedIn) => (isLoggedIn ? true : router.createUrlTree(commands))))\n }\n}\n\n/**\n * Redirects logged-in users to the specified commands (route).\n */\nexport function redirectLoggedInTo(commands: string[] = ['/']): () => Observable<UrlTree | boolean> {\n return () => {\n const auth = inject(AuthService)\n const router = inject(Router)\n return auth.isLoggedIn$().pipe(map((isLoggedIn) => (isLoggedIn ? router.createUrlTree(commands) : true)))\n }\n}\n\n/**\n * Allows access only to users with at least one of the specified roles.\n * Redirects unauthorized users to the specified commands (route).\n */\nexport function hasRole(\n requiredRoles: string[],\n redirectTo: string[] = ['/unauthorized'],\n): () => Observable<UrlTree | boolean> {\n return () => {\n const auth = inject(AuthService)\n const router = inject(Router)\n\n return auth.sessionState$.pipe(\n map((session) => {\n if (!session || !session.user) {\n return router.createUrlTree(redirectTo)\n }\n\n const roles = normalizeRoles((session.user as { role?: unknown }).role)\n if (roles.some((role) => requiredRoles.includes(role))) {\n return true\n }\n\n return router.createUrlTree(redirectTo)\n }),\n )\n }\n}\n\n/**\n * Allows access only when an active organization member exists.\n * Redirects users without an active organization to the specified commands or UrlTree.\n */\nexport function hasActiveOrganization(\n redirectTo: GuardRedirect = ['/unauthorized'],\n): () => Observable<UrlTree | boolean> {\n return () => {\n const organization = inject(OrganizationService)\n const router = inject(Router)\n\n return organization.getActiveMember().pipe(\n map((member) => (member ? true : redirectResult(router, redirectTo))),\n catchError(() => of(redirectResult(router, redirectTo))),\n )\n }\n}\n\n/**\n * Allows access only to active organization members with at least one of the specified roles.\n * Redirects users without an active organization, active member, or matching role.\n */\nexport function hasOrganizationRole(\n requiredRoles: string[],\n redirectTo: GuardRedirect = ['/unauthorized'],\n): () => Observable<UrlTree | boolean> {\n return () => {\n const organization = inject(OrganizationService)\n const router = inject(Router)\n\n return organization.getActiveMember().pipe(\n map((member) => {\n if (!member) {\n return redirectResult(router, redirectTo)\n }\n\n const roles = normalizeRoles((member as { role?: unknown }).role)\n if (roles.some((role) => requiredRoles.includes(role))) {\n return true\n }\n\n return redirectResult(router, redirectTo)\n }),\n catchError(() => of(redirectResult(router, redirectTo))),\n )\n }\n}\n","import { CanActivateFn, UrlTree } from '@angular/router'\nimport { Observable } from 'rxjs'\n\nexport function canActivate(\n pipe: () => Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree,\n): {\n canActivate: [CanActivateFn]\n} {\n return {\n canActivate: [() => pipe()],\n }\n}\n","import { AbstractControl, AsyncValidatorFn } from '@angular/forms'\nimport { catchError, map, of, switchMap, timer } from 'rxjs'\nimport { UsernameService } from '../services'\n\nexport function usernameAvailableValidator(\n usernameService: UsernameService,\n initialUsername?: string,\n): AsyncValidatorFn {\n let lastValidationValue: string | null = null\n\n return (control: AbstractControl): any => {\n const username = control.value?.trim()\n\n if (!username || username === initialUsername) {\n lastValidationValue = null\n return of(null)\n }\n\n // If the value is the same as the last one we checked, don't check again\n if (username === lastValidationValue) {\n return of(null)\n }\n\n lastValidationValue = username\n\n return timer(500).pipe(\n switchMap(() => {\n const currentValue = control.value?.trim()\n\n // If the value has changed since the timer started, don't validate\n if (currentValue !== username) {\n return of(null)\n }\n\n if (!currentValue || currentValue === initialUsername) {\n return of(null)\n }\n\n return usernameService.isUsernameAvailable({ username: currentValue }).pipe(\n map((available) => (available ? null : { usernameTaken: true })),\n catchError(() => of(null)),\n )\n }),\n )\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -724,6 +724,7 @@ declare class SiweService {
|
|
|
724
724
|
static ɵprov: i0.ɵɵInjectableDeclaration<SiweService>;
|
|
725
725
|
}
|
|
726
726
|
|
|
727
|
+
type GuardRedirect = string[] | UrlTree;
|
|
727
728
|
/**
|
|
728
729
|
* Redirects unauthorized users to the specified commands (route).
|
|
729
730
|
*/
|
|
@@ -737,6 +738,16 @@ declare function redirectLoggedInTo(commands?: string[]): () => Observable<UrlTr
|
|
|
737
738
|
* Redirects unauthorized users to the specified commands (route).
|
|
738
739
|
*/
|
|
739
740
|
declare function hasRole(requiredRoles: string[], redirectTo?: string[]): () => Observable<UrlTree | boolean>;
|
|
741
|
+
/**
|
|
742
|
+
* Allows access only when an active organization member exists.
|
|
743
|
+
* Redirects users without an active organization to the specified commands or UrlTree.
|
|
744
|
+
*/
|
|
745
|
+
declare function hasActiveOrganization(redirectTo?: GuardRedirect): () => Observable<UrlTree | boolean>;
|
|
746
|
+
/**
|
|
747
|
+
* Allows access only to active organization members with at least one of the specified roles.
|
|
748
|
+
* Redirects users without an active organization, active member, or matching role.
|
|
749
|
+
*/
|
|
750
|
+
declare function hasOrganizationRole(requiredRoles: string[], redirectTo?: GuardRedirect): () => Observable<UrlTree | boolean>;
|
|
740
751
|
|
|
741
752
|
declare function canActivate(pipe: () => Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree): {
|
|
742
753
|
canActivate: [CanActivateFn];
|
|
@@ -744,5 +755,5 @@ declare function canActivate(pipe: () => Observable<boolean | UrlTree> | Promise
|
|
|
744
755
|
|
|
745
756
|
declare function usernameAvailableValidator(usernameService: UsernameService, initialUsername?: string): AsyncValidatorFn;
|
|
746
757
|
|
|
747
|
-
export { AccountService, AdminService, AuthService, BETTER_AUTH_CONFIG_TOKEN, EmailOtpService, GenericOauthService, MagicLinkService, OneTapService, OrganizationService, PasskeyService, SessionService, SiweService, TwoFactorService, UsernameService, canActivate, hasRole, provideBetterAuth, redirectLoggedInTo, redirectUnauthorizedTo, usernameAvailableValidator };
|
|
758
|
+
export { AccountService, AdminService, AuthService, BETTER_AUTH_CONFIG_TOKEN, EmailOtpService, GenericOauthService, MagicLinkService, OneTapService, OrganizationService, PasskeyService, SessionService, SiweService, TwoFactorService, UsernameService, canActivate, hasActiveOrganization, hasOrganizationRole, hasRole, provideBetterAuth, redirectLoggedInTo, redirectUnauthorizedTo, usernameAvailableValidator };
|
|
748
759
|
export type { Account, Provider, Session, SiweNonceRequest, SiweNonceResult, SiweVerifyResult, User };
|