ngx-better-auth 0.3.0 → 0.4.1
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 +25 -9
- package/fesm2022/ngx-better-auth.mjs +16 -24
- package/fesm2022/ngx-better-auth.mjs.map +1 -1
- package/index.d.ts +91 -84
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
# ngx-better-auth
|
|
2
2
|
|
|
3
|
-

|
|
4
|
+

|
|
5
|
+

|
|
6
|
+

|
|
7
|
+

|
|
8
|
+
|
|
9
|
+

|
|
10
|
+

|
|
8
11
|
|
|
9
12
|
An **Angular 20+ integration for [Better Auth](https://github.com/better-auth/better-auth)**.
|
|
10
13
|
Provides reactive session handling with **signals**, clean **DI provider setup** with **observables**, and modern **guards**.
|
|
@@ -48,11 +51,11 @@ export const appConfig: ApplicationConfig = {
|
|
|
48
51
|
|
|
49
52
|
You can inject different services depending on your needs:
|
|
50
53
|
|
|
51
|
-
### Global services
|
|
54
|
+
### Global services
|
|
55
|
+
- `AuthService`
|
|
52
56
|
- `SessionService`
|
|
53
|
-
- `SignInService`
|
|
54
57
|
|
|
55
|
-
### Plugin services
|
|
58
|
+
### Plugin services
|
|
56
59
|
- `AdminService`
|
|
57
60
|
- `OrganizationService`
|
|
58
61
|
|
|
@@ -67,7 +70,20 @@ You can inject different services depending on your needs:
|
|
|
67
70
|
import { AuthService } from "ngx-better-auth"
|
|
68
71
|
import { inject } from "@angular/core"
|
|
69
72
|
|
|
70
|
-
|
|
73
|
+
@Component({
|
|
74
|
+
// ...
|
|
75
|
+
})
|
|
76
|
+
export class MyComponent {
|
|
77
|
+
private readonly authService = inject(AuthService)
|
|
78
|
+
|
|
79
|
+
get isLoggedIn() {
|
|
80
|
+
return this.authService.isLoggedIn()
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
get userName() {
|
|
84
|
+
return this.authService.session()?.user.name
|
|
85
|
+
}
|
|
86
|
+
}
|
|
71
87
|
```
|
|
72
88
|
|
|
73
89
|
## 🛡️ Guards
|
|
@@ -39,7 +39,7 @@ class AuthService {
|
|
|
39
39
|
* Ideal for route guards.
|
|
40
40
|
* @returns An Observable that emits true for an active session, and false otherwise.
|
|
41
41
|
*/
|
|
42
|
-
|
|
42
|
+
isLoggedIn$() {
|
|
43
43
|
return this.sessionState$.pipe(map((session) => !!session?.session));
|
|
44
44
|
}
|
|
45
45
|
session$() {
|
|
@@ -59,6 +59,18 @@ class AuthService {
|
|
|
59
59
|
this.session.set(session.data);
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
|
+
signInEmail(data) {
|
|
63
|
+
return defer(() => this.authClient.signIn.email(data));
|
|
64
|
+
}
|
|
65
|
+
signUpEmail(data) {
|
|
66
|
+
return defer(() => this.authClient.signUp.email(data));
|
|
67
|
+
}
|
|
68
|
+
signInProvider(provider) {
|
|
69
|
+
return defer(() => this.authClient.signIn.social({ provider }));
|
|
70
|
+
}
|
|
71
|
+
signOut() {
|
|
72
|
+
return defer(() => this.authClient.signOut());
|
|
73
|
+
}
|
|
62
74
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
63
75
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: AuthService, providedIn: 'root' });
|
|
64
76
|
}
|
|
@@ -172,26 +184,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
|
|
|
172
184
|
args: [{ providedIn: 'root' }]
|
|
173
185
|
}] });
|
|
174
186
|
|
|
175
|
-
class SignInService {
|
|
176
|
-
authService = inject(AuthService);
|
|
177
|
-
client = this.authService.authClient;
|
|
178
|
-
signInEmail(data) {
|
|
179
|
-
return defer(() => this.client.signIn.email(data));
|
|
180
|
-
}
|
|
181
|
-
signUpEmail(data) {
|
|
182
|
-
return defer(() => this.client.signUp.email(data));
|
|
183
|
-
}
|
|
184
|
-
signInProvider(provider) {
|
|
185
|
-
return defer(() => this.client.signIn.social({ provider }));
|
|
186
|
-
}
|
|
187
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: SignInService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
188
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: SignInService, providedIn: 'root' });
|
|
189
|
-
}
|
|
190
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: SignInService, decorators: [{
|
|
191
|
-
type: Injectable,
|
|
192
|
-
args: [{ providedIn: 'root' }]
|
|
193
|
-
}] });
|
|
194
|
-
|
|
195
187
|
const BETTER_AUTH_CONFIG_TOKEN = new InjectionToken('BETTER_AUTH_CONFIG');
|
|
196
188
|
const DEFAULT_CONFIG = {};
|
|
197
189
|
function provideBetterAuth(options) {
|
|
@@ -210,7 +202,7 @@ function redirectUnauthorizedTo(commands = ['/login']) {
|
|
|
210
202
|
return () => {
|
|
211
203
|
const auth = inject(AuthService);
|
|
212
204
|
const router = inject(Router);
|
|
213
|
-
return auth.
|
|
205
|
+
return auth.isLoggedIn$().pipe(map((isLoggedIn) => (isLoggedIn ? true : router.createUrlTree(commands))));
|
|
214
206
|
};
|
|
215
207
|
}
|
|
216
208
|
/**
|
|
@@ -220,7 +212,7 @@ function redirectLoggedInTo(commands = ['/']) {
|
|
|
220
212
|
return () => {
|
|
221
213
|
const auth = inject(AuthService);
|
|
222
214
|
const router = inject(Router);
|
|
223
|
-
return auth.
|
|
215
|
+
return auth.isLoggedIn$().pipe(map((isLoggedIn) => (isLoggedIn ? router.createUrlTree(commands) : true)));
|
|
224
216
|
};
|
|
225
217
|
}
|
|
226
218
|
/**
|
|
@@ -261,5 +253,5 @@ function canActivate(pipe) {
|
|
|
261
253
|
* Generated bundle index. Do not edit.
|
|
262
254
|
*/
|
|
263
255
|
|
|
264
|
-
export { AdminService, AuthService, BETTER_AUTH_CONFIG_TOKEN, OrganizationService, SessionService,
|
|
256
|
+
export { AdminService, AuthService, BETTER_AUTH_CONFIG_TOKEN, OrganizationService, SessionService, canActivate, hasRole, provideBetterAuth, redirectLoggedInTo, redirectUnauthorizedTo };
|
|
265
257
|
//# sourceMappingURL=ngx-better-auth.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-better-auth.mjs","sources":["../../../src/lib/services/auth.service.ts","../../../src/lib/utils/validate-plugin.ts","../../../src/lib/services/admin.service.ts","../../../src/lib/services/organization.service.ts","../../../src/lib/services/session.service.ts","../../../src/lib/services/sign-in.service.ts","../../../src/lib/providers.ts","../../../src/lib/guards/auth-guard.utils.ts","../../../src/lib/guards/auth-guard.factory.ts","../../../src/ngx-better-auth.ts"],"sourcesContent":["import { computed, inject, Injectable, signal } from '@angular/core'\nimport { BETTER_AUTH_CONFIG_TOKEN } from '../providers'\nimport { BetterFetchError, createAuthClient } from 'better-auth/client'\nimport { AuthSession } from '../models'\nimport { filter, map, Observable, shareReplay } from 'rxjs'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService {\n private readonly config = inject(BETTER_AUTH_CONFIG_TOKEN)\n\n readonly authClient = createAuthClient({\n ...this.config,\n })\n\n /**\n * Current authenticated session\n */\n readonly session = signal<AuthSession | 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<AuthSession | null>\n\n constructor() {\n this.session$()\n\n const useSession$ = new Observable<{\n data: AuthSession | null\n error: BetterFetchError | null\n isPending: boolean\n }>((subscriber) => {\n this.authClient.useSession.subscribe((value) => subscriber.next(value))\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 isAuthenticated(): Observable<boolean> {\n return this.sessionState$.pipe(map((session) => !!session?.session))\n }\n\n private session$() {\n this.authClient.useSession.subscribe((session) => {\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","export function validateAdminPlugin(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 } from 'rxjs'\nimport { AuthService } from './auth.service'\nimport { validateAdminPlugin } from '../utils/validate-plugin'\n\n@Injectable({ providedIn: 'root' })\nexport class AdminService {\n private readonly authService = inject(AuthService)\n\n admin: any\n\n constructor() {\n const client = this.authService.authClient as { admin?: any }\n validateAdminPlugin(client, 'admin')\n this.admin = client.admin\n }\n\n setRole(data: { userId: string; role: any }) {\n return defer(() => this.admin.setRole(data))\n }\n\n setUserPassword(data: { userId: string; newPassword: string }) {\n return defer(() => this.admin.setUserPassword(data))\n }\n\n banUser(data: { userId: string; banReason?: string; banExpiresIn?: number }) {\n return defer(() => this.admin.banUser(data))\n }\n\n unbanUser(data: { userId: string }) {\n return defer(() => this.admin.unbanUser(data))\n }\n\n listUserSessions(data: { userId: string }) {\n return defer(() => this.admin.listUserSessions(data))\n }\n\n revokeUserSession(data: { sessionToken: string }) {\n return defer(() => this.admin.revokeUserSession(data))\n }\n\n revokeUserSessions(data: { userId: string }) {\n return defer(() => this.admin.revokeUserSessions(data))\n }\n\n impersonateUser(data: { userId: string }) {\n return defer(() => this.admin.impersonateUser(data))\n }\n\n stopImpersonating() {\n return defer(() => this.admin.stopImpersonating())\n }\n\n removeUser(data: { userId: string }) {\n return defer(() => this.admin.removeUser(data))\n }\n\n hasPermission(data: { userId?: string; permission?: any; permissions?: any }) {\n return defer(() => this.admin.hasPermission(data))\n }\n\n checkRolePermission(data: { role: any; permission: any }) {\n return this.admin.checkRolePermission(data)\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer } from 'rxjs'\nimport { AuthService } from './auth.service'\nimport { validateAdminPlugin } from '../utils/validate-plugin'\n\n@Injectable({ providedIn: 'root' })\nexport class OrganizationService {\n private readonly authService = inject(AuthService)\n\n organization: any\n\n constructor() {\n const client = this.authService.authClient as { organization?: any }\n validateAdminPlugin(client, 'organization')\n this.organization = client.organization\n }\n\n createOrganization(data: { name: string; slug: string }) {\n return defer(() => this.organization.create(data))\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { AuthService } from './auth.service'\nimport { defer } from 'rxjs'\n\n@Injectable({ providedIn: 'root' })\nexport class SessionService {\n private readonly authService = inject(AuthService)\n\n private readonly client = this.authService.authClient\n\n listSessions() {\n return defer(() => this.client.listSessions())\n }\n\n revokeSession(sessionToken: string) {\n return defer(() => this.client.revokeSession({ token: sessionToken }))\n }\n\n revokeOtherSessions() {\n return defer(() => this.client.revokeOtherSessions())\n }\n\n revokeAllSessions() {\n return defer(() => this.client.revokeSessions())\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer } from 'rxjs'\nimport { AuthService } from './auth.service'\nimport { Provider } from '../models'\n\n@Injectable({ providedIn: 'root' })\nexport class SignInService {\n private readonly authService = inject(AuthService)\n\n private readonly client = this.authService.authClient\n\n signInEmail(data: { email: string; password: string; rememberMe?: boolean }) {\n return defer(() => this.client.signIn.email(data))\n }\n\n signUpEmail(data: { name: string; email: string; password: string }) {\n return defer(() => this.client.signUp.email(data))\n }\n\n signInProvider(provider: Provider) {\n return defer(() => this.client.signIn.social({ provider }))\n }\n}\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core'\nimport { type BetterAuthOptions } from 'better-auth'\nimport { AuthService } from './services'\n\nexport const BETTER_AUTH_CONFIG_TOKEN = new InjectionToken<BetterAuthOptions>('BETTER_AUTH_CONFIG')\n\nconst DEFAULT_CONFIG: Partial<BetterAuthOptions> = {}\n\nexport function provideBetterAuth(options: BetterAuthOptions): EnvironmentProviders {\n const config: BetterAuthOptions = { ...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, UrlTree } from '@angular/router'\nimport { AuthService } from '../services'\nimport { map, Observable } from 'rxjs'\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.isAuthenticated().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.isAuthenticated().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 role = session?.user?.role\n if (Array.isArray(role)) {\n if (role.some((r) => requiredRoles.includes(r))) {\n return true\n }\n } else if (typeof role === 'string') {\n if (requiredRoles.includes(role)) {\n return true\n }\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","/**\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/auth.service.ts","../../../src/lib/utils/validate-plugin.ts","../../../src/lib/services/admin.service.ts","../../../src/lib/services/organization.service.ts","../../../src/lib/services/session.service.ts","../../../src/lib/providers.ts","../../../src/lib/guards/auth-guard.utils.ts","../../../src/lib/guards/auth-guard.factory.ts","../../../src/ngx-better-auth.ts"],"sourcesContent":["import { computed, inject, Injectable, signal } from '@angular/core'\nimport { BETTER_AUTH_CONFIG_TOKEN } from '../providers'\nimport { BetterFetchError, createAuthClient } from 'better-auth/client'\nimport { AuthSession, Provider } from '../models'\nimport { defer, filter, map, Observable, shareReplay } from 'rxjs'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthService {\n private readonly config = inject(BETTER_AUTH_CONFIG_TOKEN)\n\n readonly authClient = createAuthClient({\n ...this.config,\n })\n\n /**\n * Current authenticated session\n */\n readonly session = signal<AuthSession | 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<AuthSession | null>\n\n constructor() {\n this.session$()\n\n const useSession$ = new Observable<{\n data: AuthSession | null\n error: BetterFetchError | null\n isPending: boolean\n }>((subscriber) => {\n this.authClient.useSession.subscribe((value) => subscriber.next(value))\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.authClient.useSession.subscribe((session) => {\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 }) {\n return defer(() => this.authClient.signIn.email(data))\n }\n\n signUpEmail(data: { name: string; email: string; password: string }) {\n return defer(() => this.authClient.signUp.email(data))\n }\n\n signInProvider(provider: Provider) {\n return defer(() => this.authClient.signIn.social({ provider }))\n }\n\n signOut() {\n return defer(() => this.authClient.signOut())\n }\n}\n","export function validateAdminPlugin(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 } from 'rxjs'\nimport { AuthService } from './auth.service'\nimport { validateAdminPlugin } from '../utils/validate-plugin'\n\n@Injectable({ providedIn: 'root' })\nexport class AdminService {\n private readonly authService = inject(AuthService)\n\n admin: any\n\n constructor() {\n const client = this.authService.authClient as { admin?: any }\n validateAdminPlugin(client, 'admin')\n this.admin = client.admin\n }\n\n setRole(data: { userId: string; role: any }) {\n return defer(() => this.admin.setRole(data))\n }\n\n setUserPassword(data: { userId: string; newPassword: string }) {\n return defer(() => this.admin.setUserPassword(data))\n }\n\n banUser(data: { userId: string; banReason?: string; banExpiresIn?: number }) {\n return defer(() => this.admin.banUser(data))\n }\n\n unbanUser(data: { userId: string }) {\n return defer(() => this.admin.unbanUser(data))\n }\n\n listUserSessions(data: { userId: string }) {\n return defer(() => this.admin.listUserSessions(data))\n }\n\n revokeUserSession(data: { sessionToken: string }) {\n return defer(() => this.admin.revokeUserSession(data))\n }\n\n revokeUserSessions(data: { userId: string }) {\n return defer(() => this.admin.revokeUserSessions(data))\n }\n\n impersonateUser(data: { userId: string }) {\n return defer(() => this.admin.impersonateUser(data))\n }\n\n stopImpersonating() {\n return defer(() => this.admin.stopImpersonating())\n }\n\n removeUser(data: { userId: string }) {\n return defer(() => this.admin.removeUser(data))\n }\n\n hasPermission(data: { userId?: string; permission?: any; permissions?: any }) {\n return defer(() => this.admin.hasPermission(data))\n }\n\n checkRolePermission(data: { role: any; permission: any }) {\n return this.admin.checkRolePermission(data)\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer } from 'rxjs'\nimport { AuthService } from './auth.service'\nimport { validateAdminPlugin } from '../utils/validate-plugin'\n\n@Injectable({ providedIn: 'root' })\nexport class OrganizationService {\n private readonly authService = inject(AuthService)\n\n organization: any\n\n constructor() {\n const client = this.authService.authClient as { organization?: any }\n validateAdminPlugin(client, 'organization')\n this.organization = client.organization\n }\n\n createOrganization(data: { name: string; slug: string }) {\n return defer(() => this.organization.create(data))\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { AuthService } from './auth.service'\nimport { defer } from 'rxjs'\n\n@Injectable({ providedIn: 'root' })\nexport class SessionService {\n private readonly authService = inject(AuthService)\n\n private readonly client = this.authService.authClient\n\n listSessions() {\n return defer(() => this.client.listSessions())\n }\n\n revokeSession(sessionToken: string) {\n return defer(() => this.client.revokeSession({ token: sessionToken }))\n }\n\n revokeOtherSessions() {\n return defer(() => this.client.revokeOtherSessions())\n }\n\n revokeAllSessions() {\n return defer(() => this.client.revokeSessions())\n }\n}\n","import { EnvironmentProviders, InjectionToken, makeEnvironmentProviders } from '@angular/core'\nimport { type BetterAuthOptions } from 'better-auth'\nimport { AuthService } from './services'\n\nexport const BETTER_AUTH_CONFIG_TOKEN = new InjectionToken<BetterAuthOptions>('BETTER_AUTH_CONFIG')\n\nconst DEFAULT_CONFIG: Partial<BetterAuthOptions> = {}\n\nexport function provideBetterAuth(options: BetterAuthOptions): EnvironmentProviders {\n const config: BetterAuthOptions = { ...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, UrlTree } from '@angular/router'\nimport { AuthService } from '../services'\nimport { map, Observable } from 'rxjs'\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 role = session?.user?.role\n if (Array.isArray(role)) {\n if (role.some((r) => requiredRoles.includes(r))) {\n return true\n }\n } else if (typeof role === 'string') {\n if (requiredRoles.includes(role)) {\n return true\n }\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","/**\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
|
@@ -2244,90 +2244,13 @@ declare class AuthService {
|
|
|
2244
2244
|
* Ideal for route guards.
|
|
2245
2245
|
* @returns An Observable that emits true for an active session, and false otherwise.
|
|
2246
2246
|
*/
|
|
2247
|
-
|
|
2247
|
+
isLoggedIn$(): Observable<boolean>;
|
|
2248
2248
|
private session$;
|
|
2249
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<AuthService, never>;
|
|
2250
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<AuthService>;
|
|
2251
|
-
}
|
|
2252
|
-
|
|
2253
|
-
declare class SessionService {
|
|
2254
|
-
private readonly authService;
|
|
2255
|
-
private readonly client;
|
|
2256
|
-
listSessions(): rxjs.Observable<{
|
|
2257
|
-
data: better_auth.Prettify<{
|
|
2258
|
-
id: string;
|
|
2259
|
-
userId: string;
|
|
2260
|
-
expiresAt: Date;
|
|
2261
|
-
createdAt: Date;
|
|
2262
|
-
updatedAt: Date;
|
|
2263
|
-
token: string;
|
|
2264
|
-
ipAddress?: string | null | undefined | undefined;
|
|
2265
|
-
userAgent?: string | null | undefined | undefined;
|
|
2266
|
-
}>[];
|
|
2267
|
-
error: null;
|
|
2268
|
-
} | {
|
|
2269
|
-
data: null;
|
|
2270
|
-
error: {
|
|
2271
|
-
code?: string | undefined;
|
|
2272
|
-
message?: string | undefined;
|
|
2273
|
-
status: number;
|
|
2274
|
-
statusText: string;
|
|
2275
|
-
};
|
|
2276
|
-
}>;
|
|
2277
|
-
revokeSession(sessionToken: string): rxjs.Observable<{
|
|
2278
|
-
data: {
|
|
2279
|
-
status: boolean;
|
|
2280
|
-
};
|
|
2281
|
-
error: null;
|
|
2282
|
-
} | {
|
|
2283
|
-
data: null;
|
|
2284
|
-
error: {
|
|
2285
|
-
code?: string | undefined;
|
|
2286
|
-
message?: string | undefined;
|
|
2287
|
-
status: number;
|
|
2288
|
-
statusText: string;
|
|
2289
|
-
};
|
|
2290
|
-
}>;
|
|
2291
|
-
revokeOtherSessions(): rxjs.Observable<{
|
|
2292
|
-
data: {
|
|
2293
|
-
status: boolean;
|
|
2294
|
-
};
|
|
2295
|
-
error: null;
|
|
2296
|
-
} | {
|
|
2297
|
-
data: null;
|
|
2298
|
-
error: {
|
|
2299
|
-
code?: string | undefined;
|
|
2300
|
-
message?: string | undefined;
|
|
2301
|
-
status: number;
|
|
2302
|
-
statusText: string;
|
|
2303
|
-
};
|
|
2304
|
-
}>;
|
|
2305
|
-
revokeAllSessions(): rxjs.Observable<{
|
|
2306
|
-
data: {
|
|
2307
|
-
status: boolean;
|
|
2308
|
-
};
|
|
2309
|
-
error: null;
|
|
2310
|
-
} | {
|
|
2311
|
-
data: null;
|
|
2312
|
-
error: {
|
|
2313
|
-
code?: string | undefined;
|
|
2314
|
-
message?: string | undefined;
|
|
2315
|
-
status: number;
|
|
2316
|
-
statusText: string;
|
|
2317
|
-
};
|
|
2318
|
-
}>;
|
|
2319
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SessionService, never>;
|
|
2320
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<SessionService>;
|
|
2321
|
-
}
|
|
2322
|
-
|
|
2323
|
-
declare class SignInService {
|
|
2324
|
-
private readonly authService;
|
|
2325
|
-
private readonly client;
|
|
2326
2249
|
signInEmail(data: {
|
|
2327
2250
|
email: string;
|
|
2328
2251
|
password: string;
|
|
2329
2252
|
rememberMe?: boolean;
|
|
2330
|
-
}):
|
|
2253
|
+
}): Observable<{
|
|
2331
2254
|
data: {
|
|
2332
2255
|
redirect: boolean;
|
|
2333
2256
|
token: string;
|
|
@@ -2356,7 +2279,7 @@ declare class SignInService {
|
|
|
2356
2279
|
name: string;
|
|
2357
2280
|
email: string;
|
|
2358
2281
|
password: string;
|
|
2359
|
-
}):
|
|
2282
|
+
}): Observable<{
|
|
2360
2283
|
data: NonNullable<{
|
|
2361
2284
|
token: null;
|
|
2362
2285
|
user: {
|
|
@@ -2390,7 +2313,7 @@ declare class SignInService {
|
|
|
2390
2313
|
statusText: string;
|
|
2391
2314
|
};
|
|
2392
2315
|
}>;
|
|
2393
|
-
signInProvider(provider: Provider):
|
|
2316
|
+
signInProvider(provider: Provider): Observable<{
|
|
2394
2317
|
data: NonNullable<{
|
|
2395
2318
|
redirect: boolean;
|
|
2396
2319
|
token: string;
|
|
@@ -2418,8 +2341,92 @@ declare class SignInService {
|
|
|
2418
2341
|
statusText: string;
|
|
2419
2342
|
};
|
|
2420
2343
|
}>;
|
|
2421
|
-
|
|
2422
|
-
|
|
2344
|
+
signOut(): Observable<{
|
|
2345
|
+
data: {
|
|
2346
|
+
success: boolean;
|
|
2347
|
+
};
|
|
2348
|
+
error: null;
|
|
2349
|
+
} | {
|
|
2350
|
+
data: null;
|
|
2351
|
+
error: {
|
|
2352
|
+
code?: string | undefined;
|
|
2353
|
+
message?: string | undefined;
|
|
2354
|
+
status: number;
|
|
2355
|
+
statusText: string;
|
|
2356
|
+
};
|
|
2357
|
+
}>;
|
|
2358
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AuthService, never>;
|
|
2359
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AuthService>;
|
|
2360
|
+
}
|
|
2361
|
+
|
|
2362
|
+
declare class SessionService {
|
|
2363
|
+
private readonly authService;
|
|
2364
|
+
private readonly client;
|
|
2365
|
+
listSessions(): rxjs.Observable<{
|
|
2366
|
+
data: better_auth.Prettify<{
|
|
2367
|
+
id: string;
|
|
2368
|
+
userId: string;
|
|
2369
|
+
expiresAt: Date;
|
|
2370
|
+
createdAt: Date;
|
|
2371
|
+
updatedAt: Date;
|
|
2372
|
+
token: string;
|
|
2373
|
+
ipAddress?: string | null | undefined | undefined;
|
|
2374
|
+
userAgent?: string | null | undefined | undefined;
|
|
2375
|
+
}>[];
|
|
2376
|
+
error: null;
|
|
2377
|
+
} | {
|
|
2378
|
+
data: null;
|
|
2379
|
+
error: {
|
|
2380
|
+
code?: string | undefined;
|
|
2381
|
+
message?: string | undefined;
|
|
2382
|
+
status: number;
|
|
2383
|
+
statusText: string;
|
|
2384
|
+
};
|
|
2385
|
+
}>;
|
|
2386
|
+
revokeSession(sessionToken: string): rxjs.Observable<{
|
|
2387
|
+
data: {
|
|
2388
|
+
status: boolean;
|
|
2389
|
+
};
|
|
2390
|
+
error: null;
|
|
2391
|
+
} | {
|
|
2392
|
+
data: null;
|
|
2393
|
+
error: {
|
|
2394
|
+
code?: string | undefined;
|
|
2395
|
+
message?: string | undefined;
|
|
2396
|
+
status: number;
|
|
2397
|
+
statusText: string;
|
|
2398
|
+
};
|
|
2399
|
+
}>;
|
|
2400
|
+
revokeOtherSessions(): rxjs.Observable<{
|
|
2401
|
+
data: {
|
|
2402
|
+
status: boolean;
|
|
2403
|
+
};
|
|
2404
|
+
error: null;
|
|
2405
|
+
} | {
|
|
2406
|
+
data: null;
|
|
2407
|
+
error: {
|
|
2408
|
+
code?: string | undefined;
|
|
2409
|
+
message?: string | undefined;
|
|
2410
|
+
status: number;
|
|
2411
|
+
statusText: string;
|
|
2412
|
+
};
|
|
2413
|
+
}>;
|
|
2414
|
+
revokeAllSessions(): rxjs.Observable<{
|
|
2415
|
+
data: {
|
|
2416
|
+
status: boolean;
|
|
2417
|
+
};
|
|
2418
|
+
error: null;
|
|
2419
|
+
} | {
|
|
2420
|
+
data: null;
|
|
2421
|
+
error: {
|
|
2422
|
+
code?: string | undefined;
|
|
2423
|
+
message?: string | undefined;
|
|
2424
|
+
status: number;
|
|
2425
|
+
statusText: string;
|
|
2426
|
+
};
|
|
2427
|
+
}>;
|
|
2428
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<SessionService, never>;
|
|
2429
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<SessionService>;
|
|
2423
2430
|
}
|
|
2424
2431
|
|
|
2425
2432
|
/**
|
|
@@ -2440,5 +2447,5 @@ declare function canActivate(pipe: () => Observable<boolean | UrlTree> | Promise
|
|
|
2440
2447
|
canActivate: [CanActivateFn];
|
|
2441
2448
|
};
|
|
2442
2449
|
|
|
2443
|
-
export { AdminService, AuthService, BETTER_AUTH_CONFIG_TOKEN, OrganizationService, SessionService,
|
|
2450
|
+
export { AdminService, AuthService, BETTER_AUTH_CONFIG_TOKEN, OrganizationService, SessionService, canActivate, hasRole, provideBetterAuth, redirectLoggedInTo, redirectUnauthorizedTo };
|
|
2444
2451
|
export type { AuthSession, Provider };
|