@codingfactory/socialkit-vue 0.1.0 → 0.2.0
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/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/services/identity.d.ts +29 -0
- package/dist/services/identity.d.ts.map +1 -0
- package/dist/services/identity.js +150 -0
- package/dist/services/identity.js.map +1 -0
- package/dist/stores/auth.d.ts +3 -0
- package/dist/stores/auth.d.ts.map +1 -1
- package/dist/types/api.d.ts +19 -0
- package/dist/types/api.d.ts.map +1 -1
- package/dist/types/auth.d.ts +34 -0
- package/dist/types/auth.d.ts.map +1 -0
- package/dist/types/auth.js +8 -0
- package/dist/types/auth.js.map +1 -0
- package/dist/types/identity.d.ts +34 -0
- package/dist/types/identity.d.ts.map +1 -0
- package/dist/types/identity.js +5 -0
- package/dist/types/identity.js.map +1 -0
- package/dist/types/user.d.ts +1 -0
- package/dist/types/user.d.ts.map +1 -1
- package/dist/types/user.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +31 -0
- package/src/services/identity.ts +281 -0
- package/src/types/api.ts +20 -0
- package/src/types/auth.ts +39 -0
- package/src/types/identity.ts +41 -0
- package/src/types/user.ts +1 -0
package/dist/index.d.ts
CHANGED
|
@@ -5,15 +5,19 @@
|
|
|
5
5
|
* auth service, auth store, terminology plugin) that each site frontend
|
|
6
6
|
* instantiates with its own configuration.
|
|
7
7
|
*/
|
|
8
|
-
export type { ApiResponse, PaginatedResponse, ApiError, UploadProgressEvent, RequestConfig } from './types/api.js';
|
|
8
|
+
export type { ApiResponse, PaginatedResponse, ApiError, EchoConfig, UploadProgressEvent, RequestConfig } from './types/api.js';
|
|
9
9
|
export type { User, IdentityUser } from './types/user.js';
|
|
10
|
+
export type { AuthResponse, LoginCredentials, PasswordResetConfirm, PasswordResetRequest, RegisterCredentials } from './types/auth.js';
|
|
10
11
|
export { isUser, isIdentityUser, identityUserToUser } from './types/user.js';
|
|
11
12
|
export type { TokenStorageConfig, TokenStorage } from './utils/tokenStorage.js';
|
|
12
13
|
export { createTokenStorage, extractTokenFromResponse } from './utils/tokenStorage.js';
|
|
13
14
|
export type { ApiServiceConfig, ApiService } from './services/api.js';
|
|
14
15
|
export { createApiService } from './services/api.js';
|
|
16
|
+
export type { IdentityServiceConfig, IdentityServiceInstance } from './services/identity.js';
|
|
17
|
+
export { createIdentityService } from './services/identity.js';
|
|
15
18
|
export type { AuthServiceConfig, AuthServiceInstance, AuthenticatedLoginResponse, AuthenticatedRegisterResponse, AuthLoginResult, ConfiguredTokenAuthClient, ExtendedAuthServiceConfig, ExtendedAuthServiceInstance, RegisterData, RegisterResponse, ResetPasswordData, LoginResponse, TokenAuthClientConfig, TwoFactorChallengeResponse, VerificationRequiredRegisterResponse } from './services/auth.js';
|
|
16
19
|
export { configureTokenAuthClient, createAuthService, createExtendedAuthService } from './services/auth.js';
|
|
20
|
+
export type { AccountDeletionConfirmationResult, AccountDeletionRequestResult, ChangePasswordPayload, ChangePasswordResult, TwoFactorDisablePayload, TwoFactorEnableResult, TwoFactorEnrollment, TwoFactorStatus } from './types/identity.js';
|
|
17
21
|
export type { AuthStoreConfig, AuthStoreActions, AuthStoreExtension, AuthStoreExtensionContext, AuthStoreGetters, AuthStoreStateRefs, AuthStoreReturn } from './stores/auth.js';
|
|
18
22
|
export { createAuthStoreDefinition } from './stores/auth.js';
|
|
19
23
|
export type { UseAuthReturn } from './composables/useAuth.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,mBAAmB,EACnB,aAAa,EACd,MAAM,gBAAgB,CAAA;AAEvB,YAAY,EACV,IAAI,EACJ,YAAY,EACb,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,MAAM,EACN,cAAc,EACd,kBAAkB,EACnB,MAAM,iBAAiB,CAAA;AAGxB,YAAY,EACV,kBAAkB,EAClB,YAAY,EACb,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,yBAAyB,CAAA;AAGhC,YAAY,EACV,gBAAgB,EAChB,UAAU,EACX,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EACL,gBAAgB,EACjB,MAAM,mBAAmB,CAAA;AAG1B,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,0BAA0B,EAC1B,6BAA6B,EAC7B,eAAe,EACf,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,EAC3B,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,0BAA0B,EAC1B,oCAAoC,EACrC,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,oBAAoB,CAAA;AAG3B,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,yBAAyB,EAC1B,MAAM,kBAAkB,CAAA;AAGzB,YAAY,EACV,aAAa,EACd,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,WAAW,EACZ,MAAM,0BAA0B,CAAA;AAGjC,YAAY,EACV,SAAS,EACT,WAAW,EACX,kBAAkB,EACnB,MAAM,gCAAgC,CAAA;AAEvC,YAAY,EACV,WAAW,EACZ,MAAM,gCAAgC,CAAA;AAEvC,OAAO,EACL,eAAe,EAChB,MAAM,gCAAgC,CAAA;AAEvC,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACf,MAAM,gCAAgC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,mBAAmB,EACnB,aAAa,EACd,MAAM,gBAAgB,CAAA;AAEvB,YAAY,EACV,IAAI,EACJ,YAAY,EACb,MAAM,iBAAiB,CAAA;AAExB,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,MAAM,EACN,cAAc,EACd,kBAAkB,EACnB,MAAM,iBAAiB,CAAA;AAGxB,YAAY,EACV,kBAAkB,EAClB,YAAY,EACb,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,yBAAyB,CAAA;AAGhC,YAAY,EACV,gBAAgB,EAChB,UAAU,EACX,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EACL,gBAAgB,EACjB,MAAM,mBAAmB,CAAA;AAG1B,YAAY,EACV,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACL,qBAAqB,EACtB,MAAM,wBAAwB,CAAA;AAG/B,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,0BAA0B,EAC1B,6BAA6B,EAC7B,eAAe,EACf,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,EAC3B,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,0BAA0B,EAC1B,oCAAoC,EACrC,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,oBAAoB,CAAA;AAG3B,YAAY,EACV,iCAAiC,EACjC,4BAA4B,EAC5B,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EAChB,MAAM,qBAAqB,CAAA;AAG5B,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,yBAAyB,EAC1B,MAAM,kBAAkB,CAAA;AAGzB,YAAY,EACV,aAAa,EACd,MAAM,0BAA0B,CAAA;AAEjC,OAAO,EACL,WAAW,EACZ,MAAM,0BAA0B,CAAA;AAGjC,YAAY,EACV,SAAS,EACT,WAAW,EACX,kBAAkB,EACnB,MAAM,gCAAgC,CAAA;AAEvC,YAAY,EACV,WAAW,EACZ,MAAM,gCAAgC,CAAA;AAEvC,OAAO,EACL,eAAe,EAChB,MAAM,gCAAgC,CAAA;AAEvC,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACf,MAAM,gCAAgC,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
export { isUser, isIdentityUser, identityUserToUser } from './types/user.js';
|
|
9
9
|
export { createTokenStorage, extractTokenFromResponse } from './utils/tokenStorage.js';
|
|
10
10
|
export { createApiService } from './services/api.js';
|
|
11
|
+
export { createIdentityService } from './services/identity.js';
|
|
11
12
|
export { configureTokenAuthClient, createAuthService, createExtendedAuthService } from './services/auth.js';
|
|
12
13
|
export { createAuthStoreDefinition } from './stores/auth.js';
|
|
13
14
|
export { makeUseAuth } from './composables/useAuth.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAyBH,OAAO,EACL,MAAM,EACN,cAAc,EACd,kBAAkB,EACnB,MAAM,iBAAiB,CAAA;AAQxB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,yBAAyB,CAAA;AAQhC,OAAO,EACL,gBAAgB,EACjB,MAAM,mBAAmB,CAAA;AAQ1B,OAAO,EACL,qBAAqB,EACtB,MAAM,wBAAwB,CAAA;AAqB/B,OAAO,EACL,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,EAC1B,MAAM,oBAAoB,CAAA;AAyB3B,OAAO,EACL,yBAAyB,EAC1B,MAAM,kBAAkB,CAAA;AAOzB,OAAO,EACL,WAAW,EACZ,MAAM,0BAA0B,CAAA;AAajC,OAAO,EACL,eAAe,EAChB,MAAM,gCAAgC,CAAA;AAEvC,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,cAAc,EACf,MAAM,gCAAgC,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configurable identity service for SocialKit-powered frontends.
|
|
3
|
+
*/
|
|
4
|
+
import type { AxiosInstance } from 'axios';
|
|
5
|
+
import type { TokenStorage } from '../utils/tokenStorage.js';
|
|
6
|
+
import type { AccountDeletionConfirmationResult, AccountDeletionRequestResult, ChangePasswordPayload, ChangePasswordResult, TwoFactorDisablePayload, TwoFactorEnableResult, TwoFactorEnrollment, TwoFactorStatus } from '../types/identity.js';
|
|
7
|
+
import type { IdentityUser } from '../types/user.js';
|
|
8
|
+
export interface IdentityServiceConfig {
|
|
9
|
+
client: AxiosInstance;
|
|
10
|
+
tokenStorage: TokenStorage;
|
|
11
|
+
}
|
|
12
|
+
export interface IdentityServiceInstance {
|
|
13
|
+
getCurrentUser(): Promise<IdentityUser>;
|
|
14
|
+
getUser(userId: string): Promise<IdentityUser>;
|
|
15
|
+
updateUser(userId: string, payload: Partial<IdentityUser>): Promise<IdentityUser>;
|
|
16
|
+
uploadAvatar(file: File): Promise<{
|
|
17
|
+
url: string;
|
|
18
|
+
}>;
|
|
19
|
+
changePassword(payload: ChangePasswordPayload): Promise<ChangePasswordResult>;
|
|
20
|
+
getTwoFactorStatus(): Promise<TwoFactorStatus>;
|
|
21
|
+
startTwoFactorEnrollment(currentPassword: string): Promise<TwoFactorEnrollment>;
|
|
22
|
+
enableTwoFactor(code: string): Promise<TwoFactorEnableResult>;
|
|
23
|
+
regenerateTwoFactorRecoveryCodes(code: string): Promise<TwoFactorEnableResult>;
|
|
24
|
+
disableTwoFactor(payload: TwoFactorDisablePayload): Promise<void>;
|
|
25
|
+
requestAccountDeletion(): Promise<AccountDeletionRequestResult>;
|
|
26
|
+
confirmAccountDeletion(requestId: string, confirmationToken: string): Promise<AccountDeletionConfirmationResult>;
|
|
27
|
+
}
|
|
28
|
+
export declare function createIdentityService(config: IdentityServiceConfig): IdentityServiceInstance;
|
|
29
|
+
//# sourceMappingURL=identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/services/identity.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAE5D,OAAO,KAAK,EACV,iCAAiC,EACjC,4BAA4B,EAC5B,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EAChB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AA4CpD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,aAAa,CAAA;IACrB,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,cAAc,IAAI,OAAO,CAAC,YAAY,CAAC,CAAA;IACvC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAC9C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IACjF,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClD,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAA;IAC7E,kBAAkB,IAAI,OAAO,CAAC,eAAe,CAAC,CAAA;IAC9C,wBAAwB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAC/E,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;IAC7D,gCAAgC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;IAC9E,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjE,sBAAsB,IAAI,OAAO,CAAC,4BAA4B,CAAC,CAAA;IAC/D,sBAAsB,CACpB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,iCAAiC,CAAC,CAAA;CAC9C;AAoMD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,uBAAuB,CAE5F"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configurable identity service for SocialKit-powered frontends.
|
|
3
|
+
*/
|
|
4
|
+
import { extractTokenFromResponse } from '../utils/tokenStorage.js';
|
|
5
|
+
class IdentityService {
|
|
6
|
+
client;
|
|
7
|
+
tokenStorage;
|
|
8
|
+
constructor(client, tokenStorage) {
|
|
9
|
+
this.client = client;
|
|
10
|
+
this.tokenStorage = tokenStorage;
|
|
11
|
+
}
|
|
12
|
+
async getCurrentUser() {
|
|
13
|
+
const response = await this.client.get('/v1/me');
|
|
14
|
+
return this.normalizeUser(response.data.data);
|
|
15
|
+
}
|
|
16
|
+
async getUser(userId) {
|
|
17
|
+
const response = await this.client.get('/v1/identity/users/by-ids', {
|
|
18
|
+
params: {
|
|
19
|
+
ids: userId
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
const users = Array.isArray(response.data?.data) ? response.data.data : [];
|
|
23
|
+
const user = users.find((candidate) => {
|
|
24
|
+
if (!candidate || typeof candidate !== 'object') {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
const candidateWithId = candidate;
|
|
28
|
+
return candidateWithId.id === userId;
|
|
29
|
+
});
|
|
30
|
+
if (!user) {
|
|
31
|
+
throw new Error('User not found');
|
|
32
|
+
}
|
|
33
|
+
return this.normalizeUser(user);
|
|
34
|
+
}
|
|
35
|
+
async updateUser(_userId, payload) {
|
|
36
|
+
const response = await this.client.patch('/v1/me', payload);
|
|
37
|
+
return this.normalizeUser(response.data.data);
|
|
38
|
+
}
|
|
39
|
+
async uploadAvatar(file) {
|
|
40
|
+
const formData = new FormData();
|
|
41
|
+
formData.append('file', file);
|
|
42
|
+
const response = await this.client.post('/v1/media/upload', formData);
|
|
43
|
+
return response.data;
|
|
44
|
+
}
|
|
45
|
+
async changePassword(payload) {
|
|
46
|
+
const response = await this.client.patch('/v1/me/password', {
|
|
47
|
+
current_password: payload.currentPassword,
|
|
48
|
+
password: payload.newPassword,
|
|
49
|
+
password_confirmation: payload.confirmPassword
|
|
50
|
+
});
|
|
51
|
+
const rotatedToken = extractTokenFromResponse(response.data);
|
|
52
|
+
if (rotatedToken) {
|
|
53
|
+
this.tokenStorage.setToken(rotatedToken);
|
|
54
|
+
}
|
|
55
|
+
const message = typeof response.data?.message === 'string' && response.data.message.trim() !== ''
|
|
56
|
+
? response.data.message
|
|
57
|
+
: 'Password updated successfully';
|
|
58
|
+
return { message };
|
|
59
|
+
}
|
|
60
|
+
async getTwoFactorStatus() {
|
|
61
|
+
const response = await this.client.get('/v1/security/2fa/status');
|
|
62
|
+
return {
|
|
63
|
+
enabled: response.data?.data?.enabled === true
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
async startTwoFactorEnrollment(currentPassword) {
|
|
67
|
+
const response = await this.client.post('/v1/security/2fa/start', {
|
|
68
|
+
current_password: currentPassword
|
|
69
|
+
});
|
|
70
|
+
const qrCodeUrl = response.data?.data?.qr_code_url;
|
|
71
|
+
const secretBase32 = response.data?.data?.secret_base32;
|
|
72
|
+
if (typeof qrCodeUrl !== 'string' || typeof secretBase32 !== 'string') {
|
|
73
|
+
throw new Error('Invalid two-factor enrollment response payload');
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
qrCodeUrl,
|
|
77
|
+
secretBase32
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
async enableTwoFactor(code) {
|
|
81
|
+
const response = await this.client.post('/v1/security/2fa/enable', { code });
|
|
82
|
+
return {
|
|
83
|
+
recoveryCodes: this.normalizeRecoveryCodes(response.data?.data?.recovery_codes)
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
async regenerateTwoFactorRecoveryCodes(code) {
|
|
87
|
+
const response = await this.client.post('/v1/security/2fa/recovery-codes/regenerate', { code });
|
|
88
|
+
return {
|
|
89
|
+
recoveryCodes: this.normalizeRecoveryCodes(response.data?.data?.recovery_codes)
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
async disableTwoFactor(payload) {
|
|
93
|
+
await this.client.post('/v1/security/2fa/disable', {
|
|
94
|
+
password: payload.password,
|
|
95
|
+
code: payload.code
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
async requestAccountDeletion() {
|
|
99
|
+
const response = await this.client.post('/v1/compliance/dsar/erase');
|
|
100
|
+
const id = response.data?.data?.id;
|
|
101
|
+
const status = response.data?.data?.status;
|
|
102
|
+
const confirmationToken = response.data?.data?.confirmation_token;
|
|
103
|
+
const devToken = response.data?.data?.dev_token;
|
|
104
|
+
if (typeof id !== 'string' || typeof status !== 'string') {
|
|
105
|
+
throw new Error('Invalid account deletion request payload');
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
requestId: id,
|
|
109
|
+
status,
|
|
110
|
+
confirmationToken: typeof confirmationToken === 'string'
|
|
111
|
+
? confirmationToken
|
|
112
|
+
: typeof devToken === 'string'
|
|
113
|
+
? devToken
|
|
114
|
+
: null
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
async confirmAccountDeletion(requestId, confirmationToken) {
|
|
118
|
+
const response = await this.client.post(`/v1/compliance/dsar/${encodeURIComponent(requestId)}/confirm`, {
|
|
119
|
+
token: confirmationToken
|
|
120
|
+
});
|
|
121
|
+
const status = response.data?.data?.status;
|
|
122
|
+
if (typeof status !== 'string') {
|
|
123
|
+
throw new Error('Invalid account deletion confirmation payload');
|
|
124
|
+
}
|
|
125
|
+
return { status };
|
|
126
|
+
}
|
|
127
|
+
normalizeUser(user) {
|
|
128
|
+
if (!user || typeof user !== 'object') {
|
|
129
|
+
throw new Error('Invalid user data');
|
|
130
|
+
}
|
|
131
|
+
const userData = user;
|
|
132
|
+
const avatarUrl = typeof userData.avatar === 'string'
|
|
133
|
+
? userData.avatar
|
|
134
|
+
: userData.avatar?.url ?? userData.avatar_url ?? null;
|
|
135
|
+
return {
|
|
136
|
+
...userData,
|
|
137
|
+
avatar: avatarUrl,
|
|
138
|
+
...(avatarUrl ? { avatar_url: avatarUrl } : {})
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
normalizeRecoveryCodes(recoveryCodesRaw) {
|
|
142
|
+
return Array.isArray(recoveryCodesRaw)
|
|
143
|
+
? recoveryCodesRaw.filter((value) => typeof value === 'string')
|
|
144
|
+
: [];
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
export function createIdentityService(config) {
|
|
148
|
+
return new IdentityService(config.client, config.tokenStorage);
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/services/identity.ts"],"names":[],"mappings":"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"}
|
package/dist/stores/auth.d.ts
CHANGED
|
@@ -93,6 +93,7 @@ export declare function createAuthStoreDefinition<TExtension extends AuthStoreEx
|
|
|
93
93
|
avatar?: (string | Record<string, unknown> | null) | undefined;
|
|
94
94
|
avatar_url?: string | null | undefined;
|
|
95
95
|
cover_photo?: string | null | undefined;
|
|
96
|
+
bio?: string | null | undefined;
|
|
96
97
|
handle?: string | undefined;
|
|
97
98
|
role: "admin" | "moderator" | "user";
|
|
98
99
|
tenant_id?: string | undefined;
|
|
@@ -125,6 +126,7 @@ export declare function createAuthStoreDefinition<TExtension extends AuthStoreEx
|
|
|
125
126
|
avatar?: (string | Record<string, unknown> | null) | undefined;
|
|
126
127
|
avatar_url?: string | null | undefined;
|
|
127
128
|
cover_photo?: string | null | undefined;
|
|
129
|
+
bio?: string | null | undefined;
|
|
128
130
|
handle?: string | undefined;
|
|
129
131
|
role: "admin" | "moderator" | "user";
|
|
130
132
|
tenant_id?: string | undefined;
|
|
@@ -157,6 +159,7 @@ export declare function createAuthStoreDefinition<TExtension extends AuthStoreEx
|
|
|
157
159
|
avatar?: (string | Record<string, unknown> | null) | undefined;
|
|
158
160
|
avatar_url?: string | null | undefined;
|
|
159
161
|
cover_photo?: string | null | undefined;
|
|
162
|
+
bio?: string | null | undefined;
|
|
160
163
|
handle?: string | undefined;
|
|
161
164
|
role: "admin" | "moderator" | "user";
|
|
162
165
|
tenant_id?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/stores/auth.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/stores/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/types/api.d.ts
CHANGED
|
@@ -49,4 +49,23 @@ export interface RequestConfig {
|
|
|
49
49
|
onUploadProgress?: (progressEvent: UploadProgressEvent) => void;
|
|
50
50
|
signal?: AbortSignal;
|
|
51
51
|
}
|
|
52
|
+
/** Echo/WebSocket configuration shape used by app-level realtime clients. */
|
|
53
|
+
export interface EchoConfig {
|
|
54
|
+
broadcaster: string;
|
|
55
|
+
key: string;
|
|
56
|
+
wsHost: string;
|
|
57
|
+
wsPort: number;
|
|
58
|
+
wssPort: number;
|
|
59
|
+
forceTLS: boolean;
|
|
60
|
+
encrypted: boolean;
|
|
61
|
+
disableStats: boolean;
|
|
62
|
+
enabledTransports: string[];
|
|
63
|
+
auth: {
|
|
64
|
+
headers: {
|
|
65
|
+
Authorization: string;
|
|
66
|
+
Accept: string;
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
authEndpoint: string;
|
|
70
|
+
}
|
|
52
71
|
//# sourceMappingURL=api.d.ts.map
|
package/dist/types/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,qCAAqC;AACrC,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAA;IACP,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAA;IACD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,gCAAgC;AAChC,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,KAAK,EAAE,CAAC,EAAE,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,uBAAuB;AACvB,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC;AAED,6BAA6B;AAC7B,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,4DAA4D;AAC5D,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;IAClD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,CAAC,aAAa,EAAE,mBAAmB,KAAK,IAAI,CAAA;IAC/D,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB"}
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,qCAAqC;AACrC,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAA;IACP,IAAI,CAAC,EAAE;QACL,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,QAAQ,CAAC,EAAE,MAAM,CAAA;QACjB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;KACnB,CAAA;IACD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,gCAAgC;AAChC,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,KAAK,EAAE,CAAC,EAAE,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,uBAAuB;AACvB,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAClC;AAED,6BAA6B;AAC7B,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,4DAA4D;AAC5D,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAA;IAClD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,CAAC,aAAa,EAAE,mBAAmB,KAAK,IAAI,CAAA;IAC/D,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,6EAA6E;AAC7E,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,EAAE,OAAO,CAAA;IAClB,YAAY,EAAE,OAAO,CAAA;IACrB,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,IAAI,EAAE;QACJ,OAAO,EAAE;YACP,aAAa,EAAE,MAAM,CAAA;YACrB,MAAM,EAAE,MAAM,CAAA;SACf,CAAA;KACF,CAAA;IACD,YAAY,EAAE,MAAM,CAAA;CACrB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Legacy auth DTOs that remain useful for app-level compatibility.
|
|
3
|
+
*
|
|
4
|
+
* These types do not drive the shared auth service implementation directly,
|
|
5
|
+
* but keeping them in the package lets apps re-export one source of truth.
|
|
6
|
+
*/
|
|
7
|
+
import type { User } from './user.js';
|
|
8
|
+
export interface LoginCredentials {
|
|
9
|
+
email: string;
|
|
10
|
+
password: string;
|
|
11
|
+
remember?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface RegisterCredentials {
|
|
14
|
+
name: string;
|
|
15
|
+
email: string;
|
|
16
|
+
username: string;
|
|
17
|
+
password: string;
|
|
18
|
+
password_confirmation: string;
|
|
19
|
+
}
|
|
20
|
+
export interface AuthResponse {
|
|
21
|
+
user: User;
|
|
22
|
+
token: string;
|
|
23
|
+
expires_at?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface PasswordResetRequest {
|
|
26
|
+
email: string;
|
|
27
|
+
}
|
|
28
|
+
export interface PasswordResetConfirm {
|
|
29
|
+
email: string;
|
|
30
|
+
token: string;
|
|
31
|
+
password: string;
|
|
32
|
+
password_confirmation: string;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/types/auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAErC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,qBAAqB,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,IAAI,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,qBAAqB,EAAE,MAAM,CAAA;CAC9B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Legacy auth DTOs that remain useful for app-level compatibility.
|
|
3
|
+
*
|
|
4
|
+
* These types do not drive the shared auth service implementation directly,
|
|
5
|
+
* but keeping them in the package lets apps re-export one source of truth.
|
|
6
|
+
*/
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/types/auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identity-service DTOs shared across SocialKit frontends.
|
|
3
|
+
*/
|
|
4
|
+
export interface ChangePasswordPayload {
|
|
5
|
+
currentPassword: string;
|
|
6
|
+
newPassword: string;
|
|
7
|
+
confirmPassword: string;
|
|
8
|
+
}
|
|
9
|
+
export interface ChangePasswordResult {
|
|
10
|
+
message: string;
|
|
11
|
+
}
|
|
12
|
+
export interface TwoFactorStatus {
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface TwoFactorEnrollment {
|
|
16
|
+
qrCodeUrl: string;
|
|
17
|
+
secretBase32: string;
|
|
18
|
+
}
|
|
19
|
+
export interface TwoFactorEnableResult {
|
|
20
|
+
recoveryCodes: string[];
|
|
21
|
+
}
|
|
22
|
+
export interface TwoFactorDisablePayload {
|
|
23
|
+
password: string;
|
|
24
|
+
code: string;
|
|
25
|
+
}
|
|
26
|
+
export interface AccountDeletionRequestResult {
|
|
27
|
+
requestId: string;
|
|
28
|
+
status: string;
|
|
29
|
+
confirmationToken: string | null;
|
|
30
|
+
}
|
|
31
|
+
export interface AccountDeletionConfirmationResult {
|
|
32
|
+
status: string;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/types/identity.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,qBAAqB;IACpC,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,4BAA4B;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CACjC;AAED,MAAM,WAAW,iCAAiC;IAChD,MAAM,EAAE,MAAM,CAAA;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/types/identity.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/dist/types/user.d.ts
CHANGED
package/dist/types/user.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/types/user.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,8CAA8C;AAC9C,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAChD,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM,CAAA;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACtC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAA;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,oDAAoD;AACpD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,2BAA2B;AAC3B,wBAAgB,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,IAAI,CAShD;AAED,mCAAmC;AACnC,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,YAAY,CAOhE;AAED,qDAAqD;AACrD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,YAAY,EACtB,IAAI,GAAE,OAAO,GAAG,WAAW,GAAG,MAAe,GAC5C,IAAI,CA6BN"}
|
|
1
|
+
{"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../src/types/user.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,8CAA8C;AAC9C,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAChD,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM,CAAA;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACtC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAA;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,oDAAoD;AACpD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,2BAA2B;AAC3B,wBAAgB,MAAM,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,IAAI,CAShD;AAED,mCAAmC;AACnC,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,YAAY,CAOhE;AAED,qDAAqD;AACrD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,YAAY,EACtB,IAAI,GAAE,OAAO,GAAG,WAAW,GAAG,MAAe,GAC5C,IAAI,CA6BN"}
|
package/dist/types/user.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/types/user.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/types/user.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqCH,2BAA2B;AAC3B,MAAM,UAAU,MAAM,CAAC,GAAY;IACjC,OAAO,CACL,GAAG,KAAK,IAAI;QACZ,OAAO,GAAG,KAAK,QAAQ;QACvB,IAAI,IAAI,GAAG;QACX,MAAM,IAAI,GAAG;QACb,OAAO,IAAI,GAAG;QACd,MAAM,IAAI,GAAG,CACd,CAAA;AACH,CAAC;AAED,mCAAmC;AACnC,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,OAAO,CACL,GAAG,KAAK,IAAI;QACZ,OAAO,GAAG,KAAK,QAAQ;QACvB,IAAI,IAAI,GAAG;QACX,MAAM,IAAI,GAAG,CACd,CAAA;AACH,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,kBAAkB,CAChC,QAAsB,EACtB,OAAuC,MAAM;IAE7C,MAAM,IAAI,GAAS;QACjB,EAAE,EAAE,QAAQ,CAAC,EAAE;QACf,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE;QAC3B,IAAI;KACL,CAAA;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9D,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;IAC/B,CAAC;IAED,IAAI,QAAQ,CAAC,UAAU,KAAK,IAAI,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACtE,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAA;IACvC,CAAC;IAED,IAAI,QAAQ,CAAC,WAAW,KAAK,IAAI,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACxE,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAA;IACzC,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;IAC/B,CAAC;IAED,IAAI,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAA;IACvC,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -11,6 +11,7 @@ export type {
|
|
|
11
11
|
ApiResponse,
|
|
12
12
|
PaginatedResponse,
|
|
13
13
|
ApiError,
|
|
14
|
+
EchoConfig,
|
|
14
15
|
UploadProgressEvent,
|
|
15
16
|
RequestConfig
|
|
16
17
|
} from './types/api.js'
|
|
@@ -20,6 +21,14 @@ export type {
|
|
|
20
21
|
IdentityUser
|
|
21
22
|
} from './types/user.js'
|
|
22
23
|
|
|
24
|
+
export type {
|
|
25
|
+
AuthResponse,
|
|
26
|
+
LoginCredentials,
|
|
27
|
+
PasswordResetConfirm,
|
|
28
|
+
PasswordResetRequest,
|
|
29
|
+
RegisterCredentials
|
|
30
|
+
} from './types/auth.js'
|
|
31
|
+
|
|
23
32
|
export {
|
|
24
33
|
isUser,
|
|
25
34
|
isIdentityUser,
|
|
@@ -47,6 +56,16 @@ export {
|
|
|
47
56
|
createApiService
|
|
48
57
|
} from './services/api.js'
|
|
49
58
|
|
|
59
|
+
// ── Identity Service ─────────────────────────────────────────────────────────
|
|
60
|
+
export type {
|
|
61
|
+
IdentityServiceConfig,
|
|
62
|
+
IdentityServiceInstance
|
|
63
|
+
} from './services/identity.js'
|
|
64
|
+
|
|
65
|
+
export {
|
|
66
|
+
createIdentityService
|
|
67
|
+
} from './services/identity.js'
|
|
68
|
+
|
|
50
69
|
// ── Auth Service ─────────────────────────────────────────────────────────────
|
|
51
70
|
export type {
|
|
52
71
|
AuthServiceConfig,
|
|
@@ -72,6 +91,18 @@ export {
|
|
|
72
91
|
createExtendedAuthService
|
|
73
92
|
} from './services/auth.js'
|
|
74
93
|
|
|
94
|
+
// ── Identity Types ───────────────────────────────────────────────────────────
|
|
95
|
+
export type {
|
|
96
|
+
AccountDeletionConfirmationResult,
|
|
97
|
+
AccountDeletionRequestResult,
|
|
98
|
+
ChangePasswordPayload,
|
|
99
|
+
ChangePasswordResult,
|
|
100
|
+
TwoFactorDisablePayload,
|
|
101
|
+
TwoFactorEnableResult,
|
|
102
|
+
TwoFactorEnrollment,
|
|
103
|
+
TwoFactorStatus
|
|
104
|
+
} from './types/identity.js'
|
|
105
|
+
|
|
75
106
|
// ── Auth Store ───────────────────────────────────────────────────────────────
|
|
76
107
|
export type {
|
|
77
108
|
AuthStoreConfig,
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configurable identity service for SocialKit-powered frontends.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import type { AxiosInstance } from 'axios'
|
|
6
|
+
import type { TokenStorage } from '../utils/tokenStorage.js'
|
|
7
|
+
import { extractTokenFromResponse } from '../utils/tokenStorage.js'
|
|
8
|
+
import type {
|
|
9
|
+
AccountDeletionConfirmationResult,
|
|
10
|
+
AccountDeletionRequestResult,
|
|
11
|
+
ChangePasswordPayload,
|
|
12
|
+
ChangePasswordResult,
|
|
13
|
+
TwoFactorDisablePayload,
|
|
14
|
+
TwoFactorEnableResult,
|
|
15
|
+
TwoFactorEnrollment,
|
|
16
|
+
TwoFactorStatus
|
|
17
|
+
} from '../types/identity.js'
|
|
18
|
+
import type { IdentityUser } from '../types/user.js'
|
|
19
|
+
|
|
20
|
+
interface IdentityUserResponse {
|
|
21
|
+
id: string
|
|
22
|
+
handle?: string
|
|
23
|
+
name: string
|
|
24
|
+
avatar?: string | { url: string; thumb_url?: string } | null
|
|
25
|
+
avatar_url?: string | null
|
|
26
|
+
cover_photo?: string | null
|
|
27
|
+
bio?: string | null
|
|
28
|
+
email?: string
|
|
29
|
+
created_at?: string
|
|
30
|
+
updated_at?: string
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
interface DataEnvelope<T> {
|
|
34
|
+
data?: T
|
|
35
|
+
message?: string
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
interface TwoFactorStatusPayload {
|
|
39
|
+
enabled?: unknown
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
interface TwoFactorEnrollmentPayload {
|
|
43
|
+
qr_code_url?: unknown
|
|
44
|
+
secret_base32?: unknown
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
interface RecoveryCodesPayload {
|
|
48
|
+
recovery_codes?: unknown
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
interface AccountDeletionRequestPayload {
|
|
52
|
+
id?: unknown
|
|
53
|
+
status?: unknown
|
|
54
|
+
confirmation_token?: unknown
|
|
55
|
+
dev_token?: unknown
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
interface AccountDeletionConfirmationPayload {
|
|
59
|
+
status?: unknown
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export interface IdentityServiceConfig {
|
|
63
|
+
client: AxiosInstance
|
|
64
|
+
tokenStorage: TokenStorage
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export interface IdentityServiceInstance {
|
|
68
|
+
getCurrentUser(): Promise<IdentityUser>
|
|
69
|
+
getUser(userId: string): Promise<IdentityUser>
|
|
70
|
+
updateUser(userId: string, payload: Partial<IdentityUser>): Promise<IdentityUser>
|
|
71
|
+
uploadAvatar(file: File): Promise<{ url: string }>
|
|
72
|
+
changePassword(payload: ChangePasswordPayload): Promise<ChangePasswordResult>
|
|
73
|
+
getTwoFactorStatus(): Promise<TwoFactorStatus>
|
|
74
|
+
startTwoFactorEnrollment(currentPassword: string): Promise<TwoFactorEnrollment>
|
|
75
|
+
enableTwoFactor(code: string): Promise<TwoFactorEnableResult>
|
|
76
|
+
regenerateTwoFactorRecoveryCodes(code: string): Promise<TwoFactorEnableResult>
|
|
77
|
+
disableTwoFactor(payload: TwoFactorDisablePayload): Promise<void>
|
|
78
|
+
requestAccountDeletion(): Promise<AccountDeletionRequestResult>
|
|
79
|
+
confirmAccountDeletion(
|
|
80
|
+
requestId: string,
|
|
81
|
+
confirmationToken: string
|
|
82
|
+
): Promise<AccountDeletionConfirmationResult>
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
class IdentityService implements IdentityServiceInstance {
|
|
86
|
+
public constructor(
|
|
87
|
+
private readonly client: AxiosInstance,
|
|
88
|
+
private readonly tokenStorage: TokenStorage
|
|
89
|
+
) {}
|
|
90
|
+
|
|
91
|
+
public async getCurrentUser(): Promise<IdentityUser> {
|
|
92
|
+
const response = await this.client.get<DataEnvelope<unknown>>('/v1/me')
|
|
93
|
+
return this.normalizeUser(response.data.data)
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
public async getUser(userId: string): Promise<IdentityUser> {
|
|
97
|
+
const response = await this.client.get<DataEnvelope<unknown>>('/v1/identity/users/by-ids', {
|
|
98
|
+
params: {
|
|
99
|
+
ids: userId
|
|
100
|
+
}
|
|
101
|
+
})
|
|
102
|
+
|
|
103
|
+
const users = Array.isArray(response.data?.data) ? response.data.data : []
|
|
104
|
+
const user = users.find((candidate: unknown) => {
|
|
105
|
+
if (!candidate || typeof candidate !== 'object') {
|
|
106
|
+
return false
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
const candidateWithId = candidate as { id?: unknown }
|
|
110
|
+
|
|
111
|
+
return candidateWithId.id === userId
|
|
112
|
+
})
|
|
113
|
+
|
|
114
|
+
if (!user) {
|
|
115
|
+
throw new Error('User not found')
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return this.normalizeUser(user)
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
public async updateUser(
|
|
122
|
+
_userId: string,
|
|
123
|
+
payload: Partial<IdentityUser>
|
|
124
|
+
): Promise<IdentityUser> {
|
|
125
|
+
const response = await this.client.patch<DataEnvelope<unknown>>('/v1/me', payload)
|
|
126
|
+
return this.normalizeUser(response.data.data)
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
public async uploadAvatar(file: File): Promise<{ url: string }> {
|
|
130
|
+
const formData = new FormData()
|
|
131
|
+
formData.append('file', file)
|
|
132
|
+
|
|
133
|
+
const response = await this.client.post<{ url: string }>('/v1/media/upload', formData)
|
|
134
|
+
return response.data
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
public async changePassword(payload: ChangePasswordPayload): Promise<ChangePasswordResult> {
|
|
138
|
+
const response = await this.client.patch<DataEnvelope<unknown>>('/v1/me/password', {
|
|
139
|
+
current_password: payload.currentPassword,
|
|
140
|
+
password: payload.newPassword,
|
|
141
|
+
password_confirmation: payload.confirmPassword
|
|
142
|
+
})
|
|
143
|
+
|
|
144
|
+
const rotatedToken = extractTokenFromResponse(response.data)
|
|
145
|
+
if (rotatedToken) {
|
|
146
|
+
this.tokenStorage.setToken(rotatedToken)
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
const message = typeof response.data?.message === 'string' && response.data.message.trim() !== ''
|
|
150
|
+
? response.data.message
|
|
151
|
+
: 'Password updated successfully'
|
|
152
|
+
|
|
153
|
+
return { message }
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
public async getTwoFactorStatus(): Promise<TwoFactorStatus> {
|
|
157
|
+
const response = await this.client.get<DataEnvelope<TwoFactorStatusPayload>>('/v1/security/2fa/status')
|
|
158
|
+
|
|
159
|
+
return {
|
|
160
|
+
enabled: response.data?.data?.enabled === true
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
public async startTwoFactorEnrollment(currentPassword: string): Promise<TwoFactorEnrollment> {
|
|
165
|
+
const response = await this.client.post<DataEnvelope<TwoFactorEnrollmentPayload>>(
|
|
166
|
+
'/v1/security/2fa/start',
|
|
167
|
+
{
|
|
168
|
+
current_password: currentPassword
|
|
169
|
+
}
|
|
170
|
+
)
|
|
171
|
+
|
|
172
|
+
const qrCodeUrl = response.data?.data?.qr_code_url
|
|
173
|
+
const secretBase32 = response.data?.data?.secret_base32
|
|
174
|
+
|
|
175
|
+
if (typeof qrCodeUrl !== 'string' || typeof secretBase32 !== 'string') {
|
|
176
|
+
throw new Error('Invalid two-factor enrollment response payload')
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
return {
|
|
180
|
+
qrCodeUrl,
|
|
181
|
+
secretBase32
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
public async enableTwoFactor(code: string): Promise<TwoFactorEnableResult> {
|
|
186
|
+
const response = await this.client.post<DataEnvelope<RecoveryCodesPayload>>(
|
|
187
|
+
'/v1/security/2fa/enable',
|
|
188
|
+
{ code }
|
|
189
|
+
)
|
|
190
|
+
|
|
191
|
+
return {
|
|
192
|
+
recoveryCodes: this.normalizeRecoveryCodes(response.data?.data?.recovery_codes)
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
public async regenerateTwoFactorRecoveryCodes(code: string): Promise<TwoFactorEnableResult> {
|
|
197
|
+
const response = await this.client.post<DataEnvelope<RecoveryCodesPayload>>(
|
|
198
|
+
'/v1/security/2fa/recovery-codes/regenerate',
|
|
199
|
+
{ code }
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
return {
|
|
203
|
+
recoveryCodes: this.normalizeRecoveryCodes(response.data?.data?.recovery_codes)
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
public async disableTwoFactor(payload: TwoFactorDisablePayload): Promise<void> {
|
|
208
|
+
await this.client.post('/v1/security/2fa/disable', {
|
|
209
|
+
password: payload.password,
|
|
210
|
+
code: payload.code
|
|
211
|
+
})
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
public async requestAccountDeletion(): Promise<AccountDeletionRequestResult> {
|
|
215
|
+
const response = await this.client.post<DataEnvelope<AccountDeletionRequestPayload>>('/v1/compliance/dsar/erase')
|
|
216
|
+
const id = response.data?.data?.id
|
|
217
|
+
const status = response.data?.data?.status
|
|
218
|
+
const confirmationToken = response.data?.data?.confirmation_token
|
|
219
|
+
const devToken = response.data?.data?.dev_token
|
|
220
|
+
|
|
221
|
+
if (typeof id !== 'string' || typeof status !== 'string') {
|
|
222
|
+
throw new Error('Invalid account deletion request payload')
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
return {
|
|
226
|
+
requestId: id,
|
|
227
|
+
status,
|
|
228
|
+
confirmationToken: typeof confirmationToken === 'string'
|
|
229
|
+
? confirmationToken
|
|
230
|
+
: typeof devToken === 'string'
|
|
231
|
+
? devToken
|
|
232
|
+
: null
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
public async confirmAccountDeletion(
|
|
237
|
+
requestId: string,
|
|
238
|
+
confirmationToken: string
|
|
239
|
+
): Promise<AccountDeletionConfirmationResult> {
|
|
240
|
+
const response = await this.client.post<DataEnvelope<AccountDeletionConfirmationPayload>>(
|
|
241
|
+
`/v1/compliance/dsar/${encodeURIComponent(requestId)}/confirm`,
|
|
242
|
+
{
|
|
243
|
+
token: confirmationToken
|
|
244
|
+
}
|
|
245
|
+
)
|
|
246
|
+
const status = response.data?.data?.status
|
|
247
|
+
|
|
248
|
+
if (typeof status !== 'string') {
|
|
249
|
+
throw new Error('Invalid account deletion confirmation payload')
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
return { status }
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
private normalizeUser(user: unknown): IdentityUser {
|
|
256
|
+
if (!user || typeof user !== 'object') {
|
|
257
|
+
throw new Error('Invalid user data')
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
const userData = user as IdentityUserResponse
|
|
261
|
+
const avatarUrl = typeof userData.avatar === 'string'
|
|
262
|
+
? userData.avatar
|
|
263
|
+
: userData.avatar?.url ?? userData.avatar_url ?? null
|
|
264
|
+
|
|
265
|
+
return {
|
|
266
|
+
...userData,
|
|
267
|
+
avatar: avatarUrl,
|
|
268
|
+
...(avatarUrl ? { avatar_url: avatarUrl } : {})
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
private normalizeRecoveryCodes(recoveryCodesRaw: unknown): string[] {
|
|
273
|
+
return Array.isArray(recoveryCodesRaw)
|
|
274
|
+
? recoveryCodesRaw.filter((value: unknown): value is string => typeof value === 'string')
|
|
275
|
+
: []
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
export function createIdentityService(config: IdentityServiceConfig): IdentityServiceInstance {
|
|
280
|
+
return new IdentityService(config.client, config.tokenStorage)
|
|
281
|
+
}
|
package/src/types/api.ts
CHANGED
|
@@ -54,3 +54,23 @@ export interface RequestConfig {
|
|
|
54
54
|
onUploadProgress?: (progressEvent: UploadProgressEvent) => void
|
|
55
55
|
signal?: AbortSignal
|
|
56
56
|
}
|
|
57
|
+
|
|
58
|
+
/** Echo/WebSocket configuration shape used by app-level realtime clients. */
|
|
59
|
+
export interface EchoConfig {
|
|
60
|
+
broadcaster: string
|
|
61
|
+
key: string
|
|
62
|
+
wsHost: string
|
|
63
|
+
wsPort: number
|
|
64
|
+
wssPort: number
|
|
65
|
+
forceTLS: boolean
|
|
66
|
+
encrypted: boolean
|
|
67
|
+
disableStats: boolean
|
|
68
|
+
enabledTransports: string[]
|
|
69
|
+
auth: {
|
|
70
|
+
headers: {
|
|
71
|
+
Authorization: string
|
|
72
|
+
Accept: string
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
authEndpoint: string
|
|
76
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Legacy auth DTOs that remain useful for app-level compatibility.
|
|
3
|
+
*
|
|
4
|
+
* These types do not drive the shared auth service implementation directly,
|
|
5
|
+
* but keeping them in the package lets apps re-export one source of truth.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import type { User } from './user.js'
|
|
9
|
+
|
|
10
|
+
export interface LoginCredentials {
|
|
11
|
+
email: string
|
|
12
|
+
password: string
|
|
13
|
+
remember?: boolean
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface RegisterCredentials {
|
|
17
|
+
name: string
|
|
18
|
+
email: string
|
|
19
|
+
username: string
|
|
20
|
+
password: string
|
|
21
|
+
password_confirmation: string
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface AuthResponse {
|
|
25
|
+
user: User
|
|
26
|
+
token: string
|
|
27
|
+
expires_at?: string
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface PasswordResetRequest {
|
|
31
|
+
email: string
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface PasswordResetConfirm {
|
|
35
|
+
email: string
|
|
36
|
+
token: string
|
|
37
|
+
password: string
|
|
38
|
+
password_confirmation: string
|
|
39
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Identity-service DTOs shared across SocialKit frontends.
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export interface ChangePasswordPayload {
|
|
6
|
+
currentPassword: string
|
|
7
|
+
newPassword: string
|
|
8
|
+
confirmPassword: string
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface ChangePasswordResult {
|
|
12
|
+
message: string
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface TwoFactorStatus {
|
|
16
|
+
enabled: boolean
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface TwoFactorEnrollment {
|
|
20
|
+
qrCodeUrl: string
|
|
21
|
+
secretBase32: string
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface TwoFactorEnableResult {
|
|
25
|
+
recoveryCodes: string[]
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface TwoFactorDisablePayload {
|
|
29
|
+
password: string
|
|
30
|
+
code: string
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface AccountDeletionRequestResult {
|
|
34
|
+
requestId: string
|
|
35
|
+
status: string
|
|
36
|
+
confirmationToken: string | null
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface AccountDeletionConfirmationResult {
|
|
40
|
+
status: string
|
|
41
|
+
}
|
package/src/types/user.ts
CHANGED