ngx-better-auth 0.4.2 → 0.5.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 +14 -3
- package/fesm2022/ngx-better-auth.mjs +396 -83
- package/fesm2022/ngx-better-auth.mjs.map +1 -1
- package/index.d.ts +533 -65
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|

|
|
5
5
|

|
|
6
6
|

|
|
7
|
-

|
|
8
7
|
|
|
9
8
|

|
|
10
9
|

|
|
@@ -37,14 +36,15 @@ First, configure your Better Auth client in your application:
|
|
|
37
36
|
// app.config.ts
|
|
38
37
|
import { ApplicationConfig } from '@angular/core'
|
|
39
38
|
import { provideBetterAuth } from 'ngx-better-auth'
|
|
39
|
+
import { environment } from './environments/environment'
|
|
40
40
|
|
|
41
41
|
export const appConfig: ApplicationConfig = {
|
|
42
42
|
providers: [
|
|
43
43
|
provideBetterAuth({
|
|
44
|
-
baseURL:
|
|
44
|
+
baseURL: environment.apiUrl, // it works also with proxy config
|
|
45
45
|
})
|
|
46
46
|
]
|
|
47
|
-
}
|
|
47
|
+
}
|
|
48
48
|
```
|
|
49
49
|
|
|
50
50
|
## 🧩 Different services
|
|
@@ -54,8 +54,19 @@ You can inject different services depending on your needs:
|
|
|
54
54
|
### Global services
|
|
55
55
|
- `AuthService`
|
|
56
56
|
- `SessionService`
|
|
57
|
+
- `AccountService`
|
|
57
58
|
|
|
58
59
|
### Plugin services
|
|
60
|
+
Authentication:
|
|
61
|
+
- `TwoFactorService`
|
|
62
|
+
- `PasskeyService`
|
|
63
|
+
- `GenericOauthService`
|
|
64
|
+
- `EmailOtpService`
|
|
65
|
+
- `OneTapService`
|
|
66
|
+
- `MagicLinkService`
|
|
67
|
+
- `UsernameService`
|
|
68
|
+
|
|
69
|
+
Authorization:
|
|
59
70
|
- `AdminService`
|
|
60
71
|
- `OrganizationService`
|
|
61
72
|
|
|
@@ -1,18 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, Injectable, signal, computed, InjectionToken, makeEnvironmentProviders } from '@angular/core';
|
|
3
|
-
import {
|
|
3
|
+
import { Observable, filter, map, shareReplay, defer, switchMap, tap } from 'rxjs';
|
|
4
4
|
import { createAuthClient } from 'better-auth/client';
|
|
5
5
|
import { Router } from '@angular/router';
|
|
6
6
|
|
|
7
|
-
function validateAdminPlugin(client, property) {
|
|
8
|
-
if (!client) {
|
|
9
|
-
throw new Error('AuthClient is not initialized.');
|
|
10
|
-
}
|
|
11
|
-
if (!client[property]) {
|
|
12
|
-
throw new Error(`Property '${property}' is not available on authClient. Please ensure the plugin providing this property is included in the plugins array.`);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
7
|
class MainService {
|
|
17
8
|
config = inject(BETTER_AUTH_CONFIG_TOKEN);
|
|
18
9
|
authClient = createAuthClient({
|
|
@@ -28,77 +19,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
|
|
|
28
19
|
}]
|
|
29
20
|
}] });
|
|
30
21
|
|
|
31
|
-
class AdminService {
|
|
32
|
-
mainService = inject(MainService);
|
|
33
|
-
admin;
|
|
34
|
-
constructor() {
|
|
35
|
-
const client = this.mainService.authClient;
|
|
36
|
-
validateAdminPlugin(client, 'admin');
|
|
37
|
-
this.admin = client.admin;
|
|
38
|
-
}
|
|
39
|
-
setRole(data) {
|
|
40
|
-
return defer(() => this.admin.setRole(data));
|
|
41
|
-
}
|
|
42
|
-
setUserPassword(data) {
|
|
43
|
-
return defer(() => this.admin.setUserPassword(data));
|
|
44
|
-
}
|
|
45
|
-
banUser(data) {
|
|
46
|
-
return defer(() => this.admin.banUser(data));
|
|
47
|
-
}
|
|
48
|
-
unbanUser(data) {
|
|
49
|
-
return defer(() => this.admin.unbanUser(data));
|
|
50
|
-
}
|
|
51
|
-
listUserSessions(data) {
|
|
52
|
-
return defer(() => this.admin.listUserSessions(data));
|
|
53
|
-
}
|
|
54
|
-
revokeUserSession(data) {
|
|
55
|
-
return defer(() => this.admin.revokeUserSession(data));
|
|
56
|
-
}
|
|
57
|
-
revokeUserSessions(data) {
|
|
58
|
-
return defer(() => this.admin.revokeUserSessions(data));
|
|
59
|
-
}
|
|
60
|
-
impersonateUser(data) {
|
|
61
|
-
return defer(() => this.admin.impersonateUser(data));
|
|
62
|
-
}
|
|
63
|
-
stopImpersonating() {
|
|
64
|
-
return defer(() => this.admin.stopImpersonating());
|
|
65
|
-
}
|
|
66
|
-
removeUser(data) {
|
|
67
|
-
return defer(() => this.admin.removeUser(data));
|
|
68
|
-
}
|
|
69
|
-
hasPermission(data) {
|
|
70
|
-
return defer(() => this.admin.hasPermission(data));
|
|
71
|
-
}
|
|
72
|
-
checkRolePermission(data) {
|
|
73
|
-
return this.admin.checkRolePermission(data);
|
|
74
|
-
}
|
|
75
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: AdminService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
76
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: AdminService, providedIn: 'root' });
|
|
77
|
-
}
|
|
78
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: AdminService, decorators: [{
|
|
79
|
-
type: Injectable,
|
|
80
|
-
args: [{ providedIn: 'root' }]
|
|
81
|
-
}], ctorParameters: () => [] });
|
|
82
|
-
|
|
83
|
-
class OrganizationService {
|
|
84
|
-
mainService = inject(MainService);
|
|
85
|
-
organization;
|
|
86
|
-
constructor() {
|
|
87
|
-
const client = this.mainService.authClient;
|
|
88
|
-
validateAdminPlugin(client, 'organization');
|
|
89
|
-
this.organization = client.organization;
|
|
90
|
-
}
|
|
91
|
-
createOrganization(data) {
|
|
92
|
-
return defer(() => this.organization.create(data));
|
|
93
|
-
}
|
|
94
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: OrganizationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
95
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: OrganizationService, providedIn: 'root' });
|
|
96
|
-
}
|
|
97
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: OrganizationService, decorators: [{
|
|
98
|
-
type: Injectable,
|
|
99
|
-
args: [{ providedIn: 'root' }]
|
|
100
|
-
}], ctorParameters: () => [] });
|
|
101
|
-
|
|
102
22
|
class AuthService {
|
|
103
23
|
mainService = inject(MainService);
|
|
104
24
|
client = this.mainService.authClient;
|
|
@@ -152,9 +72,33 @@ class AuthService {
|
|
|
152
72
|
this.session.set(session.data);
|
|
153
73
|
});
|
|
154
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* pass either email or username to sign in. Needs username plugin enabled to use username.
|
|
77
|
+
* @param data : { email?: string; username?: string; password: string; rememberMe?: boolean }
|
|
78
|
+
*/
|
|
79
|
+
signIn(data) {
|
|
80
|
+
if (data.email) {
|
|
81
|
+
return this.signInEmail({ email: data.email, password: data.password, rememberMe: data.rememberMe });
|
|
82
|
+
}
|
|
83
|
+
else if (data.username) {
|
|
84
|
+
return this.signInUsername({ username: data.username, password: data.password, rememberMe: data.rememberMe });
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
throw new Error('Either email or username must be provided');
|
|
88
|
+
}
|
|
89
|
+
}
|
|
155
90
|
signInEmail(data) {
|
|
156
91
|
return defer(() => this.client.signIn.email(data)).pipe(switchMap(() => this.sessionState$.pipe(filter((s) => s !== null))));
|
|
157
92
|
}
|
|
93
|
+
signInUsername(data) {
|
|
94
|
+
return defer(() => this.client.signIn.username(data)).pipe(switchMap(() => this.sessionState$.pipe(filter((s) => s !== null))));
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Sign up a new user using email and password.
|
|
98
|
+
*
|
|
99
|
+
* Parameters username and displayUsername can be used if the username's plugin is enabled.
|
|
100
|
+
* @param data
|
|
101
|
+
*/
|
|
158
102
|
signUpEmail(data) {
|
|
159
103
|
return defer(() => this.client.signUp.email(data)).pipe(switchMap(() => this.sessionState$.pipe(filter((s) => s !== null))));
|
|
160
104
|
}
|
|
@@ -162,7 +106,31 @@ class AuthService {
|
|
|
162
106
|
return defer(() => this.client.signIn.social({ provider })).pipe(switchMap(() => this.sessionState$.pipe(filter((s) => s !== null))));
|
|
163
107
|
}
|
|
164
108
|
signOut() {
|
|
165
|
-
return defer(() => this.client.signOut()).pipe(
|
|
109
|
+
return defer(() => this.client.signOut()).pipe(switchMap(() => this.sessionState$.pipe(filter((s) => s === null))));
|
|
110
|
+
}
|
|
111
|
+
sendVerificationEmail(data) {
|
|
112
|
+
return defer(() => this.client.sendVerificationEmail(data));
|
|
113
|
+
}
|
|
114
|
+
requestPasswordReset(data) {
|
|
115
|
+
return defer(() => this.client.requestPasswordReset(data));
|
|
116
|
+
}
|
|
117
|
+
resetPassword(data) {
|
|
118
|
+
return defer(() => this.client.resetPassword(data));
|
|
119
|
+
}
|
|
120
|
+
changePassword(data) {
|
|
121
|
+
return defer(() => this.client.changePassword(data));
|
|
122
|
+
}
|
|
123
|
+
changeEmail(data) {
|
|
124
|
+
return defer(() => this.client.changeEmail(data));
|
|
125
|
+
}
|
|
126
|
+
updateUser(data) {
|
|
127
|
+
return defer(() => this.client.updateUser(data));
|
|
128
|
+
}
|
|
129
|
+
isUsernameAvailable(data) {
|
|
130
|
+
return defer(() => this.client.isUsernameAvailable(data));
|
|
131
|
+
}
|
|
132
|
+
deleteUser(data) {
|
|
133
|
+
return defer(() => this.client.deleteUser(data)).pipe(tap(() => this.sessionState$.pipe(filter((s) => s === null))));
|
|
166
134
|
}
|
|
167
135
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: AuthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
168
136
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: AuthService, providedIn: 'root' });
|
|
@@ -197,6 +165,351 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImpor
|
|
|
197
165
|
args: [{ providedIn: 'root' }]
|
|
198
166
|
}] });
|
|
199
167
|
|
|
168
|
+
class AccountService {
|
|
169
|
+
mainService = inject(MainService);
|
|
170
|
+
client = this.mainService.authClient;
|
|
171
|
+
listAccounts() {
|
|
172
|
+
return defer(() => this.client.listAccounts());
|
|
173
|
+
}
|
|
174
|
+
linkSocial(data) {
|
|
175
|
+
return defer(() => this.client.linkSocial(data));
|
|
176
|
+
}
|
|
177
|
+
unlinkAccount(data) {
|
|
178
|
+
return defer(() => this.client.unlinkAccount(data));
|
|
179
|
+
}
|
|
180
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: AccountService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
181
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: AccountService, providedIn: 'root' });
|
|
182
|
+
}
|
|
183
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: AccountService, decorators: [{
|
|
184
|
+
type: Injectable,
|
|
185
|
+
args: [{ providedIn: 'root' }]
|
|
186
|
+
}] });
|
|
187
|
+
|
|
188
|
+
function validatePlugin(client, property) {
|
|
189
|
+
if (!client) {
|
|
190
|
+
throw new Error('AuthClient is not initialized.');
|
|
191
|
+
}
|
|
192
|
+
if (!client[property]) {
|
|
193
|
+
throw new Error(`Property '${property}' is not available on authClient. Please ensure the plugin providing this property is included in the plugins array.`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
class TwoFactorService {
|
|
198
|
+
mainService = inject(MainService);
|
|
199
|
+
twoFactor;
|
|
200
|
+
constructor() {
|
|
201
|
+
const client = this.mainService.authClient;
|
|
202
|
+
validatePlugin(client, 'twoFactor');
|
|
203
|
+
this.twoFactor = client.twoFactor;
|
|
204
|
+
}
|
|
205
|
+
enable(data) {
|
|
206
|
+
return defer(() => this.twoFactor.enable(data));
|
|
207
|
+
}
|
|
208
|
+
disable(data) {
|
|
209
|
+
return defer(() => this.twoFactor.disable(data));
|
|
210
|
+
}
|
|
211
|
+
getTotpUri(data) {
|
|
212
|
+
return defer(() => this.twoFactor.getTotpUri(data));
|
|
213
|
+
}
|
|
214
|
+
verifyTotp(data) {
|
|
215
|
+
return defer(() => this.twoFactor.verifyTotp(data));
|
|
216
|
+
}
|
|
217
|
+
sendOtp(data) {
|
|
218
|
+
return defer(() => this.twoFactor.sendOtp(data));
|
|
219
|
+
}
|
|
220
|
+
verifyOtp(data) {
|
|
221
|
+
return defer(() => this.twoFactor.verifyOtp(data));
|
|
222
|
+
}
|
|
223
|
+
generateBackupCodes(data) {
|
|
224
|
+
return defer(() => this.twoFactor.generateBackupCodes(data));
|
|
225
|
+
}
|
|
226
|
+
verifyBackupCode(data) {
|
|
227
|
+
return defer(() => this.twoFactor.verifyBackupCode(data));
|
|
228
|
+
}
|
|
229
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TwoFactorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
230
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TwoFactorService, providedIn: 'root' });
|
|
231
|
+
}
|
|
232
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: TwoFactorService, decorators: [{
|
|
233
|
+
type: Injectable,
|
|
234
|
+
args: [{ providedIn: 'root' }]
|
|
235
|
+
}], ctorParameters: () => [] });
|
|
236
|
+
|
|
237
|
+
class PasskeyService {
|
|
238
|
+
mainService = inject(MainService);
|
|
239
|
+
passkey;
|
|
240
|
+
constructor() {
|
|
241
|
+
const client = this.mainService.authClient;
|
|
242
|
+
validatePlugin(client, 'passkey');
|
|
243
|
+
this.passkey = client.passkey;
|
|
244
|
+
}
|
|
245
|
+
addPasskey(data) {
|
|
246
|
+
return defer(() => this.passkey.addPasskey(data));
|
|
247
|
+
}
|
|
248
|
+
listUserPasskeys() {
|
|
249
|
+
return defer(() => this.passkey.listUserPasskeys());
|
|
250
|
+
}
|
|
251
|
+
deletePasskey(data) {
|
|
252
|
+
return defer(() => this.passkey.deletePasskey(data));
|
|
253
|
+
}
|
|
254
|
+
updatePasskey(data) {
|
|
255
|
+
return defer(() => this.passkey.updatePasskey(data));
|
|
256
|
+
}
|
|
257
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: PasskeyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
258
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: PasskeyService, providedIn: 'root' });
|
|
259
|
+
}
|
|
260
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: PasskeyService, decorators: [{
|
|
261
|
+
type: Injectable,
|
|
262
|
+
args: [{ providedIn: 'root' }]
|
|
263
|
+
}], ctorParameters: () => [] });
|
|
264
|
+
|
|
265
|
+
class GenericOauthService {
|
|
266
|
+
mainService = inject(MainService);
|
|
267
|
+
authService = inject(AuthService);
|
|
268
|
+
oauth;
|
|
269
|
+
constructor() {
|
|
270
|
+
const client = this.mainService.authClient;
|
|
271
|
+
validatePlugin(client, 'oauth2');
|
|
272
|
+
this.oauth = client.oauth2;
|
|
273
|
+
}
|
|
274
|
+
signIn(data) {
|
|
275
|
+
return defer(() => this.mainService.authClient.signIn.oauth2(data)).pipe(switchMap(() => this.authService.sessionState$.pipe(filter((s) => s !== null))));
|
|
276
|
+
}
|
|
277
|
+
link(data) {
|
|
278
|
+
return defer(() => this.oauth.link(data));
|
|
279
|
+
}
|
|
280
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: GenericOauthService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
281
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: GenericOauthService, providedIn: 'root' });
|
|
282
|
+
}
|
|
283
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: GenericOauthService, decorators: [{
|
|
284
|
+
type: Injectable,
|
|
285
|
+
args: [{ providedIn: 'root' }]
|
|
286
|
+
}], ctorParameters: () => [] });
|
|
287
|
+
|
|
288
|
+
class EmailOtpService {
|
|
289
|
+
mainService = inject(MainService);
|
|
290
|
+
authService = inject(AuthService);
|
|
291
|
+
emailOtp;
|
|
292
|
+
constructor() {
|
|
293
|
+
const client = this.mainService.authClient;
|
|
294
|
+
validatePlugin(client, 'emailOtp');
|
|
295
|
+
this.emailOtp = client.emailOtp;
|
|
296
|
+
}
|
|
297
|
+
signInEmailOtp(data) {
|
|
298
|
+
return defer(() => this.mainService.authClient.signIn.emailOtp(data)).pipe(switchMap(() => this.authService.sessionState$.pipe(filter((s) => s !== null))));
|
|
299
|
+
}
|
|
300
|
+
sendVerificationOtp(data) {
|
|
301
|
+
return defer(() => this.emailOtp.sendVerificationOtp(data));
|
|
302
|
+
}
|
|
303
|
+
checkVerificationOtp(data) {
|
|
304
|
+
return defer(() => this.emailOtp.checkVerificationOtp(data));
|
|
305
|
+
}
|
|
306
|
+
verifyEmail(data) {
|
|
307
|
+
return defer(() => this.emailOtp.verifyEmail(data));
|
|
308
|
+
}
|
|
309
|
+
resetPassword(data) {
|
|
310
|
+
return defer(() => this.emailOtp.resetPassword(data));
|
|
311
|
+
}
|
|
312
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: EmailOtpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
313
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: EmailOtpService, providedIn: 'root' });
|
|
314
|
+
}
|
|
315
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: EmailOtpService, decorators: [{
|
|
316
|
+
type: Injectable,
|
|
317
|
+
args: [{ providedIn: 'root' }]
|
|
318
|
+
}], ctorParameters: () => [] });
|
|
319
|
+
|
|
320
|
+
class OneTapService {
|
|
321
|
+
mainService = inject(MainService);
|
|
322
|
+
oneTap;
|
|
323
|
+
constructor() {
|
|
324
|
+
const client = this.mainService.authClient;
|
|
325
|
+
validatePlugin(client, 'oneTap');
|
|
326
|
+
this.oneTap = client.oneTap;
|
|
327
|
+
}
|
|
328
|
+
signIn(data) {
|
|
329
|
+
return defer(() => this.oneTap(data));
|
|
330
|
+
}
|
|
331
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: OneTapService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
332
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: OneTapService, providedIn: 'root' });
|
|
333
|
+
}
|
|
334
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: OneTapService, decorators: [{
|
|
335
|
+
type: Injectable,
|
|
336
|
+
args: [{ providedIn: 'root' }]
|
|
337
|
+
}], ctorParameters: () => [] });
|
|
338
|
+
|
|
339
|
+
class MagicLinkService {
|
|
340
|
+
mainService = inject(MainService);
|
|
341
|
+
magicLink;
|
|
342
|
+
constructor() {
|
|
343
|
+
const client = this.mainService.authClient;
|
|
344
|
+
validatePlugin(client, 'magicLink');
|
|
345
|
+
this.magicLink = client.magicLink;
|
|
346
|
+
}
|
|
347
|
+
signIn(data) {
|
|
348
|
+
return defer(() => this.mainService.authClient.signIn.magicLink(data));
|
|
349
|
+
}
|
|
350
|
+
verify(data) {
|
|
351
|
+
return defer(() => this.magicLink.verify(data));
|
|
352
|
+
}
|
|
353
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: MagicLinkService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
354
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: MagicLinkService, providedIn: 'root' });
|
|
355
|
+
}
|
|
356
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: MagicLinkService, decorators: [{
|
|
357
|
+
type: Injectable,
|
|
358
|
+
args: [{ providedIn: 'root' }]
|
|
359
|
+
}], ctorParameters: () => [] });
|
|
360
|
+
|
|
361
|
+
class AdminService {
|
|
362
|
+
mainService = inject(MainService);
|
|
363
|
+
admin;
|
|
364
|
+
constructor() {
|
|
365
|
+
const client = this.mainService.authClient;
|
|
366
|
+
validatePlugin(client, 'admin');
|
|
367
|
+
this.admin = client.admin;
|
|
368
|
+
}
|
|
369
|
+
setRole(data) {
|
|
370
|
+
return defer(() => this.admin.setRole(data));
|
|
371
|
+
}
|
|
372
|
+
setUserPassword(data) {
|
|
373
|
+
return defer(() => this.admin.setUserPassword(data));
|
|
374
|
+
}
|
|
375
|
+
banUser(data) {
|
|
376
|
+
return defer(() => this.admin.banUser(data));
|
|
377
|
+
}
|
|
378
|
+
unbanUser(data) {
|
|
379
|
+
return defer(() => this.admin.unbanUser(data));
|
|
380
|
+
}
|
|
381
|
+
listUserSessions(data) {
|
|
382
|
+
return defer(() => this.admin.listUserSessions(data));
|
|
383
|
+
}
|
|
384
|
+
revokeUserSession(data) {
|
|
385
|
+
return defer(() => this.admin.revokeUserSession(data));
|
|
386
|
+
}
|
|
387
|
+
revokeUserSessions(data) {
|
|
388
|
+
return defer(() => this.admin.revokeUserSessions(data));
|
|
389
|
+
}
|
|
390
|
+
impersonateUser(data) {
|
|
391
|
+
return defer(() => this.admin.impersonateUser(data));
|
|
392
|
+
}
|
|
393
|
+
stopImpersonating() {
|
|
394
|
+
return defer(() => this.admin.stopImpersonating());
|
|
395
|
+
}
|
|
396
|
+
removeUser(data) {
|
|
397
|
+
return defer(() => this.admin.removeUser(data));
|
|
398
|
+
}
|
|
399
|
+
hasPermission(data) {
|
|
400
|
+
return defer(() => this.admin.hasPermission(data));
|
|
401
|
+
}
|
|
402
|
+
checkRolePermission(data) {
|
|
403
|
+
return this.admin.checkRolePermission(data);
|
|
404
|
+
}
|
|
405
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: AdminService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
406
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: AdminService, providedIn: 'root' });
|
|
407
|
+
}
|
|
408
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: AdminService, decorators: [{
|
|
409
|
+
type: Injectable,
|
|
410
|
+
args: [{ providedIn: 'root' }]
|
|
411
|
+
}], ctorParameters: () => [] });
|
|
412
|
+
|
|
413
|
+
class OrganizationService {
|
|
414
|
+
mainService = inject(MainService);
|
|
415
|
+
organization;
|
|
416
|
+
constructor() {
|
|
417
|
+
const client = this.mainService.authClient;
|
|
418
|
+
validatePlugin(client, 'organization');
|
|
419
|
+
this.organization = client.organization;
|
|
420
|
+
}
|
|
421
|
+
createOrganization(data) {
|
|
422
|
+
return defer(() => this.organization.create(data));
|
|
423
|
+
}
|
|
424
|
+
checkSlug(data) {
|
|
425
|
+
return defer(() => this.organization.checkSlug(data));
|
|
426
|
+
}
|
|
427
|
+
list() {
|
|
428
|
+
return defer(() => this.organization.list());
|
|
429
|
+
}
|
|
430
|
+
setActive(data) {
|
|
431
|
+
return defer(() => this.organization.setActive(data));
|
|
432
|
+
}
|
|
433
|
+
getFullOrganization(data) {
|
|
434
|
+
return defer(() => this.organization.getFullOrganization(data));
|
|
435
|
+
}
|
|
436
|
+
update(data) {
|
|
437
|
+
return defer(() => this.organization.update(data));
|
|
438
|
+
}
|
|
439
|
+
delete(data) {
|
|
440
|
+
return defer(() => this.organization.delete(data));
|
|
441
|
+
}
|
|
442
|
+
inviteMember(data) {
|
|
443
|
+
return defer(() => this.organization.inviteMember(data));
|
|
444
|
+
}
|
|
445
|
+
acceptInvitation(data) {
|
|
446
|
+
return defer(() => this.organization.acceptInvitation(data));
|
|
447
|
+
}
|
|
448
|
+
cancelInvitation(data) {
|
|
449
|
+
return defer(() => this.organization.cancelInvitation(data));
|
|
450
|
+
}
|
|
451
|
+
rejectInvitation(data) {
|
|
452
|
+
return defer(() => this.organization.rejectInvitation(data));
|
|
453
|
+
}
|
|
454
|
+
getInvitation(data) {
|
|
455
|
+
return defer(() => this.organization.getInvitation(data));
|
|
456
|
+
}
|
|
457
|
+
listInvitations(data) {
|
|
458
|
+
return defer(() => this.organization.listInvitations(data));
|
|
459
|
+
}
|
|
460
|
+
listUserInvitations() {
|
|
461
|
+
return defer(() => this.organization.listUserInvitations());
|
|
462
|
+
}
|
|
463
|
+
listMembers(data = {}) {
|
|
464
|
+
return defer(() => this.organization.listMembers(data));
|
|
465
|
+
}
|
|
466
|
+
removeMember(data) {
|
|
467
|
+
return defer(() => this.organization.removeMember(data));
|
|
468
|
+
}
|
|
469
|
+
updateMemberRoles(data) {
|
|
470
|
+
return defer(() => this.organization.updateMemberRoles(data));
|
|
471
|
+
}
|
|
472
|
+
getActiveMember() {
|
|
473
|
+
return defer(() => this.organization.getActiveMember());
|
|
474
|
+
}
|
|
475
|
+
leave(data) {
|
|
476
|
+
return defer(() => this.organization.leave(data));
|
|
477
|
+
}
|
|
478
|
+
createTeam(data) {
|
|
479
|
+
return defer(() => this.organization.createTeam(data));
|
|
480
|
+
}
|
|
481
|
+
listTeams(data) {
|
|
482
|
+
return defer(() => this.organization.listTeams(data));
|
|
483
|
+
}
|
|
484
|
+
updateTeam(data) {
|
|
485
|
+
return defer(() => this.organization.updateTeam(data));
|
|
486
|
+
}
|
|
487
|
+
removeTeam(data) {
|
|
488
|
+
return defer(() => this.organization.removeTeam(data));
|
|
489
|
+
}
|
|
490
|
+
setActiveTeam(data) {
|
|
491
|
+
return defer(() => this.organization.setActiveTeam(data));
|
|
492
|
+
}
|
|
493
|
+
listUsersTeams() {
|
|
494
|
+
return defer(() => this.organization.listUsersTeams());
|
|
495
|
+
}
|
|
496
|
+
listTeamMembers(data) {
|
|
497
|
+
return defer(() => this.organization.listTeamMembers(data));
|
|
498
|
+
}
|
|
499
|
+
addTeamMember(data) {
|
|
500
|
+
return defer(() => this.organization.addTeamMember(data));
|
|
501
|
+
}
|
|
502
|
+
removeTeamMember(data) {
|
|
503
|
+
return defer(() => this.organization.removeTeamMember(data));
|
|
504
|
+
}
|
|
505
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: OrganizationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
506
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: OrganizationService, providedIn: 'root' });
|
|
507
|
+
}
|
|
508
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.3", ngImport: i0, type: OrganizationService, decorators: [{
|
|
509
|
+
type: Injectable,
|
|
510
|
+
args: [{ providedIn: 'root' }]
|
|
511
|
+
}], ctorParameters: () => [] });
|
|
512
|
+
|
|
200
513
|
const BETTER_AUTH_CONFIG_TOKEN = new InjectionToken('BETTER_AUTH_CONFIG');
|
|
201
514
|
const DEFAULT_CONFIG = {};
|
|
202
515
|
function provideBetterAuth(options) {
|
|
@@ -266,5 +579,5 @@ function canActivate(pipe) {
|
|
|
266
579
|
* Generated bundle index. Do not edit.
|
|
267
580
|
*/
|
|
268
581
|
|
|
269
|
-
export { AdminService, AuthService, BETTER_AUTH_CONFIG_TOKEN, OrganizationService, SessionService, canActivate, hasRole, provideBetterAuth, redirectLoggedInTo, redirectUnauthorizedTo };
|
|
582
|
+
export { AccountService, AdminService, AuthService, BETTER_AUTH_CONFIG_TOKEN, EmailOtpService, GenericOauthService, MagicLinkService, OneTapService, OrganizationService, PasskeyService, SessionService, TwoFactorService, canActivate, hasRole, provideBetterAuth, redirectLoggedInTo, redirectUnauthorizedTo };
|
|
270
583
|
//# sourceMappingURL=ngx-better-auth.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-better-auth.mjs","sources":["../../../src/lib/utils/validate-plugin.ts","../../../src/lib/services/main.service.ts","../../../src/lib/services/admin.service.ts","../../../src/lib/services/organization.service.ts","../../../src/lib/services/auth.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":["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 { BETTER_AUTH_CONFIG_TOKEN } from '../providers'\nimport { createAuthClient } from 'better-auth/client'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MainService {\n private readonly config = inject(BETTER_AUTH_CONFIG_TOKEN)\n\n readonly authClient = createAuthClient({\n ...this.config,\n })\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer } from 'rxjs'\nimport { validateAdminPlugin } from '../utils/validate-plugin'\nimport { MainService } from './main.service'\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 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 { validateAdminPlugin } from '../utils/validate-plugin'\nimport { MainService } from './main.service'\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 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 { computed, inject, Injectable, signal } from '@angular/core'\nimport { BetterFetchError } from 'better-auth/client'\nimport { AuthSession, Provider } from '../models'\nimport { defer, filter, map, Observable, shareReplay, switchMap, tap } from 'rxjs'\nimport { MainService } from './main.service'\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<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.client.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.client.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.client.signIn.email(data)).pipe(switchMap(() => this.sessionState$.pipe(filter((s) => s !== null))))\n }\n\n signUpEmail(data: { name: string; email: string; password: string }) {\n return defer(() => this.client.signUp.email(data)).pipe(switchMap(() => this.sessionState$.pipe(filter((s) => s !== null))))\n }\n\n signInProvider(provider: Provider) {\n return defer(() => this.client.signIn.social({ provider })).pipe(switchMap(() => this.sessionState$.pipe(filter((s) => s !== null))))\n }\n\n signOut() {\n return defer(() => this.client.signOut()).pipe(tap(() => this.session.set(null)))\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer } from 'rxjs'\nimport { MainService } from './main.service'\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() {\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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"}
|
|
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/two-factor.service.ts","../../../src/lib/services/passkey.service.ts","../../../src/lib/services/generic-oauth.service.ts","../../../src/lib/services/email-otp.service.ts","../../../src/lib/services/one-tap.service.ts","../../../src/lib/services/magic-link.service.ts","../../../src/lib/services/admin.service.ts","../../../src/lib/services/organization.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 { inject, Injectable } from '@angular/core'\nimport { BETTER_AUTH_CONFIG_TOKEN } from '../providers'\nimport { createAuthClient } from 'better-auth/client'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MainService {\n private readonly config = inject(BETTER_AUTH_CONFIG_TOKEN)\n\n readonly authClient = createAuthClient({\n ...this.config,\n })\n}\n","import { computed, inject, Injectable, signal } from '@angular/core'\nimport { BetterFetchError } from 'better-auth/client'\nimport { AuthSession, Provider } from '../models'\nimport { defer, filter, map, Observable, shareReplay, switchMap, tap } from 'rxjs'\nimport { MainService } from './main.service'\nimport { SocialProviderList } from 'better-auth/social-providers'\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<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.client.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.client.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 /**\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: { email?: string; username?: string; password: string; rememberMe?: boolean }) {\n if (data.email) {\n return this.signInEmail({ email: data.email, password: data.password, rememberMe: data.rememberMe })\n } else if (data.username) {\n return this.signInUsername({ username: data.username, password: data.password, rememberMe: data.rememberMe })\n } else {\n throw new Error('Either email or username must be provided')\n }\n }\n\n signInEmail(data: { email: string; password: string; rememberMe?: boolean }) {\n return defer(() => this.client.signIn.email(data)).pipe(switchMap(() => this.sessionState$.pipe(filter((s) => s !== null))))\n }\n\n signInUsername(data: { username: string; password: string; rememberMe?: boolean }) {\n return defer(() => (this.client as any).signIn.username(data)).pipe(switchMap(() => this.sessionState$.pipe(filter((s) => s !== null))))\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: { name: string; email: string; password: string; username: string; displayUsername?: string }) {\n return defer(() => this.client.signUp.email(data)).pipe(switchMap(() => this.sessionState$.pipe(filter((s) => s !== null))))\n }\n\n signInProvider(provider: Provider) {\n return defer(() => this.client.signIn.social({ provider })).pipe(switchMap(() => this.sessionState$.pipe(filter((s) => s !== null))))\n }\n\n signOut() {\n return defer(() => this.client.signOut()).pipe(switchMap(() => this.sessionState$.pipe(filter((s) => s === null))))\n }\n\n sendVerificationEmail(data: { email: string; callbackURL?: string }) {\n return defer(() => this.client.sendVerificationEmail(data))\n }\n\n requestPasswordReset(data: { email: string; redirectTo?: string }) {\n return defer(() => this.client.requestPasswordReset(data))\n }\n\n resetPassword(data: { newPassword: string; token: string }) {\n return defer(() => this.client.resetPassword(data))\n }\n\n changePassword(data: { currentPassword: string; newPassword: string; revokeOtherSessions?: boolean }) {\n return defer(() => this.client.changePassword(data))\n }\n\n changeEmail(data: { newEmail: string; callbackURL?: string }) {\n return defer(() => this.client.changeEmail(data))\n }\n\n updateUser(data: { name?: string; image?: string; username?: string; displayUsername?: string }) {\n return defer(() => this.client.updateUser(data))\n }\n\n isUsernameAvailable(data: { username: string }) {\n return defer(() => (this.client as any).isUsernameAvailable(data))\n }\n\n deleteUser(data: { callbackURL?: string; token?: string; password?: string }) {\n return defer(() => this.client.deleteUser(data)).pipe(tap(() => this.sessionState$.pipe(filter((s) => s === null))))\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer } from 'rxjs'\nimport { MainService } from './main.service'\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() {\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 { MainService } from './main.service'\nimport { 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() {\n return defer(() => 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 }) {\n return defer(() => this.client.linkSocial(data))\n }\n\n unlinkAccount(data: { providerId: Provider; accountId: string }) {\n return defer(() => this.client.unlinkAccount(data))\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 } from 'rxjs'\nimport { validatePlugin } from '../utils/validate-plugin'\nimport { MainService } from './main.service'\n\n@Injectable({ providedIn: 'root' })\nexport class TwoFactorService {\n private readonly mainService = inject(MainService)\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 }) {\n return defer(() => this.twoFactor.enable(data))\n }\n\n disable(data: { password: string }) {\n return defer(() => this.twoFactor.disable(data))\n }\n\n getTotpUri(data: { password: string }) {\n return defer(() => this.twoFactor.getTotpUri(data))\n }\n\n verifyTotp(data: { code: string; trustDevice?: boolean }) {\n return defer(() => this.twoFactor.verifyTotp(data))\n }\n\n sendOtp(data: { trustDevice?: boolean }) {\n return defer(() => this.twoFactor.sendOtp(data))\n }\n\n verifyOtp(data: { code: string; trustDevice?: boolean }) {\n return defer(() => this.twoFactor.verifyOtp(data))\n }\n\n generateBackupCodes(data: { password: string }) {\n return defer(() => this.twoFactor.generateBackupCodes(data))\n }\n\n verifyBackupCode(data: { code: string; disableSession?: boolean; trustDevice?: boolean }) {\n return defer(() => this.twoFactor.verifyBackupCode(data))\n }\n}\n","import { inject, Injectable } from '@angular/core'\nimport { defer } from 'rxjs'\nimport { MainService } from './main.service'\nimport { validatePlugin } from '../utils/validate-plugin'\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: { name?: string; authenticatorAttachment?: 'platform' | 'cross-platform' }) {\n return defer(() => this.passkey.addPasskey(data))\n }\n\n listUserPasskeys() {\n return defer(() => this.passkey.listUserPasskeys())\n }\n\n deletePasskey(data: { id: string }) {\n return defer(() => this.passkey.deletePasskey(data))\n }\n\n updatePasskey(data: { id: string; name: string }) {\n return defer(() => this.passkey.updatePasskey(data))\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: { email: string; type: 'sign-in' | 'email-verification' | 'forget-password'; otp: string }) {\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: { email: string; name?: string; callbackURL?: string; newUserCallbackURL?: string; errorCallbackURL?: string }) {\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","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 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: 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 { validatePlugin } from '../utils/validate-plugin'\nimport { MainService } from './main.service'\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 createOrganization(data: {\n name: string\n slug: string\n logo?: string\n metadata?: Record<string, any>\n keepCurrentActiveOrganization?: boolean\n }) {\n return defer(() => this.organization.create(data))\n }\n\n checkSlug(data: { slug: string }) {\n return defer(() => this.organization.checkSlug(data))\n }\n\n list() {\n return defer(() => this.organization.list())\n }\n\n setActive(data: { organizationId?: string | null; organizationSlug?: string }) {\n return defer(() => this.organization.setActive(data))\n }\n\n getFullOrganization(data: { organizationId?: string; organizationSlug?: string; membersLimit?: number }) {\n return defer(() => this.organization.getFullOrganization(data))\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 }) {\n return defer(() => this.organization.update(data))\n }\n\n delete(data: { organizationId: string }) {\n return defer(() => this.organization.delete(data))\n }\n\n inviteMember(data: { email: string; role: string | string[]; organizationId?: string; resend?: boolean; teamId?: string }) {\n return defer(() => this.organization.inviteMember(data))\n }\n\n acceptInvitation(data: { invitationId: string }) {\n return defer(() => this.organization.acceptInvitation(data))\n }\n\n cancelInvitation(data: { invitationId: string }) {\n return defer(() => this.organization.cancelInvitation(data))\n }\n\n rejectInvitation(data: { invitationId: string }) {\n return defer(() => this.organization.rejectInvitation(data))\n }\n\n getInvitation(data: { id: string }) {\n return defer(() => this.organization.getInvitation(data))\n }\n\n listInvitations(data: { organizationId?: string }) {\n return defer(() => this.organization.listInvitations(data))\n }\n\n listUserInvitations() {\n return defer(() => 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 }) {\n return defer(() => this.organization.removeMember(data))\n }\n\n updateMemberRoles(data: { memberId: string; role: string | string[]; organizationId?: string }) {\n return defer(() => this.organization.updateMemberRoles(data))\n }\n\n getActiveMember() {\n return defer(() => this.organization.getActiveMember())\n }\n\n leave(data: { organizationId?: string }) {\n return defer(() => this.organization.leave(data))\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: { teamId: string; data: { name?: string; organizationId?: string; createdAt?: Date; updatedAt?: Date } }) {\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 { 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
|
@@ -2,76 +2,16 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { InjectionToken, EnvironmentProviders } from '@angular/core';
|
|
3
3
|
import * as better_auth from 'better-auth';
|
|
4
4
|
import { BetterAuthOptions } from 'better-auth';
|
|
5
|
-
import * as rxjs from 'rxjs';
|
|
6
|
-
import { Observable } from 'rxjs';
|
|
7
5
|
import { Session, User } from 'better-auth/types';
|
|
8
6
|
import { SocialProviderList } from 'better-auth/social-providers';
|
|
7
|
+
import * as rxjs from 'rxjs';
|
|
8
|
+
import { Observable } from 'rxjs';
|
|
9
|
+
import * as ngx_better_auth from 'ngx-better-auth';
|
|
9
10
|
import { UrlTree, CanActivateFn } from '@angular/router';
|
|
10
11
|
|
|
11
12
|
declare const BETTER_AUTH_CONFIG_TOKEN: InjectionToken<BetterAuthOptions>;
|
|
12
13
|
declare function provideBetterAuth(options: BetterAuthOptions): EnvironmentProviders;
|
|
13
14
|
|
|
14
|
-
declare class AdminService {
|
|
15
|
-
private readonly mainService;
|
|
16
|
-
admin: any;
|
|
17
|
-
constructor();
|
|
18
|
-
setRole(data: {
|
|
19
|
-
userId: string;
|
|
20
|
-
role: any;
|
|
21
|
-
}): rxjs.Observable<unknown>;
|
|
22
|
-
setUserPassword(data: {
|
|
23
|
-
userId: string;
|
|
24
|
-
newPassword: string;
|
|
25
|
-
}): rxjs.Observable<unknown>;
|
|
26
|
-
banUser(data: {
|
|
27
|
-
userId: string;
|
|
28
|
-
banReason?: string;
|
|
29
|
-
banExpiresIn?: number;
|
|
30
|
-
}): rxjs.Observable<unknown>;
|
|
31
|
-
unbanUser(data: {
|
|
32
|
-
userId: string;
|
|
33
|
-
}): rxjs.Observable<unknown>;
|
|
34
|
-
listUserSessions(data: {
|
|
35
|
-
userId: string;
|
|
36
|
-
}): rxjs.Observable<unknown>;
|
|
37
|
-
revokeUserSession(data: {
|
|
38
|
-
sessionToken: string;
|
|
39
|
-
}): rxjs.Observable<unknown>;
|
|
40
|
-
revokeUserSessions(data: {
|
|
41
|
-
userId: string;
|
|
42
|
-
}): rxjs.Observable<unknown>;
|
|
43
|
-
impersonateUser(data: {
|
|
44
|
-
userId: string;
|
|
45
|
-
}): rxjs.Observable<unknown>;
|
|
46
|
-
stopImpersonating(): rxjs.Observable<unknown>;
|
|
47
|
-
removeUser(data: {
|
|
48
|
-
userId: string;
|
|
49
|
-
}): rxjs.Observable<unknown>;
|
|
50
|
-
hasPermission(data: {
|
|
51
|
-
userId?: string;
|
|
52
|
-
permission?: any;
|
|
53
|
-
permissions?: any;
|
|
54
|
-
}): rxjs.Observable<unknown>;
|
|
55
|
-
checkRolePermission(data: {
|
|
56
|
-
role: any;
|
|
57
|
-
permission: any;
|
|
58
|
-
}): any;
|
|
59
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<AdminService, never>;
|
|
60
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<AdminService>;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
declare class OrganizationService {
|
|
64
|
-
private readonly mainService;
|
|
65
|
-
organization: any;
|
|
66
|
-
constructor();
|
|
67
|
-
createOrganization(data: {
|
|
68
|
-
name: string;
|
|
69
|
-
slug: string;
|
|
70
|
-
}): rxjs.Observable<unknown>;
|
|
71
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<OrganizationService, never>;
|
|
72
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<OrganizationService>;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
15
|
interface AuthSession {
|
|
76
16
|
session: Session;
|
|
77
17
|
user: User & {
|
|
@@ -105,20 +45,166 @@ declare class AuthService {
|
|
|
105
45
|
*/
|
|
106
46
|
isLoggedIn$(): Observable<boolean>;
|
|
107
47
|
private session$;
|
|
48
|
+
/**
|
|
49
|
+
* pass either email or username to sign in. Needs username plugin enabled to use username.
|
|
50
|
+
* @param data : { email?: string; username?: string; password: string; rememberMe?: boolean }
|
|
51
|
+
*/
|
|
52
|
+
signIn(data: {
|
|
53
|
+
email?: string;
|
|
54
|
+
username?: string;
|
|
55
|
+
password: string;
|
|
56
|
+
rememberMe?: boolean;
|
|
57
|
+
}): Observable<AuthSession>;
|
|
108
58
|
signInEmail(data: {
|
|
109
59
|
email: string;
|
|
110
60
|
password: string;
|
|
111
61
|
rememberMe?: boolean;
|
|
112
62
|
}): Observable<AuthSession>;
|
|
63
|
+
signInUsername(data: {
|
|
64
|
+
username: string;
|
|
65
|
+
password: string;
|
|
66
|
+
rememberMe?: boolean;
|
|
67
|
+
}): Observable<AuthSession>;
|
|
68
|
+
/**
|
|
69
|
+
* Sign up a new user using email and password.
|
|
70
|
+
*
|
|
71
|
+
* Parameters username and displayUsername can be used if the username's plugin is enabled.
|
|
72
|
+
* @param data
|
|
73
|
+
*/
|
|
113
74
|
signUpEmail(data: {
|
|
114
75
|
name: string;
|
|
115
76
|
email: string;
|
|
116
77
|
password: string;
|
|
78
|
+
username: string;
|
|
79
|
+
displayUsername?: string;
|
|
117
80
|
}): Observable<AuthSession>;
|
|
118
81
|
signInProvider(provider: Provider): Observable<AuthSession>;
|
|
119
|
-
signOut(): Observable<
|
|
82
|
+
signOut(): Observable<null>;
|
|
83
|
+
sendVerificationEmail(data: {
|
|
84
|
+
email: string;
|
|
85
|
+
callbackURL?: string;
|
|
86
|
+
}): Observable<{
|
|
87
|
+
data: {
|
|
88
|
+
status: boolean;
|
|
89
|
+
};
|
|
90
|
+
error: null;
|
|
91
|
+
} | {
|
|
92
|
+
data: null;
|
|
93
|
+
error: {
|
|
94
|
+
code?: string | undefined;
|
|
95
|
+
message?: string | undefined;
|
|
96
|
+
status: number;
|
|
97
|
+
statusText: string;
|
|
98
|
+
};
|
|
99
|
+
}>;
|
|
100
|
+
requestPasswordReset(data: {
|
|
101
|
+
email: string;
|
|
102
|
+
redirectTo?: string;
|
|
103
|
+
}): Observable<{
|
|
104
|
+
data: {
|
|
105
|
+
status: boolean;
|
|
106
|
+
};
|
|
107
|
+
error: null;
|
|
108
|
+
} | {
|
|
109
|
+
data: null;
|
|
110
|
+
error: {
|
|
111
|
+
code?: string | undefined;
|
|
112
|
+
message?: string | undefined;
|
|
113
|
+
status: number;
|
|
114
|
+
statusText: string;
|
|
115
|
+
};
|
|
116
|
+
}>;
|
|
117
|
+
resetPassword(data: {
|
|
118
|
+
newPassword: string;
|
|
119
|
+
token: string;
|
|
120
|
+
}): Observable<{
|
|
121
|
+
data: {
|
|
122
|
+
status: boolean;
|
|
123
|
+
};
|
|
124
|
+
error: null;
|
|
125
|
+
} | {
|
|
126
|
+
data: null;
|
|
127
|
+
error: {
|
|
128
|
+
code?: string | undefined;
|
|
129
|
+
message?: string | undefined;
|
|
130
|
+
status: number;
|
|
131
|
+
statusText: string;
|
|
132
|
+
};
|
|
133
|
+
}>;
|
|
134
|
+
changePassword(data: {
|
|
135
|
+
currentPassword: string;
|
|
136
|
+
newPassword: string;
|
|
137
|
+
revokeOtherSessions?: boolean;
|
|
138
|
+
}): Observable<{
|
|
139
|
+
data: {
|
|
140
|
+
token: string | null;
|
|
141
|
+
user: {
|
|
142
|
+
id: string;
|
|
143
|
+
email: string;
|
|
144
|
+
name: string;
|
|
145
|
+
image: string | null | undefined;
|
|
146
|
+
emailVerified: boolean;
|
|
147
|
+
createdAt: Date;
|
|
148
|
+
updatedAt: Date;
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
error: null;
|
|
152
|
+
} | {
|
|
153
|
+
data: null;
|
|
154
|
+
error: {
|
|
155
|
+
code?: string | undefined;
|
|
156
|
+
message?: string | undefined;
|
|
157
|
+
status: number;
|
|
158
|
+
statusText: string;
|
|
159
|
+
};
|
|
160
|
+
}>;
|
|
161
|
+
changeEmail(data: {
|
|
162
|
+
newEmail: string;
|
|
163
|
+
callbackURL?: string;
|
|
164
|
+
}): Observable<{
|
|
165
|
+
data: {
|
|
166
|
+
status: boolean;
|
|
167
|
+
};
|
|
168
|
+
error: null;
|
|
169
|
+
} | {
|
|
170
|
+
data: null;
|
|
171
|
+
error: {
|
|
172
|
+
code?: string | undefined;
|
|
173
|
+
message?: string | undefined;
|
|
174
|
+
status: number;
|
|
175
|
+
statusText: string;
|
|
176
|
+
};
|
|
177
|
+
}>;
|
|
178
|
+
updateUser(data: {
|
|
179
|
+
name?: string;
|
|
180
|
+
image?: string;
|
|
181
|
+
username?: string;
|
|
182
|
+
displayUsername?: string;
|
|
183
|
+
}): Observable<{
|
|
184
|
+
data: {
|
|
185
|
+
status: boolean;
|
|
186
|
+
};
|
|
187
|
+
error: null;
|
|
188
|
+
} | {
|
|
189
|
+
data: null;
|
|
190
|
+
error: {
|
|
191
|
+
code?: string | undefined;
|
|
192
|
+
message?: string | undefined;
|
|
193
|
+
status: number;
|
|
194
|
+
statusText: string;
|
|
195
|
+
};
|
|
196
|
+
}>;
|
|
197
|
+
isUsernameAvailable(data: {
|
|
198
|
+
username: string;
|
|
199
|
+
}): Observable<unknown>;
|
|
200
|
+
deleteUser(data: {
|
|
201
|
+
callbackURL?: string;
|
|
202
|
+
token?: string;
|
|
203
|
+
password?: string;
|
|
204
|
+
}): Observable<{
|
|
120
205
|
data: {
|
|
121
206
|
success: boolean;
|
|
207
|
+
message: string;
|
|
122
208
|
};
|
|
123
209
|
error: null;
|
|
124
210
|
} | {
|
|
@@ -204,6 +290,388 @@ declare class SessionService {
|
|
|
204
290
|
static ɵprov: i0.ɵɵInjectableDeclaration<SessionService>;
|
|
205
291
|
}
|
|
206
292
|
|
|
293
|
+
declare class AccountService {
|
|
294
|
+
private readonly mainService;
|
|
295
|
+
private readonly client;
|
|
296
|
+
listAccounts(): rxjs.Observable<{
|
|
297
|
+
data: {
|
|
298
|
+
id: string;
|
|
299
|
+
provider: string;
|
|
300
|
+
createdAt: Date;
|
|
301
|
+
updatedAt: Date;
|
|
302
|
+
accountId: string;
|
|
303
|
+
scopes: string[];
|
|
304
|
+
}[];
|
|
305
|
+
error: null;
|
|
306
|
+
} | {
|
|
307
|
+
data: null;
|
|
308
|
+
error: {
|
|
309
|
+
code?: string | undefined;
|
|
310
|
+
message?: string | undefined;
|
|
311
|
+
status: number;
|
|
312
|
+
statusText: string;
|
|
313
|
+
};
|
|
314
|
+
}>;
|
|
315
|
+
linkSocial(data: {
|
|
316
|
+
provider: Provider;
|
|
317
|
+
callbackURL?: string;
|
|
318
|
+
scopes?: string[];
|
|
319
|
+
idToken?: {
|
|
320
|
+
token: string;
|
|
321
|
+
nonce?: string;
|
|
322
|
+
accessToken?: string;
|
|
323
|
+
refreshToken?: string;
|
|
324
|
+
};
|
|
325
|
+
}): rxjs.Observable<{
|
|
326
|
+
data: {
|
|
327
|
+
url: string;
|
|
328
|
+
redirect: boolean;
|
|
329
|
+
};
|
|
330
|
+
error: null;
|
|
331
|
+
} | {
|
|
332
|
+
data: null;
|
|
333
|
+
error: {
|
|
334
|
+
code?: string | undefined;
|
|
335
|
+
message?: string | undefined;
|
|
336
|
+
status: number;
|
|
337
|
+
statusText: string;
|
|
338
|
+
};
|
|
339
|
+
}>;
|
|
340
|
+
unlinkAccount(data: {
|
|
341
|
+
providerId: Provider;
|
|
342
|
+
accountId: string;
|
|
343
|
+
}): rxjs.Observable<{
|
|
344
|
+
data: {
|
|
345
|
+
status: boolean;
|
|
346
|
+
};
|
|
347
|
+
error: null;
|
|
348
|
+
} | {
|
|
349
|
+
data: null;
|
|
350
|
+
error: {
|
|
351
|
+
code?: string | undefined;
|
|
352
|
+
message?: string | undefined;
|
|
353
|
+
status: number;
|
|
354
|
+
statusText: string;
|
|
355
|
+
};
|
|
356
|
+
}>;
|
|
357
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AccountService, never>;
|
|
358
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AccountService>;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
declare class TwoFactorService {
|
|
362
|
+
private readonly mainService;
|
|
363
|
+
twoFactor: any;
|
|
364
|
+
constructor();
|
|
365
|
+
enable(data: {
|
|
366
|
+
password: string;
|
|
367
|
+
issuer?: string;
|
|
368
|
+
}): rxjs.Observable<unknown>;
|
|
369
|
+
disable(data: {
|
|
370
|
+
password: string;
|
|
371
|
+
}): rxjs.Observable<unknown>;
|
|
372
|
+
getTotpUri(data: {
|
|
373
|
+
password: string;
|
|
374
|
+
}): rxjs.Observable<unknown>;
|
|
375
|
+
verifyTotp(data: {
|
|
376
|
+
code: string;
|
|
377
|
+
trustDevice?: boolean;
|
|
378
|
+
}): rxjs.Observable<unknown>;
|
|
379
|
+
sendOtp(data: {
|
|
380
|
+
trustDevice?: boolean;
|
|
381
|
+
}): rxjs.Observable<unknown>;
|
|
382
|
+
verifyOtp(data: {
|
|
383
|
+
code: string;
|
|
384
|
+
trustDevice?: boolean;
|
|
385
|
+
}): rxjs.Observable<unknown>;
|
|
386
|
+
generateBackupCodes(data: {
|
|
387
|
+
password: string;
|
|
388
|
+
}): rxjs.Observable<unknown>;
|
|
389
|
+
verifyBackupCode(data: {
|
|
390
|
+
code: string;
|
|
391
|
+
disableSession?: boolean;
|
|
392
|
+
trustDevice?: boolean;
|
|
393
|
+
}): rxjs.Observable<unknown>;
|
|
394
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<TwoFactorService, never>;
|
|
395
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<TwoFactorService>;
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
declare class PasskeyService {
|
|
399
|
+
private readonly mainService;
|
|
400
|
+
passkey: any;
|
|
401
|
+
constructor();
|
|
402
|
+
addPasskey(data: {
|
|
403
|
+
name?: string;
|
|
404
|
+
authenticatorAttachment?: 'platform' | 'cross-platform';
|
|
405
|
+
}): rxjs.Observable<unknown>;
|
|
406
|
+
listUserPasskeys(): rxjs.Observable<unknown>;
|
|
407
|
+
deletePasskey(data: {
|
|
408
|
+
id: string;
|
|
409
|
+
}): rxjs.Observable<unknown>;
|
|
410
|
+
updatePasskey(data: {
|
|
411
|
+
id: string;
|
|
412
|
+
name: string;
|
|
413
|
+
}): rxjs.Observable<unknown>;
|
|
414
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PasskeyService, never>;
|
|
415
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<PasskeyService>;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
declare class GenericOauthService {
|
|
419
|
+
private readonly mainService;
|
|
420
|
+
private readonly authService;
|
|
421
|
+
oauth: any;
|
|
422
|
+
constructor();
|
|
423
|
+
signIn(data: {
|
|
424
|
+
providerId: string;
|
|
425
|
+
callbackURL?: string;
|
|
426
|
+
errorCallbackURL?: string;
|
|
427
|
+
newUserCallbackURL?: string;
|
|
428
|
+
disableRedirect?: boolean;
|
|
429
|
+
scopes?: string[];
|
|
430
|
+
requestSignUp?: boolean;
|
|
431
|
+
}): rxjs.Observable<ngx_better_auth.AuthSession>;
|
|
432
|
+
link(data: {
|
|
433
|
+
providerId: string;
|
|
434
|
+
callbackURL: string;
|
|
435
|
+
}): rxjs.Observable<unknown>;
|
|
436
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<GenericOauthService, never>;
|
|
437
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<GenericOauthService>;
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
declare class EmailOtpService {
|
|
441
|
+
private readonly mainService;
|
|
442
|
+
private readonly authService;
|
|
443
|
+
emailOtp: any;
|
|
444
|
+
constructor();
|
|
445
|
+
signInEmailOtp(data: {
|
|
446
|
+
email: string;
|
|
447
|
+
otp: string;
|
|
448
|
+
}): rxjs.Observable<ngx_better_auth.AuthSession>;
|
|
449
|
+
sendVerificationOtp(data: {
|
|
450
|
+
email: string;
|
|
451
|
+
type: 'sign-in' | 'email-verification' | 'forget-password';
|
|
452
|
+
}): rxjs.Observable<unknown>;
|
|
453
|
+
checkVerificationOtp(data: {
|
|
454
|
+
email: string;
|
|
455
|
+
type: 'sign-in' | 'email-verification' | 'forget-password';
|
|
456
|
+
otp: string;
|
|
457
|
+
}): rxjs.Observable<unknown>;
|
|
458
|
+
verifyEmail(data: {
|
|
459
|
+
email: string;
|
|
460
|
+
otp: string;
|
|
461
|
+
}): rxjs.Observable<unknown>;
|
|
462
|
+
resetPassword(data: {
|
|
463
|
+
email: string;
|
|
464
|
+
otp: string;
|
|
465
|
+
password: string;
|
|
466
|
+
}): rxjs.Observable<unknown>;
|
|
467
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<EmailOtpService, never>;
|
|
468
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<EmailOtpService>;
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
declare class OneTapService {
|
|
472
|
+
private readonly mainService;
|
|
473
|
+
oneTap: any;
|
|
474
|
+
constructor();
|
|
475
|
+
signIn(data?: {
|
|
476
|
+
fetchOptions?: {
|
|
477
|
+
onSuccess: () => void;
|
|
478
|
+
};
|
|
479
|
+
callbackURL?: string;
|
|
480
|
+
onPromptNotification?: (notification: any) => void;
|
|
481
|
+
}): rxjs.Observable<unknown>;
|
|
482
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<OneTapService, never>;
|
|
483
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<OneTapService>;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
declare class MagicLinkService {
|
|
487
|
+
private readonly mainService;
|
|
488
|
+
magicLink: any;
|
|
489
|
+
constructor();
|
|
490
|
+
signIn(data: {
|
|
491
|
+
email: string;
|
|
492
|
+
name?: string;
|
|
493
|
+
callbackURL?: string;
|
|
494
|
+
newUserCallbackURL?: string;
|
|
495
|
+
errorCallbackURL?: string;
|
|
496
|
+
}): rxjs.Observable<unknown>;
|
|
497
|
+
verify(data: {
|
|
498
|
+
token: string;
|
|
499
|
+
callbackURL?: string;
|
|
500
|
+
}): rxjs.Observable<unknown>;
|
|
501
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MagicLinkService, never>;
|
|
502
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<MagicLinkService>;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
declare class AdminService {
|
|
506
|
+
private readonly mainService;
|
|
507
|
+
admin: any;
|
|
508
|
+
constructor();
|
|
509
|
+
setRole(data: {
|
|
510
|
+
userId: string;
|
|
511
|
+
role: any;
|
|
512
|
+
}): rxjs.Observable<unknown>;
|
|
513
|
+
setUserPassword(data: {
|
|
514
|
+
userId: string;
|
|
515
|
+
newPassword: string;
|
|
516
|
+
}): rxjs.Observable<unknown>;
|
|
517
|
+
banUser(data: {
|
|
518
|
+
userId: string;
|
|
519
|
+
banReason?: string;
|
|
520
|
+
banExpiresIn?: number;
|
|
521
|
+
}): rxjs.Observable<unknown>;
|
|
522
|
+
unbanUser(data: {
|
|
523
|
+
userId: string;
|
|
524
|
+
}): rxjs.Observable<unknown>;
|
|
525
|
+
listUserSessions(data: {
|
|
526
|
+
userId: string;
|
|
527
|
+
}): rxjs.Observable<unknown>;
|
|
528
|
+
revokeUserSession(data: {
|
|
529
|
+
sessionToken: string;
|
|
530
|
+
}): rxjs.Observable<unknown>;
|
|
531
|
+
revokeUserSessions(data: {
|
|
532
|
+
userId: string;
|
|
533
|
+
}): rxjs.Observable<unknown>;
|
|
534
|
+
impersonateUser(data: {
|
|
535
|
+
userId: string;
|
|
536
|
+
}): rxjs.Observable<unknown>;
|
|
537
|
+
stopImpersonating(): rxjs.Observable<unknown>;
|
|
538
|
+
removeUser(data: {
|
|
539
|
+
userId: string;
|
|
540
|
+
}): rxjs.Observable<unknown>;
|
|
541
|
+
hasPermission(data: {
|
|
542
|
+
userId?: string;
|
|
543
|
+
permission?: any;
|
|
544
|
+
permissions?: any;
|
|
545
|
+
}): rxjs.Observable<unknown>;
|
|
546
|
+
checkRolePermission(data: {
|
|
547
|
+
role: any;
|
|
548
|
+
permission: any;
|
|
549
|
+
}): any;
|
|
550
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AdminService, never>;
|
|
551
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AdminService>;
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
declare class OrganizationService {
|
|
555
|
+
private readonly mainService;
|
|
556
|
+
organization: any;
|
|
557
|
+
constructor();
|
|
558
|
+
createOrganization(data: {
|
|
559
|
+
name: string;
|
|
560
|
+
slug: string;
|
|
561
|
+
logo?: string;
|
|
562
|
+
metadata?: Record<string, any>;
|
|
563
|
+
keepCurrentActiveOrganization?: boolean;
|
|
564
|
+
}): rxjs.Observable<unknown>;
|
|
565
|
+
checkSlug(data: {
|
|
566
|
+
slug: string;
|
|
567
|
+
}): rxjs.Observable<unknown>;
|
|
568
|
+
list(): rxjs.Observable<unknown>;
|
|
569
|
+
setActive(data: {
|
|
570
|
+
organizationId?: string | null;
|
|
571
|
+
organizationSlug?: string;
|
|
572
|
+
}): rxjs.Observable<unknown>;
|
|
573
|
+
getFullOrganization(data: {
|
|
574
|
+
organizationId?: string;
|
|
575
|
+
organizationSlug?: string;
|
|
576
|
+
membersLimit?: number;
|
|
577
|
+
}): rxjs.Observable<unknown>;
|
|
578
|
+
update(data: {
|
|
579
|
+
data: {
|
|
580
|
+
name?: string;
|
|
581
|
+
slug?: string;
|
|
582
|
+
logo?: string;
|
|
583
|
+
metadata?: Record<string, any>;
|
|
584
|
+
};
|
|
585
|
+
organizationId?: string;
|
|
586
|
+
}): rxjs.Observable<unknown>;
|
|
587
|
+
delete(data: {
|
|
588
|
+
organizationId: string;
|
|
589
|
+
}): rxjs.Observable<unknown>;
|
|
590
|
+
inviteMember(data: {
|
|
591
|
+
email: string;
|
|
592
|
+
role: string | string[];
|
|
593
|
+
organizationId?: string;
|
|
594
|
+
resend?: boolean;
|
|
595
|
+
teamId?: string;
|
|
596
|
+
}): rxjs.Observable<unknown>;
|
|
597
|
+
acceptInvitation(data: {
|
|
598
|
+
invitationId: string;
|
|
599
|
+
}): rxjs.Observable<unknown>;
|
|
600
|
+
cancelInvitation(data: {
|
|
601
|
+
invitationId: string;
|
|
602
|
+
}): rxjs.Observable<unknown>;
|
|
603
|
+
rejectInvitation(data: {
|
|
604
|
+
invitationId: string;
|
|
605
|
+
}): rxjs.Observable<unknown>;
|
|
606
|
+
getInvitation(data: {
|
|
607
|
+
id: string;
|
|
608
|
+
}): rxjs.Observable<unknown>;
|
|
609
|
+
listInvitations(data: {
|
|
610
|
+
organizationId?: string;
|
|
611
|
+
}): rxjs.Observable<unknown>;
|
|
612
|
+
listUserInvitations(): rxjs.Observable<unknown>;
|
|
613
|
+
listMembers(data?: {
|
|
614
|
+
organizationId?: string;
|
|
615
|
+
limit?: number;
|
|
616
|
+
offset?: number;
|
|
617
|
+
sortBy?: string;
|
|
618
|
+
sortDirection?: 'asc' | 'desc';
|
|
619
|
+
filterField?: string;
|
|
620
|
+
filterOperator?: 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'nin' | 'contains';
|
|
621
|
+
filterValue?: string;
|
|
622
|
+
}): rxjs.Observable<unknown>;
|
|
623
|
+
removeMember(data: {
|
|
624
|
+
memberIdOrEmail: string;
|
|
625
|
+
organizationId?: string;
|
|
626
|
+
}): rxjs.Observable<unknown>;
|
|
627
|
+
updateMemberRoles(data: {
|
|
628
|
+
memberId: string;
|
|
629
|
+
role: string | string[];
|
|
630
|
+
organizationId?: string;
|
|
631
|
+
}): rxjs.Observable<unknown>;
|
|
632
|
+
getActiveMember(): rxjs.Observable<unknown>;
|
|
633
|
+
leave(data: {
|
|
634
|
+
organizationId?: string;
|
|
635
|
+
}): rxjs.Observable<unknown>;
|
|
636
|
+
createTeam(data: {
|
|
637
|
+
name: string;
|
|
638
|
+
organizationId?: string;
|
|
639
|
+
}): rxjs.Observable<unknown>;
|
|
640
|
+
listTeams(data: {
|
|
641
|
+
organizationId?: string;
|
|
642
|
+
}): rxjs.Observable<unknown>;
|
|
643
|
+
updateTeam(data: {
|
|
644
|
+
teamId: string;
|
|
645
|
+
data: {
|
|
646
|
+
name?: string;
|
|
647
|
+
organizationId?: string;
|
|
648
|
+
createdAt?: Date;
|
|
649
|
+
updatedAt?: Date;
|
|
650
|
+
};
|
|
651
|
+
}): rxjs.Observable<unknown>;
|
|
652
|
+
removeTeam(data: {
|
|
653
|
+
teamId: string;
|
|
654
|
+
organizationId?: string;
|
|
655
|
+
}): rxjs.Observable<unknown>;
|
|
656
|
+
setActiveTeam(data: {
|
|
657
|
+
teamId?: string;
|
|
658
|
+
}): rxjs.Observable<unknown>;
|
|
659
|
+
listUsersTeams(): rxjs.Observable<unknown>;
|
|
660
|
+
listTeamMembers(data: {
|
|
661
|
+
teamId: string;
|
|
662
|
+
}): rxjs.Observable<unknown>;
|
|
663
|
+
addTeamMember(data: {
|
|
664
|
+
teamId: string;
|
|
665
|
+
userId: string;
|
|
666
|
+
}): rxjs.Observable<unknown>;
|
|
667
|
+
removeTeamMember(data: {
|
|
668
|
+
teamId: string;
|
|
669
|
+
userId: string;
|
|
670
|
+
}): rxjs.Observable<unknown>;
|
|
671
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<OrganizationService, never>;
|
|
672
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<OrganizationService>;
|
|
673
|
+
}
|
|
674
|
+
|
|
207
675
|
/**
|
|
208
676
|
* Redirects unauthorized users to the specified commands (route).
|
|
209
677
|
*/
|
|
@@ -222,5 +690,5 @@ declare function canActivate(pipe: () => Observable<boolean | UrlTree> | Promise
|
|
|
222
690
|
canActivate: [CanActivateFn];
|
|
223
691
|
};
|
|
224
692
|
|
|
225
|
-
export { AdminService, AuthService, BETTER_AUTH_CONFIG_TOKEN, OrganizationService, SessionService, canActivate, hasRole, provideBetterAuth, redirectLoggedInTo, redirectUnauthorizedTo };
|
|
693
|
+
export { AccountService, AdminService, AuthService, BETTER_AUTH_CONFIG_TOKEN, EmailOtpService, GenericOauthService, MagicLinkService, OneTapService, OrganizationService, PasskeyService, SessionService, TwoFactorService, canActivate, hasRole, provideBetterAuth, redirectLoggedInTo, redirectUnauthorizedTo };
|
|
226
694
|
export type { AuthSession, Provider };
|