@passflow/core 0.0.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 +1087 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2149 -0
- package/dist/index.mjs.map +1 -0
- package/dist/lib/api/app.d.ts +8 -0
- package/dist/lib/api/app.d.ts.map +1 -0
- package/dist/lib/api/auth.d.ts +23 -0
- package/dist/lib/api/auth.d.ts.map +1 -0
- package/dist/lib/api/axios-client.d.ts +36 -0
- package/dist/lib/api/axios-client.d.ts.map +1 -0
- package/dist/lib/api/index.d.ts +8 -0
- package/dist/lib/api/index.d.ts.map +1 -0
- package/dist/lib/api/invitation.d.ts +77 -0
- package/dist/lib/api/invitation.d.ts.map +1 -0
- package/dist/lib/api/model.d.ts +459 -0
- package/dist/lib/api/model.d.ts.map +1 -0
- package/dist/lib/api/setting.d.ts +10 -0
- package/dist/lib/api/setting.d.ts.map +1 -0
- package/dist/lib/api/tenant.d.ts +213 -0
- package/dist/lib/api/tenant.d.ts.map +1 -0
- package/dist/lib/api/user.d.ts +19 -0
- package/dist/lib/api/user.d.ts.map +1 -0
- package/dist/lib/constants/index.d.ts +8 -0
- package/dist/lib/constants/index.d.ts.map +1 -0
- package/dist/lib/device-service/index.d.ts +7 -0
- package/dist/lib/device-service/index.d.ts.map +1 -0
- package/dist/lib/index.d.ts +8 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/passflow.d.ts +115 -0
- package/dist/lib/passflow.d.ts.map +1 -0
- package/dist/lib/services/auth-service.d.ts +67 -0
- package/dist/lib/services/auth-service.d.ts.map +1 -0
- package/dist/lib/services/index.d.ts +7 -0
- package/dist/lib/services/index.d.ts.map +1 -0
- package/dist/lib/services/invitation-service.d.ts +44 -0
- package/dist/lib/services/invitation-service.d.ts.map +1 -0
- package/dist/lib/services/logger.d.ts +24 -0
- package/dist/lib/services/logger.d.ts.map +1 -0
- package/dist/lib/services/tenant-service.d.ts +200 -0
- package/dist/lib/services/tenant-service.d.ts.map +1 -0
- package/dist/lib/services/tenant-user-membership.d.ts +76 -0
- package/dist/lib/services/tenant-user-membership.d.ts.map +1 -0
- package/dist/lib/services/token-cache-service.d.ts +26 -0
- package/dist/lib/services/token-cache-service.d.ts.map +1 -0
- package/dist/lib/services/user-service.d.ts +39 -0
- package/dist/lib/services/user-service.d.ts.map +1 -0
- package/dist/lib/storage-manager/index.d.ts +37 -0
- package/dist/lib/storage-manager/index.d.ts.map +1 -0
- package/dist/lib/store.d.ts +89 -0
- package/dist/lib/store.d.ts.map +1 -0
- package/dist/lib/token-service/index.d.ts +4 -0
- package/dist/lib/token-service/index.d.ts.map +1 -0
- package/dist/lib/token-service/membership.d.ts +37 -0
- package/dist/lib/token-service/membership.d.ts.map +1 -0
- package/dist/lib/token-service/service.d.ts +35 -0
- package/dist/lib/token-service/service.d.ts.map +1 -0
- package/dist/lib/token-service/token.d.ts +34 -0
- package/dist/lib/token-service/token.d.ts.map +1 -0
- package/dist/lib/types/index.d.ts +22 -0
- package/dist/lib/types/index.d.ts.map +1 -0
- package/dist/tests/storage-manager/fake-storage.d.ts +7 -0
- package/dist/tests/storage-manager/fake-storage.d.ts.map +1 -0
- package/dist/tests/storage-manager/storage-manager.test.d.ts +2 -0
- package/dist/tests/storage-manager/storage-manager.test.d.ts.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { PassflowAuthorizationResponse, PassflowGroupResponse, PassflowInvitationsResponse, PassflowRoleResponse, PassflowStatusResponse, PassflowTenantResponse, PassflowUserTenantMembershipResponse, TenantAPI } from '../api';
|
|
2
|
+
import { Logger } from './logger';
|
|
3
|
+
import { TenantUserMembership } from './tenant-user-membership';
|
|
4
|
+
/**
|
|
5
|
+
* Service for managing tenants
|
|
6
|
+
*/
|
|
7
|
+
export declare class TenantService {
|
|
8
|
+
private tenantAPI;
|
|
9
|
+
private scopes;
|
|
10
|
+
private logger;
|
|
11
|
+
constructor(tenantAPI: TenantAPI, scopes: string[], logger?: Logger);
|
|
12
|
+
/**
|
|
13
|
+
* Handle Passflow API errors
|
|
14
|
+
* @param error The error object
|
|
15
|
+
* @param context Context information for logging
|
|
16
|
+
* @throws Formatted error with Passflow API error details
|
|
17
|
+
*/
|
|
18
|
+
private handlePassflowError;
|
|
19
|
+
/**
|
|
20
|
+
* Join a tenant invitation
|
|
21
|
+
* @param token The invitation token
|
|
22
|
+
* @param scopes Optional scopes to request
|
|
23
|
+
* @returns Promise with invite response
|
|
24
|
+
*/
|
|
25
|
+
joinInvitation(token: string, scopes?: string[]): Promise<PassflowAuthorizationResponse>;
|
|
26
|
+
/**
|
|
27
|
+
* Create a new tenant
|
|
28
|
+
* @param name The name of the tenant
|
|
29
|
+
* @returns Promise with tenant response
|
|
30
|
+
*/
|
|
31
|
+
createTenant(name: string): Promise<PassflowTenantResponse>;
|
|
32
|
+
/**
|
|
33
|
+
* Get tenant details
|
|
34
|
+
* @param tenantId Tenant ID
|
|
35
|
+
* @returns Promise with tenant response
|
|
36
|
+
*/
|
|
37
|
+
/**
|
|
38
|
+
* Get tenant details
|
|
39
|
+
* @param tenantId Tenant ID
|
|
40
|
+
* @returns Promise with tenant response
|
|
41
|
+
*/
|
|
42
|
+
getTenantDetails(tenantId: string): Promise<PassflowTenantResponse>;
|
|
43
|
+
/**
|
|
44
|
+
* Get tenant details and transform into TenantUserMembership
|
|
45
|
+
* @param tenantId Tenant ID
|
|
46
|
+
* @returns Promise with TenantUserMembership instance
|
|
47
|
+
*/
|
|
48
|
+
getTenantUserMembership(tenantId: string): Promise<TenantUserMembership>;
|
|
49
|
+
/**
|
|
50
|
+
* Update tenant name
|
|
51
|
+
* @param tenantId Tenant ID
|
|
52
|
+
* @param name New tenant name
|
|
53
|
+
* @returns Promise with status response
|
|
54
|
+
*/
|
|
55
|
+
updateTenant(tenantId: string, name: string): Promise<PassflowStatusResponse>;
|
|
56
|
+
/**
|
|
57
|
+
* Delete a tenant
|
|
58
|
+
* @param tenantId Tenant ID
|
|
59
|
+
* @returns Promise with status response
|
|
60
|
+
*/
|
|
61
|
+
deleteTenant(tenantId: string): Promise<PassflowStatusResponse>;
|
|
62
|
+
/**
|
|
63
|
+
* Get user's tenant memberships
|
|
64
|
+
* @returns Promise with user tenant membership response
|
|
65
|
+
*/
|
|
66
|
+
getUserTenantMembership(): Promise<PassflowUserTenantMembershipResponse>;
|
|
67
|
+
/**
|
|
68
|
+
* Create a group in a tenant
|
|
69
|
+
* @param tenantId Tenant ID
|
|
70
|
+
* @param name Group name
|
|
71
|
+
* @returns Promise with group response
|
|
72
|
+
*/
|
|
73
|
+
createGroup(tenantId: string, name: string): Promise<PassflowGroupResponse>;
|
|
74
|
+
/**
|
|
75
|
+
* Get group information
|
|
76
|
+
* @param tenantId Tenant ID
|
|
77
|
+
* @param groupId Group ID
|
|
78
|
+
* @returns Promise with group response
|
|
79
|
+
*/
|
|
80
|
+
getGroupInfo(tenantId: string, groupId: string): Promise<PassflowGroupResponse>;
|
|
81
|
+
/**
|
|
82
|
+
* Update a group
|
|
83
|
+
* @param tenantId Tenant ID
|
|
84
|
+
* @param groupId Group ID
|
|
85
|
+
* @param name New group name
|
|
86
|
+
* @returns Promise with group response
|
|
87
|
+
*/
|
|
88
|
+
updateGroup(tenantId: string, groupId: string, name: string): Promise<PassflowGroupResponse>;
|
|
89
|
+
/**
|
|
90
|
+
* Delete a group
|
|
91
|
+
* @param tenantId Tenant ID
|
|
92
|
+
* @param groupId Group ID
|
|
93
|
+
* @returns Promise with status response
|
|
94
|
+
*/
|
|
95
|
+
deleteGroup(tenantId: string, groupId: string): Promise<PassflowStatusResponse>;
|
|
96
|
+
/**
|
|
97
|
+
* Add a user to a group
|
|
98
|
+
* @param tenantId Tenant ID
|
|
99
|
+
* @param groupId Group ID
|
|
100
|
+
* @param userId User ID
|
|
101
|
+
* @param role Role to assign
|
|
102
|
+
* @returns Promise with status response
|
|
103
|
+
*/
|
|
104
|
+
addUserToGroup(tenantId: string, groupId: string, userId: string, role: string): Promise<PassflowStatusResponse>;
|
|
105
|
+
/**
|
|
106
|
+
* Remove user roles from a group
|
|
107
|
+
* @param tenantId Tenant ID
|
|
108
|
+
* @param groupId Group ID
|
|
109
|
+
* @param userId User ID
|
|
110
|
+
* @param roles Roles to remove
|
|
111
|
+
* @returns Promise with status response
|
|
112
|
+
*/
|
|
113
|
+
removeUserRolesFromGroup(tenantId: string, groupId: string, userId: string, roles: string[]): Promise<PassflowStatusResponse>;
|
|
114
|
+
/**
|
|
115
|
+
* Change user roles in a group
|
|
116
|
+
* @param tenantId Tenant ID
|
|
117
|
+
* @param groupId Group ID
|
|
118
|
+
* @param userId User ID
|
|
119
|
+
* @param roles New roles to assign
|
|
120
|
+
* @returns Promise with status response
|
|
121
|
+
*/
|
|
122
|
+
changeUserRoles(tenantId: string, groupId: string, userId: string, roles: string[]): Promise<PassflowStatusResponse>;
|
|
123
|
+
/**
|
|
124
|
+
* Delete a user from a group
|
|
125
|
+
* @param tenantId Tenant ID
|
|
126
|
+
* @param groupId Group ID
|
|
127
|
+
* @param userId User ID
|
|
128
|
+
* @returns Promise with status response
|
|
129
|
+
*/
|
|
130
|
+
deleteUserFromGroup(tenantId: string, groupId: string, userId: string): Promise<PassflowStatusResponse>;
|
|
131
|
+
/**
|
|
132
|
+
* Get roles for a tenant
|
|
133
|
+
* @param tenantId Tenant ID
|
|
134
|
+
* @returns Promise with array of role responses
|
|
135
|
+
*/
|
|
136
|
+
getRolesForTenant(tenantId: string): Promise<PassflowRoleResponse[]>;
|
|
137
|
+
/**
|
|
138
|
+
* Create a role for a tenant
|
|
139
|
+
* @param tenantId Tenant ID
|
|
140
|
+
* @param name Role name
|
|
141
|
+
* @returns Promise with role response
|
|
142
|
+
*/
|
|
143
|
+
createRoleForTenant(tenantId: string, name: string): Promise<PassflowRoleResponse>;
|
|
144
|
+
/**
|
|
145
|
+
* Update a role
|
|
146
|
+
* @param tenantId Tenant ID
|
|
147
|
+
* @param roleId Role ID
|
|
148
|
+
* @param name New role name
|
|
149
|
+
* @returns Promise with role response
|
|
150
|
+
*/
|
|
151
|
+
updateRole(tenantId: string, roleId: string, name: string): Promise<PassflowRoleResponse>;
|
|
152
|
+
/**
|
|
153
|
+
* Delete a role
|
|
154
|
+
* @param tenantId Tenant ID
|
|
155
|
+
* @param roleId Role ID
|
|
156
|
+
* @returns Promise with status response
|
|
157
|
+
*/
|
|
158
|
+
deleteRole(tenantId: string, roleId: string): Promise<PassflowStatusResponse>;
|
|
159
|
+
/**
|
|
160
|
+
* Delete a user from a tenant
|
|
161
|
+
* @param tenantId Tenant ID
|
|
162
|
+
* @param userId User ID
|
|
163
|
+
* @returns Promise with status response
|
|
164
|
+
*/
|
|
165
|
+
deleteUserFromTenant(tenantId: string, userId: string): Promise<PassflowStatusResponse>;
|
|
166
|
+
/**
|
|
167
|
+
* Get invitations to a group
|
|
168
|
+
* @param tenantId Tenant ID
|
|
169
|
+
* @param groupId Group ID
|
|
170
|
+
* @param limit Maximum number of invitations to return
|
|
171
|
+
* @param skip Number of invitations to skip
|
|
172
|
+
* @returns Promise with invitations response
|
|
173
|
+
*/
|
|
174
|
+
getGroupInvitations(tenantId: string, groupId: string, limit: number, skip: number): Promise<PassflowInvitationsResponse>;
|
|
175
|
+
/**
|
|
176
|
+
* Get invitations to a tenant
|
|
177
|
+
* @param tenantId Tenant ID
|
|
178
|
+
* @param limit Maximum number of invitations to return
|
|
179
|
+
* @param skip Number of invitations to skip
|
|
180
|
+
* @returns Promise with invitations response
|
|
181
|
+
*/
|
|
182
|
+
getTenantInvitations(tenantId: string, limit: number, skip: number): Promise<PassflowInvitationsResponse>;
|
|
183
|
+
/**
|
|
184
|
+
* Invalidate an invitation by ID
|
|
185
|
+
* @param tenantId Tenant ID
|
|
186
|
+
* @param groupId Group ID
|
|
187
|
+
* @param inviteId Invitation ID
|
|
188
|
+
* @returns Promise with empty record
|
|
189
|
+
*/
|
|
190
|
+
invalidateInviteById(tenantId: string, groupId: string, inviteId: string): Promise<Record<string, never>>;
|
|
191
|
+
/**
|
|
192
|
+
* Invalidate an invitation by email
|
|
193
|
+
* @param tenantId Tenant ID
|
|
194
|
+
* @param groupId Group ID
|
|
195
|
+
* @param email Email address
|
|
196
|
+
* @returns Promise with empty record
|
|
197
|
+
*/
|
|
198
|
+
invalidateInviteByEmail(tenantId: string, groupId: string, email: string): Promise<Record<string, never>>;
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=tenant-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-service.d.ts","sourceRoot":"","sources":["../../../lib/services/tenant-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { PassflowTenantResponse } from '../api/model';
|
|
2
|
+
/**
|
|
3
|
+
* Flat user representation
|
|
4
|
+
*/
|
|
5
|
+
export interface User {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string | null;
|
|
8
|
+
email: string | null;
|
|
9
|
+
phone: string | null;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Flat group representation
|
|
13
|
+
*/
|
|
14
|
+
export interface Group {
|
|
15
|
+
id: string;
|
|
16
|
+
name: string;
|
|
17
|
+
default: boolean;
|
|
18
|
+
updated_at: string;
|
|
19
|
+
created_at: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Flat role representation
|
|
23
|
+
*/
|
|
24
|
+
export interface Role {
|
|
25
|
+
id: string;
|
|
26
|
+
tenant_id: string;
|
|
27
|
+
name: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Maps a user to a group with specific roles
|
|
31
|
+
*/
|
|
32
|
+
export interface Membership {
|
|
33
|
+
userId: string;
|
|
34
|
+
groupId: string;
|
|
35
|
+
roleIds: string[];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Full tenant view with lookup maps
|
|
39
|
+
*/
|
|
40
|
+
export interface TenantData {
|
|
41
|
+
tenant_id: string;
|
|
42
|
+
tenant_name: string;
|
|
43
|
+
users: User[];
|
|
44
|
+
groups: Group[];
|
|
45
|
+
roles: Role[];
|
|
46
|
+
memberships: Membership[];
|
|
47
|
+
usersById: Map<string, User>;
|
|
48
|
+
groupsById: Map<string, Group>;
|
|
49
|
+
rolesById: Map<string, Role>;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Utility for transforming raw PassflowTenantResponse
|
|
53
|
+
* into a flattened TenantData model with quick lookup methods.
|
|
54
|
+
*/
|
|
55
|
+
export declare class TenantUserMembership {
|
|
56
|
+
private data;
|
|
57
|
+
constructor(raw: PassflowTenantResponse);
|
|
58
|
+
private normalize;
|
|
59
|
+
/**
|
|
60
|
+
* Returns all users in the specified group.
|
|
61
|
+
*/
|
|
62
|
+
getUsersInGroup(groupId: string): User[];
|
|
63
|
+
/**
|
|
64
|
+
* Returns all groups to which the specified user belongs.
|
|
65
|
+
*/
|
|
66
|
+
getGroupsForUser(userId: string): Group[];
|
|
67
|
+
/**
|
|
68
|
+
* Returns all roles that the specified user has in the specified group.
|
|
69
|
+
*/
|
|
70
|
+
getUserRolesInGroup(userId: string, groupId: string): Role[];
|
|
71
|
+
/**
|
|
72
|
+
* Returns the full TenantData object.
|
|
73
|
+
*/
|
|
74
|
+
getData(): TenantData;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=tenant-user-membership.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-user-membership.d.ts","sourceRoot":"","sources":["../../../lib/services/tenant-user-membership.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA+B,sBAAsB,EAAuB,MAAM,cAAc,CAAC;AAE7G;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC/B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;CAC9B;AAED;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,IAAI,CAAa;gBAEb,GAAG,EAAE,sBAAsB;IAIvC,OAAO,CAAC,SAAS;IA2DjB;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE;IAOxC;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,EAAE;IAOzC;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE;IAQ5D;;OAEG;IACH,OAAO,IAAI,UAAU;CAGtB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AuthAPI } from '../api';
|
|
2
|
+
import { StorageManager } from '../storage-manager';
|
|
3
|
+
import { PassflowStore } from '../store';
|
|
4
|
+
import type { ParsedTokens, Tokens } from '../types';
|
|
5
|
+
export declare class TokenCacheService {
|
|
6
|
+
private storageManager;
|
|
7
|
+
private authApi;
|
|
8
|
+
private subscribeStore;
|
|
9
|
+
tokensCache: Tokens | undefined;
|
|
10
|
+
parsedTokensCache: ParsedTokens | undefined;
|
|
11
|
+
private checkInterval;
|
|
12
|
+
private readonly CHECK_INTERVAL;
|
|
13
|
+
isRefreshing: boolean;
|
|
14
|
+
isExpired: boolean;
|
|
15
|
+
constructor(storageManager: StorageManager, authApi: AuthAPI, subscribeStore: PassflowStore);
|
|
16
|
+
initialize(): void;
|
|
17
|
+
private refreshTokensCache;
|
|
18
|
+
startTokenCheck(): void;
|
|
19
|
+
private stopTokenCheck;
|
|
20
|
+
setTokensCache(tokens: Tokens | undefined): void;
|
|
21
|
+
getTokensCache(): Tokens | undefined;
|
|
22
|
+
getTokensCacheWithRefresh(): Promise<Tokens | undefined>;
|
|
23
|
+
getParsedTokenCache(): ParsedTokens | undefined;
|
|
24
|
+
tokensCacheIsExpired(): boolean;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=token-cache-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-cache-service.d.ts","sourceRoot":"","sources":["../../../lib/services/token-cache-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAA+B,aAAa,EAAE,MAAM,UAAU,CAAC;AAEtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAErD,qBAAa,iBAAiB;IAU1B,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,cAAc;IAXxB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,iBAAiB,EAAE,YAAY,GAAG,SAAS,CAAC;IAE5C,OAAO,CAAC,aAAa,CAA+B;IACpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAM;IACrC,YAAY,UAAS;IACrB,SAAS,UAAS;gBAGR,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,aAAa;IAMvC,UAAU;YA4BI,kBAAkB;IA0BhC,eAAe;IAkBf,OAAO,CAAC,cAAc;IAOtB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAchD,cAAc;IAIR,yBAAyB;IAsB/B,mBAAmB;IAInB,oBAAoB;CAKrB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { PassflowSuccessResponse, UserAPI } from '../api';
|
|
2
|
+
/**
|
|
3
|
+
* Service for managing user profile and passkeys
|
|
4
|
+
*/
|
|
5
|
+
export declare class UserService {
|
|
6
|
+
private userAPI;
|
|
7
|
+
private deviceService;
|
|
8
|
+
constructor(userAPI: UserAPI, deviceService: DeviceService);
|
|
9
|
+
/**
|
|
10
|
+
* Get user's registered passkeys
|
|
11
|
+
* @returns Promise with passkeys array
|
|
12
|
+
*/
|
|
13
|
+
getUserPasskeys(): Promise<import("..").PassflowUserPasskey[]>;
|
|
14
|
+
/**
|
|
15
|
+
* Rename a user passkey
|
|
16
|
+
* @param name The new name for the passkey
|
|
17
|
+
* @param passkeyId The ID of the passkey to rename
|
|
18
|
+
* @returns Promise with success response
|
|
19
|
+
*/
|
|
20
|
+
renameUserPasskey(name: string, passkeyId: string): Promise<PassflowSuccessResponse>;
|
|
21
|
+
/**
|
|
22
|
+
* Delete a user passkey
|
|
23
|
+
* @param passkeyId The ID of the passkey to delete
|
|
24
|
+
* @returns Promise with success response
|
|
25
|
+
*/
|
|
26
|
+
deleteUserPasskey(passkeyId: string): Promise<PassflowSuccessResponse>;
|
|
27
|
+
/**
|
|
28
|
+
* Add a new passkey for the current user
|
|
29
|
+
* @param options Optional parameters for the passkey
|
|
30
|
+
* @returns Promise that resolves when the passkey is added
|
|
31
|
+
*/
|
|
32
|
+
addUserPasskey({ relyingPartyId, passkeyUsername, passkeyDisplayName, }?: {
|
|
33
|
+
relyingPartyId?: string;
|
|
34
|
+
passkeyUsername?: string;
|
|
35
|
+
passkeyDisplayName?: string;
|
|
36
|
+
}): Promise<void>;
|
|
37
|
+
}
|
|
38
|
+
import { DeviceService } from '../device-service';
|
|
39
|
+
//# sourceMappingURL=user-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-service.d.ts","sourceRoot":"","sources":["../../../lib/services/user-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,uBAAuB,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAE9D;;GAEG;AACH,qBAAa,WAAW;IAEpB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,aAAa;gBADb,OAAO,EAAE,OAAO,EAChB,aAAa,EAAE,aAAa;IAGtC;;;OAGG;IACH,eAAe;IAIf;;;;;OAKG;IACH,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAIpF;;;;OAIG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAItE;;;;OAIG;IACG,cAAc,CAAC,EACnB,cAAc,EACd,eAAe,EACf,kBAAkB,GACnB,GAAE;QACD,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;KACxB,GAAG,OAAO,CAAC,IAAI,CAAC;CAevB;AAGD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { TokenType } from '../token-service';
|
|
2
|
+
import { Tokens } from '../types';
|
|
3
|
+
export type Storage = {
|
|
4
|
+
setItem: (key: string, value: string) => void;
|
|
5
|
+
getItem: (key: string) => string | null;
|
|
6
|
+
removeItem: (key: string) => void;
|
|
7
|
+
};
|
|
8
|
+
export interface StorageManagerParams {
|
|
9
|
+
storage?: Storage;
|
|
10
|
+
prefix?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class StorageManager {
|
|
13
|
+
private keyStoragePrefix;
|
|
14
|
+
readonly scopes: string;
|
|
15
|
+
readonly deviceId: string;
|
|
16
|
+
readonly invitationToken: string;
|
|
17
|
+
readonly previousRedirectUrl: string;
|
|
18
|
+
private storage;
|
|
19
|
+
constructor({ storage, prefix }?: StorageManagerParams);
|
|
20
|
+
saveTokens(tokens: Tokens): void;
|
|
21
|
+
getToken(tokenType: TokenType): string | undefined;
|
|
22
|
+
getTokens(): Tokens | undefined;
|
|
23
|
+
getScopes(): string[] | undefined;
|
|
24
|
+
deleteToken(tokenType: TokenType): void;
|
|
25
|
+
deleteTokens(): void;
|
|
26
|
+
getDeviceId(): string | undefined;
|
|
27
|
+
setDeviceId(deviceId: string): void;
|
|
28
|
+
deleteDeviceId(): void;
|
|
29
|
+
setInvitationToken(token: string): void;
|
|
30
|
+
getInvitationToken(): string | undefined;
|
|
31
|
+
deleteInvitationToken(): void;
|
|
32
|
+
setPreviousRedirectUrl(url: string): void;
|
|
33
|
+
getPreviousRedirectUrl(): string | undefined;
|
|
34
|
+
deletePreviousRedirectUrl(): void;
|
|
35
|
+
private getKeyForTokenType;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/storage-manager/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,MAAM,MAAM,OAAO,GAAG;IACpB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACxC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,gBAAgB,CAAM;IAC9B,QAAQ,CAAC,MAAM,SAA2C;IAC1D,QAAQ,CAAC,QAAQ,SAA8C;IAC/D,QAAQ,CAAC,eAAe,SAAqD;IAC7E,QAAQ,CAAC,mBAAmB,SAAyD;IAErF,OAAO,CAAC,OAAO,CAAU;gBAEb,EAAE,OAAO,EAAE,MAAM,EAAE,GAAE,oBAAyB;IAK1D,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQhC,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS;IAKlD,SAAS,IAAI,MAAM,GAAG,SAAS;IAW/B,SAAS,IAAI,MAAM,EAAE,GAAG,SAAS;IAIjC,WAAW,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAKvC,YAAY,IAAI,IAAI;IAOpB,WAAW,IAAI,MAAM,GAAG,SAAS;IAIjC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAInC,cAAc,IAAI,IAAI;IAItB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIvC,kBAAkB,IAAI,MAAM,GAAG,SAAS;IAIxC,qBAAqB,IAAI,IAAI;IAI7B,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzC,sBAAsB,IAAI,MAAM,GAAG,SAAS;IAI5C,yBAAyB,IAAI,IAAI;IAIjC,OAAO,CAAC,kBAAkB;CAG3B"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { ParsedTokens, Tokens } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Passflow event types
|
|
4
|
+
*/
|
|
5
|
+
export declare enum PassflowEvent {
|
|
6
|
+
SignIn = "signin",
|
|
7
|
+
SignInStart = "signin:start",
|
|
8
|
+
Register = "register",
|
|
9
|
+
RegisterStart = "register:start",
|
|
10
|
+
SignOut = "signout",
|
|
11
|
+
Error = "error",
|
|
12
|
+
Refresh = "refresh",
|
|
13
|
+
RefreshStart = "refresh:start",
|
|
14
|
+
TokenCacheExpired = "token-cache-expired"
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Error payload interface for structured error information
|
|
18
|
+
*/
|
|
19
|
+
export interface ErrorPayload {
|
|
20
|
+
message: string;
|
|
21
|
+
code?: string | number;
|
|
22
|
+
details?: unknown;
|
|
23
|
+
originalError?: unknown;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Event-specific payload types
|
|
27
|
+
*/
|
|
28
|
+
export type PassflowEventPayload = {
|
|
29
|
+
[PassflowEvent.SignIn]: {
|
|
30
|
+
tokens?: Tokens;
|
|
31
|
+
parsedTokens?: ParsedTokens;
|
|
32
|
+
};
|
|
33
|
+
[PassflowEvent.SignInStart]: {
|
|
34
|
+
email?: string;
|
|
35
|
+
provider?: string;
|
|
36
|
+
};
|
|
37
|
+
[PassflowEvent.Register]: {
|
|
38
|
+
tokens?: Tokens;
|
|
39
|
+
parsedTokens?: ParsedTokens;
|
|
40
|
+
};
|
|
41
|
+
[PassflowEvent.RegisterStart]: {
|
|
42
|
+
email?: string;
|
|
43
|
+
};
|
|
44
|
+
[PassflowEvent.SignOut]: {
|
|
45
|
+
userId?: string;
|
|
46
|
+
};
|
|
47
|
+
[PassflowEvent.Error]: ErrorPayload;
|
|
48
|
+
[PassflowEvent.Refresh]: {
|
|
49
|
+
tokens?: Tokens;
|
|
50
|
+
parsedTokens?: ParsedTokens;
|
|
51
|
+
};
|
|
52
|
+
[PassflowEvent.RefreshStart]: {
|
|
53
|
+
tokenId?: string;
|
|
54
|
+
};
|
|
55
|
+
[PassflowEvent.TokenCacheExpired]: {
|
|
56
|
+
isExpired: boolean;
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Passflow subscriber interface
|
|
61
|
+
*/
|
|
62
|
+
export interface PassflowSubscriber {
|
|
63
|
+
onAuthChange<E extends PassflowEvent>(eventType: E, payload?: PassflowEventPayload[E]): void;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Store for managing Passflow event subscriptions
|
|
67
|
+
*/
|
|
68
|
+
export declare class PassflowStore {
|
|
69
|
+
private subscribers;
|
|
70
|
+
/**
|
|
71
|
+
* Subscribe to authentication events
|
|
72
|
+
* @param subscriber The subscriber to register
|
|
73
|
+
* @param events Optional specific events to subscribe to
|
|
74
|
+
*/
|
|
75
|
+
subscribe(subscriber: PassflowSubscriber, events?: PassflowEvent[]): void;
|
|
76
|
+
/**
|
|
77
|
+
* Unsubscribe from authentication events
|
|
78
|
+
* @param subscriber The subscriber to unregister
|
|
79
|
+
* @param events Optional specific events to unsubscribe from
|
|
80
|
+
*/
|
|
81
|
+
unsubscribe(subscriber: PassflowSubscriber, events?: PassflowEvent[]): void;
|
|
82
|
+
/**
|
|
83
|
+
* Notify subscribers of an event
|
|
84
|
+
* @param eventType The type of event that occurred
|
|
85
|
+
* @param payload Event-specific payload data
|
|
86
|
+
*/
|
|
87
|
+
notify<E extends PassflowEvent>(eventType: E, payload?: PassflowEventPayload[E]): void;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../lib/store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAE/C;;GAEG;AACH,oBAAY,aAAa;IACvB,MAAM,WAAW;IACjB,WAAW,iBAAiB;IAC5B,QAAQ,aAAa;IACrB,aAAa,mBAAmB;IAChC,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;IACnB,YAAY,kBAAkB;IAC9B,iBAAiB,wBAAwB;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC;IACzE,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC;IAC3E,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IACpC,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,YAAY,CAAA;KAAE,CAAC;IAC1E,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3D,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,CAAC,SAAS,aAAa,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAC9F;AAED;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAiE;IAEpF;;;;OAIG;IACH,SAAS,CAAC,UAAU,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI;IASzE;;;;OAIG;IACH,WAAW,CAAC,UAAU,EAAE,kBAAkB,EAAE,MAAM,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI;IAiB3E;;;;OAIG;IACH,MAAM,CAAC,CAAC,SAAS,aAAa,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI;CAOvF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/token-service/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export type Tenant = {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
};
|
|
5
|
+
export type TenantMembership = {
|
|
6
|
+
tenant: Tenant;
|
|
7
|
+
tenantRoles?: GroupMembership;
|
|
8
|
+
groups?: GroupMembership[];
|
|
9
|
+
};
|
|
10
|
+
export type Group = {
|
|
11
|
+
id: string;
|
|
12
|
+
name: string;
|
|
13
|
+
};
|
|
14
|
+
export type GroupMembership = {
|
|
15
|
+
group: Group;
|
|
16
|
+
roles: string[];
|
|
17
|
+
};
|
|
18
|
+
export type RawUserMembership = {
|
|
19
|
+
[key: string]: {
|
|
20
|
+
tenant_id: string;
|
|
21
|
+
tenant_name: string;
|
|
22
|
+
tenant_roles?: string[];
|
|
23
|
+
root_group_id: string;
|
|
24
|
+
groups: {
|
|
25
|
+
[key: string]: string[];
|
|
26
|
+
};
|
|
27
|
+
group_names: {
|
|
28
|
+
[key: string]: string;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
export type UserMembership = {
|
|
33
|
+
raw: RawUserMembership;
|
|
34
|
+
tenants: TenantMembership[];
|
|
35
|
+
};
|
|
36
|
+
export declare const parseMembership: (raw: RawUserMembership) => UserMembership;
|
|
37
|
+
//# sourceMappingURL=membership.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"membership.d.ts","sourceRoot":"","sources":["../../../lib/token-service/membership.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,MAAM,EAAE;YACN,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;SACzB,CAAC;QACF,WAAW,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAC;KACxC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,iBAAiB,CAAC;IACvB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,KAAK,iBAAiB,KAAG,cAmBxD,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { StorageManager } from '../storage-manager';
|
|
2
|
+
import { Token, TokenType } from './token';
|
|
3
|
+
export declare class TokenService {
|
|
4
|
+
protected storageManager: StorageManager;
|
|
5
|
+
/**
|
|
6
|
+
* Checks if a token is not exists or expired.
|
|
7
|
+
*
|
|
8
|
+
* @param {TokenType} ttype - The token type to check.
|
|
9
|
+
* @returns {boolean} Returns true if the token is expired or not exists, false otherwise.
|
|
10
|
+
*/
|
|
11
|
+
isTokenTypeExpired(ttype: TokenType): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Parse token from storage by type.
|
|
14
|
+
* Please be aware that this method does not check if the token signature and if the token is valid.
|
|
15
|
+
*
|
|
16
|
+
* @param {TokenType} tokenType - The token type to check.
|
|
17
|
+
* @returns {Token | undefined} Returns token with parsed user membership or undefined.
|
|
18
|
+
*/
|
|
19
|
+
parseTokenType(tokenType: TokenType): Token | undefined;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Checks if a token is expired.
|
|
23
|
+
*
|
|
24
|
+
* @param {Token} token - The token to check.
|
|
25
|
+
* @returns {boolean} Returns true if the token is expired, false otherwise.
|
|
26
|
+
*/
|
|
27
|
+
export declare function isTokenExpired(token: Token): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Parse token from string. Please be aware that this method does not check if the token signature and if the token is valid.
|
|
30
|
+
*
|
|
31
|
+
* @param {string} tokenString - The token string representation.
|
|
32
|
+
* @returns {Token } Returns token with parsed user membership or undefined.
|
|
33
|
+
*/
|
|
34
|
+
export declare function parseToken(tokenString: string): Token;
|
|
35
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../lib/token-service/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE3C,qBAAa,YAAY;IACvB,SAAS,CAAC,cAAc,iBAAwB;IAEhD;;;;;OAKG;IACH,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAQ7C;;;;;;OAMG;IACH,cAAc,CAAC,SAAS,EAAE,SAAS,GAAG,KAAK,GAAG,SAAS;CAKxD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAGpD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,KAAK,CAiBrD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { RawUserMembership, UserMembership } from '../token-service/membership';
|
|
2
|
+
export type Token = {
|
|
3
|
+
aud: string[];
|
|
4
|
+
exp: number;
|
|
5
|
+
iat: number;
|
|
6
|
+
iss: string;
|
|
7
|
+
jti: string;
|
|
8
|
+
sub: string;
|
|
9
|
+
type: string;
|
|
10
|
+
email?: string;
|
|
11
|
+
phonenumber?: string;
|
|
12
|
+
passflow_tm?: RawUserMembership;
|
|
13
|
+
payload?: unknown;
|
|
14
|
+
membership?: UserMembership;
|
|
15
|
+
};
|
|
16
|
+
export type InvitationToken = Token & {
|
|
17
|
+
email: string;
|
|
18
|
+
inviter_id: string;
|
|
19
|
+
inviter_name: string;
|
|
20
|
+
redirect_url: string;
|
|
21
|
+
tenant_name: string;
|
|
22
|
+
};
|
|
23
|
+
export declare enum TokenType {
|
|
24
|
+
id_token = "id_token",
|
|
25
|
+
access_token = "access",
|
|
26
|
+
refresh_token = "refresh",
|
|
27
|
+
invite_token = "invite",
|
|
28
|
+
reset_token = "reset",
|
|
29
|
+
web_cookie = "web-cookie",
|
|
30
|
+
management = "management",
|
|
31
|
+
signin = "signin",
|
|
32
|
+
actor = "actor"
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../../lib/token-service/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAEhF,MAAM,MAAM,KAAK,GAAG;IAClB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,oBAAY,SAAS;IACnB,QAAQ,aAAa;IACrB,YAAY,WAAW;IACvB,aAAa,YAAY;IACzB,YAAY,WAAW;IACvB,WAAW,UAAU;IACrB,UAAU,eAAe;IACzB,UAAU,eAAe;IACzB,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Token } from '../token-service';
|
|
2
|
+
export type Tokens = {
|
|
3
|
+
access_token: string;
|
|
4
|
+
id_token?: string;
|
|
5
|
+
refresh_token?: string;
|
|
6
|
+
scopes?: string[];
|
|
7
|
+
};
|
|
8
|
+
export type ParsedTokens = {
|
|
9
|
+
access_token: Token;
|
|
10
|
+
id_token?: Token;
|
|
11
|
+
refresh_token?: Token;
|
|
12
|
+
scopes?: string[];
|
|
13
|
+
};
|
|
14
|
+
export type SessionParams = {
|
|
15
|
+
createSession?: ({ tokens, parsedTokens }: {
|
|
16
|
+
tokens?: Tokens;
|
|
17
|
+
parsedTokens?: ParsedTokens;
|
|
18
|
+
}) => Promise<void>;
|
|
19
|
+
expiredSession?: () => Promise<void>;
|
|
20
|
+
doRefresh?: boolean;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAEzC,MAAM,MAAM,MAAM,GAAG;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,KAAK,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,aAAa,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,YAAY,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9G,cAAc,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC"}
|