@fonoster/identity 0.7.4 → 0.7.7
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 +163 -2
- package/dist/apikeys/createApiKey.d.ts +3 -3
- package/dist/apikeys/createApiKey.js +24 -36
- package/dist/apikeys/deleteApiKey.d.ts +2 -3
- package/dist/apikeys/deleteApiKey.js +11 -21
- package/dist/apikeys/listApiKeys.d.ts +2 -3
- package/dist/apikeys/listApiKeys.js +21 -1
- package/dist/apikeys/regenerateApiKey.d.ts +2 -3
- package/dist/apikeys/regenerateApiKey.js +18 -26
- package/dist/db.d.ts +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.js +1 -1
- package/dist/exchanges/exchangeApiKey.d.ts +2 -19
- package/dist/exchanges/exchangeApiKey.js +12 -22
- package/dist/exchanges/exchangeCredentials.d.ts +2 -19
- package/dist/exchanges/exchangeCredentials.js +12 -22
- package/dist/exchanges/exchangeRefreshToken.d.ts +2 -16
- package/dist/exchanges/exchangeRefreshToken.js +11 -19
- package/dist/exchanges/index.d.ts +1 -1
- package/dist/exchanges/index.js +1 -1
- package/dist/exchanges/payloads/users/index.d.ts +1 -1
- package/dist/exchanges/payloads/users/index.js +1 -1
- package/dist/exchanges/types.d.ts +11 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +4 -4
- package/dist/invites/index.d.ts +1 -1
- package/dist/invites/index.js +1 -1
- package/dist/invites/sendInvite.d.ts +1 -1
- package/dist/roles.d.ts +1 -1
- package/dist/roles.js +1 -1
- package/dist/service.d.ts +37 -57
- package/dist/users/createUser.d.ts +2 -3
- package/dist/users/createUser.js +16 -28
- package/dist/users/deleteUser.d.ts +3 -3
- package/dist/users/deleteUser.js +14 -20
- package/dist/users/getUser.d.ts +2 -3
- package/dist/users/getUser.js +20 -23
- package/dist/users/index.d.ts +1 -1
- package/dist/users/index.js +1 -1
- package/dist/users/updateUser.d.ts +2 -3
- package/dist/users/updateUser.js +23 -34
- package/dist/users/upsertDefaultUser.d.ts +2 -2
- package/dist/users/upsertDefaultUser.js +2 -2
- package/dist/utils/generateAccessKeyId.d.ts +1 -1
- package/dist/utils/getApiKeyByAccessKeyId.d.ts +3 -3
- package/dist/utils/getUserByEmail.d.ts +2 -2
- package/dist/utils/index.d.ts +5 -5
- package/dist/utils/index.js +5 -5
- package/dist/utils/withAccess.js +10 -34
- package/dist/workspaces/createWorkspace.d.ts +2 -3
- package/dist/workspaces/createWorkspace.js +17 -25
- package/dist/workspaces/deleteWorkspace.d.ts +2 -3
- package/dist/workspaces/deleteWorkspace.js +14 -17
- package/dist/workspaces/getWorkspace.d.ts +2 -3
- package/dist/workspaces/getWorkspace.js +20 -23
- package/dist/workspaces/index.d.ts +2 -2
- package/dist/workspaces/index.js +2 -2
- package/dist/workspaces/inviteUserToWorkspace.d.ts +2 -3
- package/dist/workspaces/inviteUserToWorkspace.js +57 -70
- package/dist/workspaces/listWorkspaces.d.ts +1 -2
- package/dist/workspaces/listWorkspaces.js +21 -1
- package/dist/workspaces/removeUserFromWorkspace.d.ts +2 -3
- package/dist/workspaces/removeUserFromWorkspace.js +34 -37
- package/dist/workspaces/resendWorkspaceMembershipInvitation.d.ts +2 -3
- package/dist/workspaces/resendWorkspaceMembershipInvitation.js +47 -50
- package/dist/workspaces/updateWorkspace.d.ts +2 -3
- package/dist/workspaces/updateWorkspace.js +21 -30
- package/package.json +5 -5
|
@@ -34,28 +34,20 @@ exports.exchangeRefreshToken = exchangeRefreshToken;
|
|
|
34
34
|
const common_1 = require("@fonoster/common");
|
|
35
35
|
const logger_1 = require("@fonoster/logger");
|
|
36
36
|
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
37
|
-
const zod_1 = require("zod");
|
|
38
37
|
const exchangeTokens_1 = require("./exchangeTokens");
|
|
39
38
|
const logger = (0, logger_1.getLogger)({ service: "identity", filePath: __filename });
|
|
40
|
-
const ExchangeRefreshTokenRequestSchema = zod_1.z.object({
|
|
41
|
-
refreshToken: zod_1.z.string()
|
|
42
|
-
});
|
|
43
39
|
const SIGN_ALGORITHM = "RS256";
|
|
44
40
|
function exchangeRefreshToken(prisma, identityConfig) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
return callback(null, yield (0, exchangeTokens_1.exchangeTokens)(prisma, identityConfig)(accessKeyId));
|
|
56
|
-
}
|
|
57
|
-
catch (error) {
|
|
58
|
-
(0, common_1.handleError)(error, callback);
|
|
59
|
-
}
|
|
41
|
+
const fn = (call, callback) => __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
const { privateKey } = identityConfig;
|
|
43
|
+
const { request } = call;
|
|
44
|
+
const { refreshToken: oldRefreshToken } = request;
|
|
45
|
+
const oldRefreshTokenDecoded = jsonwebtoken_1.default.verify(oldRefreshToken, privateKey, {
|
|
46
|
+
algorithms: [SIGN_ALGORITHM]
|
|
47
|
+
});
|
|
48
|
+
const { accessKeyId } = oldRefreshTokenDecoded;
|
|
49
|
+
logger.verbose("call to exchangeRefreshToken", { accessKeyId });
|
|
50
|
+
callback(null, yield (0, exchangeTokens_1.exchangeTokens)(prisma, identityConfig)(accessKeyId));
|
|
60
51
|
});
|
|
52
|
+
return (0, common_1.withErrorHandlingAndValidation)(fn, common_1.exchangeRefreshTokenRequestSchema);
|
|
61
53
|
}
|
package/dist/exchanges/index.js
CHANGED
|
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./TokenUseEnum"), exports);
|
|
17
18
|
/*
|
|
18
19
|
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
19
20
|
* http://github.com/fonoster/fonoster
|
|
@@ -35,5 +36,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
35
36
|
__exportStar(require("./exchangeApiKey"), exports);
|
|
36
37
|
__exportStar(require("./exchangeCredentials"), exports);
|
|
37
38
|
__exportStar(require("./exchangeRefreshToken"), exports);
|
|
38
|
-
__exportStar(require("./TokenUseEnum"), exports);
|
|
39
39
|
__exportStar(require("./types"), exports);
|
|
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./getAccessTokenPayload"), exports);
|
|
17
18
|
/*
|
|
18
19
|
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
19
20
|
* http://github.com/fonoster/fonoster
|
|
@@ -33,5 +34,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
33
34
|
* limitations under the License.
|
|
34
35
|
*/
|
|
35
36
|
__exportStar(require("./getIdTokenPayload"), exports);
|
|
36
|
-
__exportStar(require("./getAccessTokenPayload"), exports);
|
|
37
37
|
__exportStar(require("./getRefreshTokenPayload"), exports);
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { Validators as V } from "@fonoster/common";
|
|
1
2
|
import { WorkspaceRoleEnum } from "@fonoster/types";
|
|
3
|
+
import { z } from "zod";
|
|
2
4
|
import { TokenUseEnum } from "./TokenUseEnum";
|
|
3
5
|
type Role = {
|
|
4
6
|
name: string;
|
|
@@ -53,4 +55,12 @@ type IdentityConfig = {
|
|
|
53
55
|
};
|
|
54
56
|
};
|
|
55
57
|
type DecodedToken<T extends TokenUseEnum> = T extends TokenUseEnum.ID ? IdToken : T extends TokenUseEnum.ACCESS ? AccessToken : T extends TokenUseEnum.REFRESH ? TokenUseEnum : never;
|
|
56
|
-
|
|
58
|
+
type ExchangeApiKeysRequest = z.infer<typeof V.exchangeApiKeysRequestSchema>;
|
|
59
|
+
type ExchangeCredentialsRequest = z.infer<typeof V.exchangeCredentialsRequestSchema>;
|
|
60
|
+
type ExchangeResponse = {
|
|
61
|
+
idToken: string;
|
|
62
|
+
accessToken: string;
|
|
63
|
+
refreshToken: string;
|
|
64
|
+
};
|
|
65
|
+
type ExchangeRefreshTokenRequest = z.infer<typeof V.exchangeRefreshTokenRequestSchema>;
|
|
66
|
+
export { Access, AccessToken, DecodedToken, ExchangeApiKeysRequest, ExchangeCredentialsRequest, ExchangeRefreshTokenRequest, ExchangeResponse, IdToken, IdentityConfig, RefreshToken, Role };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
export * from "./apikeys";
|
|
3
|
+
export * from "./createAuthInterceptor";
|
|
3
4
|
export * from "./exchanges";
|
|
5
|
+
export * from "./getPublicKeyClient";
|
|
4
6
|
export * from "./invites";
|
|
7
|
+
export * from "./service";
|
|
5
8
|
export * from "./users";
|
|
6
|
-
export * from "./workspaces";
|
|
7
9
|
export * from "./utils";
|
|
8
|
-
export * from "./
|
|
9
|
-
export * from "./createAuthInterceptor";
|
|
10
|
-
export * from "./getPublicKeyClient";
|
|
10
|
+
export * from "./workspaces";
|
package/dist/index.js
CHANGED
|
@@ -34,11 +34,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
34
34
|
* limitations under the License.
|
|
35
35
|
*/
|
|
36
36
|
__exportStar(require("./apikeys"), exports);
|
|
37
|
+
__exportStar(require("./createAuthInterceptor"), exports);
|
|
37
38
|
__exportStar(require("./exchanges"), exports);
|
|
39
|
+
__exportStar(require("./getPublicKeyClient"), exports);
|
|
38
40
|
__exportStar(require("./invites"), exports);
|
|
41
|
+
__exportStar(require("./service"), exports);
|
|
39
42
|
__exportStar(require("./users"), exports);
|
|
40
|
-
__exportStar(require("./workspaces"), exports);
|
|
41
43
|
__exportStar(require("./utils"), exports);
|
|
42
|
-
__exportStar(require("./
|
|
43
|
-
__exportStar(require("./createAuthInterceptor"), exports);
|
|
44
|
-
__exportStar(require("./getPublicKeyClient"), exports);
|
|
44
|
+
__exportStar(require("./workspaces"), exports);
|
package/dist/invites/index.d.ts
CHANGED
package/dist/invites/index.js
CHANGED
|
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./EmailTemplatesEnum"), exports);
|
|
17
18
|
/*
|
|
18
19
|
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
19
20
|
* http://github.com/fonoster/fonoster
|
|
@@ -33,5 +34,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
33
34
|
* limitations under the License.
|
|
34
35
|
*/
|
|
35
36
|
__exportStar(require("./createInviteBody"), exports);
|
|
36
|
-
__exportStar(require("./EmailTemplatesEnum"), exports);
|
|
37
37
|
__exportStar(require("./sendInvite"), exports);
|
|
@@ -8,4 +8,4 @@ type InviteParams = {
|
|
|
8
8
|
};
|
|
9
9
|
type SendInvite = (sendEmail: (params: EmailParams) => Promise<void>, request: InviteParams) => Promise<void>;
|
|
10
10
|
declare function sendInvite(sendEmail: (params: EmailParams) => Promise<void>, request: InviteParams): Promise<void>;
|
|
11
|
-
export {
|
|
11
|
+
export { InviteParams, SendInvite, sendInvite };
|
package/dist/roles.d.ts
CHANGED
|
@@ -2,4 +2,4 @@ import { Role } from "./exchanges/types";
|
|
|
2
2
|
declare const VOICE_SERVICE_ROLE = "VOICE_SERVICE";
|
|
3
3
|
declare const workspaceAccess: string[];
|
|
4
4
|
declare const roles: Role[];
|
|
5
|
-
export { roles, workspaceAccess
|
|
5
|
+
export { VOICE_SERVICE_ROLE, roles, workspaceAccess };
|
package/dist/roles.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.workspaceAccess = exports.roles = exports.VOICE_SERVICE_ROLE = void 0;
|
|
4
4
|
/* eslint-disable sonarjs/no-duplicate-string */
|
|
5
5
|
/*
|
|
6
6
|
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
package/dist/service.d.ts
CHANGED
|
@@ -14,82 +14,62 @@ declare function buildIdentityService(identityConfig: IdentityConfig): {
|
|
|
14
14
|
};
|
|
15
15
|
handlers: {
|
|
16
16
|
createWorkspace: (call: {
|
|
17
|
-
request:
|
|
18
|
-
}, callback: (error
|
|
17
|
+
request: unknown;
|
|
18
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
19
19
|
deleteWorkspace: (call: {
|
|
20
|
-
request:
|
|
21
|
-
}, callback: (error
|
|
20
|
+
request: unknown;
|
|
21
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
22
22
|
getWorkspace: (call: {
|
|
23
|
-
request:
|
|
24
|
-
}, callback: (error
|
|
23
|
+
request: unknown;
|
|
24
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
25
25
|
updateWorkspace: (call: {
|
|
26
|
-
request:
|
|
27
|
-
}, callback: (error
|
|
26
|
+
request: unknown;
|
|
27
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
28
28
|
listWorkspaces: (call: {
|
|
29
29
|
request: unknown;
|
|
30
|
-
}, callback: (error
|
|
30
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
31
31
|
inviteUserToWorkspace: (call: {
|
|
32
|
-
request:
|
|
33
|
-
}, callback: (error
|
|
32
|
+
request: unknown;
|
|
33
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
34
34
|
resendWorkspaceMembershipInvitation: (call: {
|
|
35
|
-
request:
|
|
36
|
-
}, callback: (error
|
|
35
|
+
request: unknown;
|
|
36
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
37
37
|
removeUserFromWorkspace: (call: {
|
|
38
|
-
request:
|
|
39
|
-
}, callback: (error
|
|
38
|
+
request: unknown;
|
|
39
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
40
40
|
createUser: (call: {
|
|
41
|
-
request:
|
|
42
|
-
}, callback: (error
|
|
41
|
+
request: unknown;
|
|
42
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
43
43
|
getUser: (call: {
|
|
44
|
-
request:
|
|
45
|
-
}, callback: (error
|
|
44
|
+
request: unknown;
|
|
45
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
46
46
|
deleteUser: (call: {
|
|
47
|
-
request:
|
|
48
|
-
}, callback: (error
|
|
47
|
+
request: unknown;
|
|
48
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
49
49
|
updateUser: (call: {
|
|
50
|
-
request:
|
|
51
|
-
}, callback: (error
|
|
50
|
+
request: unknown;
|
|
51
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
52
52
|
createApiKey: (call: {
|
|
53
|
-
request:
|
|
54
|
-
}, callback: (error
|
|
53
|
+
request: unknown;
|
|
54
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
55
55
|
deleteApiKey: (call: {
|
|
56
|
-
request:
|
|
57
|
-
}, callback: (error
|
|
56
|
+
request: unknown;
|
|
57
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
58
58
|
listApiKeys: (call: {
|
|
59
|
-
request:
|
|
60
|
-
}, callback: (error
|
|
59
|
+
request: unknown;
|
|
60
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
61
61
|
regenerateApiKey: (call: {
|
|
62
|
-
request:
|
|
63
|
-
}, callback: (error
|
|
62
|
+
request: unknown;
|
|
63
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
64
64
|
exchangeApiKey: (call: {
|
|
65
|
-
request:
|
|
66
|
-
|
|
67
|
-
accessKeySecret?: string;
|
|
68
|
-
};
|
|
69
|
-
}, callback: (error: import("@fonoster/common").GrpcErrorMessage, response?: {
|
|
70
|
-
idToken: string;
|
|
71
|
-
accessToken: string;
|
|
72
|
-
refreshToken: string;
|
|
73
|
-
}) => void) => Promise<void>;
|
|
65
|
+
request: unknown;
|
|
66
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
74
67
|
exchangeCredentials: (call: {
|
|
75
|
-
request:
|
|
76
|
-
|
|
77
|
-
password?: string;
|
|
78
|
-
};
|
|
79
|
-
}, callback: (error: import("@fonoster/common").GrpcErrorMessage, response?: {
|
|
80
|
-
idToken: string;
|
|
81
|
-
accessToken: string;
|
|
82
|
-
refreshToken: string;
|
|
83
|
-
}) => void) => Promise<void>;
|
|
68
|
+
request: unknown;
|
|
69
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
84
70
|
exchangeRefreshToken: (call: {
|
|
85
|
-
request:
|
|
86
|
-
|
|
87
|
-
};
|
|
88
|
-
}, callback: (error: import("@fonoster/common").GrpcErrorMessage, response?: {
|
|
89
|
-
idToken: string;
|
|
90
|
-
accessToken: string;
|
|
91
|
-
refreshToken: string;
|
|
92
|
-
}) => void) => Promise<void>;
|
|
71
|
+
request: unknown;
|
|
72
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
93
73
|
getPublicKey: (_: unknown, callback: (error: import("@fonoster/common").GrpcErrorMessage, response?: {
|
|
94
74
|
publicKey: string;
|
|
95
75
|
}) => void) => Promise<void>;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { GrpcErrorMessage } from "@fonoster/common";
|
|
2
|
-
import { BaseApiObject, CreateUserRequest } from "@fonoster/types";
|
|
3
2
|
import { Prisma } from "../db";
|
|
4
3
|
declare function createUser(prisma: Prisma): (call: {
|
|
5
|
-
request:
|
|
6
|
-
}, callback: (error
|
|
4
|
+
request: unknown;
|
|
5
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
7
6
|
export { createUser };
|
package/dist/users/createUser.js
CHANGED
|
@@ -30,36 +30,24 @@ exports.createUser = createUser;
|
|
|
30
30
|
*/
|
|
31
31
|
const common_1 = require("@fonoster/common");
|
|
32
32
|
const logger_1 = require("@fonoster/logger");
|
|
33
|
-
const zod_1 = require("zod");
|
|
34
33
|
const generateAccessKeyId_1 = require("../utils/generateAccessKeyId");
|
|
35
34
|
const logger = (0, logger_1.getLogger)({ service: "identity", filePath: __filename });
|
|
36
|
-
const CreateUserRequestSchema = zod_1.z.object({
|
|
37
|
-
name: zod_1.z.string().min(3, "Name must contain at least 3 characters").max(50),
|
|
38
|
-
email: zod_1.z.string().email(),
|
|
39
|
-
password: zod_1.z.string().min(8).max(100),
|
|
40
|
-
avatar: zod_1.z.string().url()
|
|
41
|
-
});
|
|
42
35
|
function createUser(prisma) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
ref: user.ref
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
(0, common_1.handleError)(error, callback);
|
|
63
|
-
}
|
|
36
|
+
const fn = (call, callback) => __awaiter(this, void 0, void 0, function* () {
|
|
37
|
+
const { request } = call;
|
|
38
|
+
const { name, email, password, avatar } = request;
|
|
39
|
+
logger.verbose("call to createUser", { email });
|
|
40
|
+
const user = yield prisma.user.create({
|
|
41
|
+
data: {
|
|
42
|
+
name,
|
|
43
|
+
email,
|
|
44
|
+
accessKeyId: (0, generateAccessKeyId_1.generateAccessKeyId)(generateAccessKeyId_1.AccessKeyIdType.USER),
|
|
45
|
+
password,
|
|
46
|
+
avatar
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
const { ref } = user;
|
|
50
|
+
callback(null, { ref });
|
|
64
51
|
});
|
|
52
|
+
return (0, common_1.withErrorHandlingAndValidation)(fn, common_1.Validators.createUserRequestSchema);
|
|
65
53
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { GrpcErrorMessage } from "@fonoster/common";
|
|
2
2
|
import { Prisma } from "../db";
|
|
3
3
|
declare function deleteUser(prisma: Prisma): (call: {
|
|
4
|
-
request:
|
|
5
|
-
}, callback: (error
|
|
4
|
+
request: unknown;
|
|
5
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
6
6
|
export { deleteUser };
|
package/dist/users/deleteUser.js
CHANGED
|
@@ -34,25 +34,19 @@ const utils_1 = require("../utils");
|
|
|
34
34
|
const getTokenFromCall_1 = require("../utils/getTokenFromCall");
|
|
35
35
|
const logger = (0, logger_1.getLogger)({ service: "identity", filePath: __filename });
|
|
36
36
|
function deleteUser(prisma) {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
ref
|
|
51
|
-
};
|
|
52
|
-
callback(null, response);
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
(0, common_1.handleError)(error, callback);
|
|
56
|
-
}
|
|
37
|
+
const fn = (call, callback) => __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
const { request } = call;
|
|
39
|
+
const { ref } = request;
|
|
40
|
+
const token = (0, getTokenFromCall_1.getTokenFromCall)(call);
|
|
41
|
+
const accessKeyId = (0, utils_1.getAccessKeyIdFromToken)(token);
|
|
42
|
+
logger.verbose("deleting user from the system", { ref, accessKeyId });
|
|
43
|
+
yield prisma.user.delete({
|
|
44
|
+
where: {
|
|
45
|
+
ref,
|
|
46
|
+
accessKeyId
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
callback(null, { ref });
|
|
57
50
|
});
|
|
51
|
+
return (0, common_1.withErrorHandlingAndValidation)(fn, common_1.Validators.baseApiObjectSchema);
|
|
58
52
|
}
|
package/dist/users/getUser.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { GrpcErrorMessage } from "@fonoster/common";
|
|
2
|
-
import { BaseApiObject, User } from "@fonoster/types";
|
|
3
2
|
import { Prisma } from "../db";
|
|
4
3
|
declare function getUser(prisma: Prisma): (call: {
|
|
5
|
-
request:
|
|
6
|
-
}, callback: (error
|
|
4
|
+
request: unknown;
|
|
5
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
7
6
|
export { getUser };
|
package/dist/users/getUser.js
CHANGED
|
@@ -35,32 +35,29 @@ const utils_1 = require("../utils");
|
|
|
35
35
|
const getTokenFromCall_1 = require("../utils/getTokenFromCall");
|
|
36
36
|
const logger = (0, logger_1.getLogger)({ service: "identity", filePath: __filename });
|
|
37
37
|
function getUser(prisma) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
38
|
+
const fn = (call, callback) => __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
const { request } = call;
|
|
40
|
+
const { ref } = request;
|
|
41
|
+
const token = (0, getTokenFromCall_1.getTokenFromCall)(call);
|
|
42
|
+
const accessKeyId = (0, utils_1.getAccessKeyIdFromToken)(token);
|
|
43
|
+
logger.verbose("getting user with ref and accessKeyId", {
|
|
44
|
+
ref,
|
|
45
|
+
accessKeyId
|
|
46
|
+
});
|
|
47
|
+
const user = yield prisma.user.findUnique({
|
|
48
|
+
where: {
|
|
44
49
|
ref,
|
|
45
50
|
accessKeyId
|
|
46
|
-
});
|
|
47
|
-
const user = yield prisma.user.findUnique({
|
|
48
|
-
where: {
|
|
49
|
-
ref,
|
|
50
|
-
accessKeyId
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
if (!user) {
|
|
54
|
-
callback({
|
|
55
|
-
code: grpc_js_1.status.NOT_FOUND,
|
|
56
|
-
message: `User not found: ${ref}`
|
|
57
|
-
});
|
|
58
|
-
return;
|
|
59
51
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
52
|
+
});
|
|
53
|
+
if (!user) {
|
|
54
|
+
callback({
|
|
55
|
+
code: grpc_js_1.status.NOT_FOUND,
|
|
56
|
+
message: `User not found: ${ref}`
|
|
57
|
+
});
|
|
58
|
+
return;
|
|
64
59
|
}
|
|
60
|
+
callback(null, (0, common_1.datesMapper)(user));
|
|
65
61
|
});
|
|
62
|
+
return (0, common_1.withErrorHandlingAndValidation)(fn, common_1.Validators.baseApiObjectSchema);
|
|
66
63
|
}
|
package/dist/users/index.d.ts
CHANGED
package/dist/users/index.js
CHANGED
|
@@ -33,7 +33,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
33
33
|
* limitations under the License.
|
|
34
34
|
*/
|
|
35
35
|
__exportStar(require("./createUser"), exports);
|
|
36
|
-
__exportStar(require("./getUser"), exports);
|
|
37
36
|
__exportStar(require("./deleteUser"), exports);
|
|
37
|
+
__exportStar(require("./getUser"), exports);
|
|
38
38
|
__exportStar(require("./updateUser"), exports);
|
|
39
39
|
__exportStar(require("./upsertDefaultUser"), exports);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { GrpcErrorMessage } from "@fonoster/common";
|
|
2
|
-
import { BaseApiObject, UpdateUserRequest } from "@fonoster/types";
|
|
3
2
|
import { Prisma } from "../db";
|
|
4
3
|
declare function updateUser(prisma: Prisma): (call: {
|
|
5
|
-
request:
|
|
6
|
-
}, callback: (error
|
|
4
|
+
request: unknown;
|
|
5
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
7
6
|
export { updateUser };
|
package/dist/users/updateUser.js
CHANGED
|
@@ -30,43 +30,32 @@ exports.updateUser = updateUser;
|
|
|
30
30
|
*/
|
|
31
31
|
const common_1 = require("@fonoster/common");
|
|
32
32
|
const logger_1 = require("@fonoster/logger");
|
|
33
|
-
const zod_1 = require("zod");
|
|
34
33
|
const utils_1 = require("../utils");
|
|
35
34
|
const getTokenFromCall_1 = require("../utils/getTokenFromCall");
|
|
36
35
|
const logger = (0, logger_1.getLogger)({ service: "identity", filePath: __filename });
|
|
37
|
-
const UpdateUserRequestSchema = zod_1.z.object({
|
|
38
|
-
ref: zod_1.z.string(),
|
|
39
|
-
name: zod_1.z.string().min(3).max(50).or(zod_1.z.string().optional().nullable()),
|
|
40
|
-
password: zod_1.z.string().min(8).max(50).or(zod_1.z.string().optional().nullable()),
|
|
41
|
-
avatar: zod_1.z.string().url().or(zod_1.z.string().optional().nullable())
|
|
42
|
-
});
|
|
43
36
|
function updateUser(prisma) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
callback(null, response);
|
|
67
|
-
}
|
|
68
|
-
catch (error) {
|
|
69
|
-
(0, common_1.handleError)(error, callback);
|
|
70
|
-
}
|
|
37
|
+
const fn = (call, callback) => __awaiter(this, void 0, void 0, function* () {
|
|
38
|
+
const { request } = call;
|
|
39
|
+
const { ref, name, avatar, password } = request;
|
|
40
|
+
const token = (0, getTokenFromCall_1.getTokenFromCall)(call);
|
|
41
|
+
const accessKeyId = (0, utils_1.getAccessKeyIdFromToken)(token);
|
|
42
|
+
logger.verbose("call to updateUser", { ref, password });
|
|
43
|
+
yield prisma.user.update({
|
|
44
|
+
where: {
|
|
45
|
+
ref,
|
|
46
|
+
accessKeyId
|
|
47
|
+
},
|
|
48
|
+
data: {
|
|
49
|
+
name,
|
|
50
|
+
avatar,
|
|
51
|
+
password: password || undefined,
|
|
52
|
+
updatedAt: new Date()
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
const response = {
|
|
56
|
+
ref
|
|
57
|
+
};
|
|
58
|
+
callback(null, response);
|
|
71
59
|
});
|
|
60
|
+
return (0, common_1.withErrorHandlingAndValidation)(fn, common_1.Validators.updateUserRequestSchema);
|
|
72
61
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
declare const
|
|
2
|
+
declare const createUserRequestSchema: z.ZodObject<{
|
|
3
3
|
name: z.ZodString;
|
|
4
4
|
email: z.ZodString;
|
|
5
5
|
password: z.ZodUnion<[z.ZodString, z.ZodNullable<z.ZodOptional<z.ZodString>>]>;
|
|
@@ -12,6 +12,6 @@ declare const CreateUserRequestSchema: z.ZodObject<{
|
|
|
12
12
|
email?: string;
|
|
13
13
|
password?: string;
|
|
14
14
|
}>;
|
|
15
|
-
type CreateUserRequest = z.infer<typeof
|
|
15
|
+
type CreateUserRequest = z.infer<typeof createUserRequestSchema>;
|
|
16
16
|
declare function upsertDefaultUser(request: CreateUserRequest): Promise<void>;
|
|
17
17
|
export { upsertDefaultUser };
|
|
@@ -32,7 +32,7 @@ const logger_1 = require("@fonoster/logger");
|
|
|
32
32
|
const zod_1 = require("zod");
|
|
33
33
|
const db_1 = require("../db");
|
|
34
34
|
const logger = (0, logger_1.getLogger)({ service: "identity", filePath: __filename });
|
|
35
|
-
const
|
|
35
|
+
const createUserRequestSchema = zod_1.z.object({
|
|
36
36
|
name: zod_1.z.string().min(3).max(50),
|
|
37
37
|
email: zod_1.z.string().email(),
|
|
38
38
|
password: zod_1.z.string().min(8).max(50).or(zod_1.z.string().optional().nullable())
|
|
@@ -44,7 +44,7 @@ const WORKSPACE_ACCESS_KEY_ID = "WO00000000000000000000000000000000";
|
|
|
44
44
|
function upsertDefaultUser(request) {
|
|
45
45
|
return __awaiter(this, void 0, void 0, function* () {
|
|
46
46
|
try {
|
|
47
|
-
const validatedRequest =
|
|
47
|
+
const validatedRequest = createUserRequestSchema.parse(request);
|
|
48
48
|
const { name, email, password } = validatedRequest;
|
|
49
49
|
logger.verbose("call to upsertDefaultUser", {
|
|
50
50
|
email,
|