@fonoster/identity 0.8.24 → 0.8.26
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/apikeys/{createApiKey.d.ts → createCreateApiKey.d.ts} +2 -2
- package/dist/apikeys/{createApiKey.js → createCreateApiKey.js} +5 -6
- package/dist/apikeys/createDeleteApiKey.d.ts +6 -0
- package/dist/apikeys/{deleteApiKey.js → createDeleteApiKey.js} +4 -4
- package/dist/apikeys/createListApiKeys.d.ts +6 -0
- package/dist/apikeys/{listApiKeys.js → createListApiKeys.js} +5 -6
- package/dist/apikeys/createRegenerateApiKey.d.ts +6 -0
- package/dist/apikeys/{regenerateApiKey.js → createRegenerateApiKey.js} +4 -4
- package/dist/apikeys/index.d.ts +4 -4
- package/dist/apikeys/index.js +4 -4
- package/dist/exchanges/{exchangeRefreshToken.d.ts → createExchangeApiKey.d.ts} +2 -2
- package/dist/exchanges/{exchangeApiKey.js → createExchangeApiKey.js} +6 -6
- package/dist/exchanges/{exchangeOauth2Code.d.ts → createExchangeCredentials.d.ts} +2 -2
- package/dist/exchanges/{exchangeCredentials.js → createExchangeCredentials.js} +6 -6
- package/dist/exchanges/{exchangeCredentials.d.ts → createExchangeOauth2Code.d.ts} +2 -2
- package/dist/exchanges/{exchangeOauth2Code.js → createExchangeOauth2Code.js} +6 -6
- package/dist/exchanges/{exchangeApiKey.d.ts → createExchangeRefreshToken.d.ts} +2 -2
- package/dist/exchanges/{exchangeRefreshToken.js → createExchangeRefreshToken.js} +4 -4
- package/dist/exchanges/exchangeTokens.js +5 -5
- package/dist/exchanges/index.d.ts +4 -5
- package/dist/exchanges/index.js +4 -5
- package/dist/exchanges/payloads/apikeys/createGetAccessTokenPayload.d.ts +5 -0
- package/dist/exchanges/payloads/apikeys/createGetAccessTokenPayload.js +46 -0
- package/dist/exchanges/payloads/apikeys/createGetRefreshTokenPayload.d.ts +5 -0
- package/dist/exchanges/payloads/apikeys/{getRefreshTokenPayload.js → createGetRefreshTokenPayload.js} +18 -16
- package/dist/exchanges/payloads/apikeys/index.d.ts +2 -2
- package/dist/exchanges/payloads/apikeys/index.js +2 -2
- package/dist/exchanges/payloads/buildRefreshTokenPayload.d.ts +2 -1
- package/dist/exchanges/payloads/buildRefreshTokenPayload.js +2 -2
- package/dist/exchanges/payloads/users/createGetAccessTokenPayload.d.ts +5 -0
- package/dist/exchanges/payloads/users/createGetAccessTokenPayload.js +75 -0
- package/dist/exchanges/payloads/users/createGetIdTokenPayload.d.ts +5 -0
- package/dist/exchanges/payloads/users/createGetIdTokenPayload.js +40 -0
- package/dist/exchanges/payloads/users/createGetRefreshTokenPayload.d.ts +5 -0
- package/dist/exchanges/payloads/users/{getRefreshTokenPayload.js → createGetRefreshTokenPayload.js} +22 -20
- package/dist/exchanges/payloads/users/index.d.ts +3 -3
- package/dist/exchanges/payloads/users/index.js +3 -3
- package/dist/exchanges/types.d.ts +1 -36
- package/dist/getPublicKey.d.ts +2 -2
- package/dist/getPublicKey.js +8 -6
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -2
- package/dist/service.js +22 -22
- package/dist/{apikeys/listApiKeys.d.ts → users/createCreateUser.d.ts} +2 -2
- package/dist/users/{createUser.js → createCreateUser.js} +4 -4
- package/dist/users/{createUser.d.ts → createDeleteUser.d.ts} +2 -2
- package/dist/users/{deleteUser.js → createDeleteUser.js} +5 -6
- package/dist/{apikeys/deleteApiKey.d.ts → users/createGetUser.d.ts} +2 -2
- package/dist/users/{getUser.js → createGetUser.js} +5 -6
- package/dist/{apikeys/regenerateApiKey.d.ts → users/createUpdateUser.d.ts} +2 -2
- package/dist/users/{updateUser.js → createUpdateUser.js} +5 -6
- package/dist/users/index.d.ts +4 -4
- package/dist/users/index.js +4 -4
- package/dist/utils/createGenerateCallAccessToken.d.ts +6 -0
- package/dist/utils/{createCallAccessToken.js → createGenerateCallAccessToken.js} +29 -28
- package/dist/utils/{createWorkspaceInviteToken.d.ts → createGenerateWorkspaceInviteToken.d.ts} +2 -2
- package/dist/utils/{createWorkspaceInviteToken.js → createGenerateWorkspaceInviteToken.js} +21 -19
- package/dist/utils/createGetAccessKeyIdFromEmail.d.ts +3 -0
- package/dist/utils/{getAccessKeyIdFromEmail.js → createGetAccessKeyIdFromEmail.js} +8 -6
- package/dist/utils/{getApiKeyByAccessKeyId.d.ts → createGetApiKeyByAccessKeyId.d.ts} +5 -5
- package/dist/utils/{getApiKeyByAccessKeyId.js → createGetApiKeyByAccessKeyId.js} +13 -11
- package/dist/utils/{getUserByEmail.d.ts → createGetUserByEmail.d.ts} +2 -2
- package/dist/utils/{getUserByEmail.js → createGetUserByEmail.js} +10 -8
- package/dist/utils/createUpdateMembershipStatus.d.ts +3 -0
- package/dist/utils/{updateMembershipStatus.js → createUpdateMembershipStatus.js} +18 -16
- package/dist/utils/getAccessKeyIdFromToken.js +3 -4
- package/dist/utils/getUserRefFromToken.js +3 -4
- package/dist/utils/hasAccessToResource.js +3 -4
- package/dist/utils/index.d.ts +2 -8
- package/dist/utils/index.js +2 -8
- package/dist/verification/createVerifyCode.js +2 -2
- package/dist/workspaces/createCreateWorkspace.d.ts +6 -0
- package/dist/workspaces/{createWorkspace.js → createCreateWorkspace.js} +5 -6
- package/dist/workspaces/createDeleteWorkspace.d.ts +6 -0
- package/dist/workspaces/{deleteWorkspace.js → createDeleteWorkspace.js} +5 -6
- package/dist/workspaces/createGetWorkspace.d.ts +6 -0
- package/dist/workspaces/{getWorkspace.js → createGetWorkspace.js} +5 -6
- package/dist/workspaces/{inviteUserToWorkspace.d.ts → createInviteUserToWorkspace.d.ts} +2 -2
- package/dist/workspaces/{inviteUserToWorkspace.js → createInviteUserToWorkspace.js} +26 -25
- package/dist/workspaces/createIsAdminMember.d.ts +3 -0
- package/dist/workspaces/{isAdminMember.js → createIsAdminMember.js} +21 -19
- package/dist/workspaces/createIsWorkspaceMember.d.ts +3 -0
- package/dist/workspaces/createIsWorkspaceMember.js +33 -0
- package/dist/workspaces/createListWorkspaces.d.ts +6 -0
- package/dist/workspaces/{listWorkspaces.js → createListWorkspaces.js} +6 -8
- package/dist/workspaces/createRemoveUserFromWorkspace.d.ts +6 -0
- package/dist/workspaces/{removeUserFromWorkspace.js → createRemoveUserFromWorkspace.js} +8 -10
- package/dist/workspaces/{resendWorkspaceMembershipInvitation.d.ts → createResendWorkspaceMembershipInvitation.d.ts} +2 -2
- package/dist/workspaces/{resendWorkspaceMembershipInvitation.js → createResendWorkspaceMembershipInvitation.js} +10 -11
- package/dist/workspaces/createUpdateWorkspace.d.ts +6 -0
- package/dist/workspaces/{updateWorkspace.js → createUpdateWorkspace.js} +7 -8
- package/dist/workspaces/index.d.ts +8 -8
- package/dist/workspaces/index.js +8 -8
- package/package.json +5 -5
- package/dist/JsonWebErrorEnum.d.ts +0 -5
- package/dist/JsonWebErrorEnum.js +0 -26
- package/dist/createAuthInterceptor.d.ts +0 -15
- package/dist/createAuthInterceptor.js +0 -74
- package/dist/errors.d.ts +0 -4
- package/dist/errors.js +0 -35
- package/dist/exchanges/TokenUseEnum.d.ts +0 -6
- package/dist/exchanges/TokenUseEnum.js +0 -27
- package/dist/exchanges/payloads/apikeys/getAccessTokenPayload.d.ts +0 -4
- package/dist/exchanges/payloads/apikeys/getAccessTokenPayload.js +0 -44
- package/dist/exchanges/payloads/apikeys/getRefreshTokenPayload.d.ts +0 -4
- package/dist/exchanges/payloads/users/getAccessTokenPayload.d.ts +0 -4
- package/dist/exchanges/payloads/users/getAccessTokenPayload.js +0 -73
- package/dist/exchanges/payloads/users/getIdTokenPayload.d.ts +0 -4
- package/dist/exchanges/payloads/users/getIdTokenPayload.js +0 -38
- package/dist/exchanges/payloads/users/getRefreshTokenPayload.d.ts +0 -4
- package/dist/getPublicKeyClient.d.ts +0 -5
- package/dist/getPublicKeyClient.js +0 -71
- package/dist/roles.d.ts +0 -5
- package/dist/roles.js +0 -129
- package/dist/users/deleteUser.d.ts +0 -6
- package/dist/users/getUser.d.ts +0 -6
- package/dist/users/updateUser.d.ts +0 -6
- package/dist/utils/createCallAccessToken.d.ts +0 -6
- package/dist/utils/decodeToken.d.ts +0 -4
- package/dist/utils/decodeToken.js +0 -25
- package/dist/utils/getAccessKeyIdFromCall.d.ts +0 -3
- package/dist/utils/getAccessKeyIdFromCall.js +0 -8
- package/dist/utils/getAccessKeyIdFromEmail.d.ts +0 -3
- package/dist/utils/getTokenFromCall.d.ts +0 -3
- package/dist/utils/getTokenFromCall.js +0 -8
- package/dist/utils/hasAccess.d.ts +0 -3
- package/dist/utils/hasAccess.js +0 -9
- package/dist/utils/isValidToken.d.ts +0 -2
- package/dist/utils/isValidToken.js +0 -51
- package/dist/utils/tokenHasAccessKeyId.d.ts +0 -2
- package/dist/utils/tokenHasAccessKeyId.js +0 -28
- package/dist/utils/updateMembershipStatus.d.ts +0 -3
- package/dist/workspaces/createWorkspace.d.ts +0 -6
- package/dist/workspaces/deleteWorkspace.d.ts +0 -6
- package/dist/workspaces/getWorkspace.d.ts +0 -6
- package/dist/workspaces/isAdminMember.d.ts +0 -3
- package/dist/workspaces/isWorkspaceMember.d.ts +0 -3
- package/dist/workspaces/isWorkspaceMember.js +0 -31
- package/dist/workspaces/listWorkspaces.d.ts +0 -6
- package/dist/workspaces/removeUserFromWorkspace.d.ts +0 -6
- package/dist/workspaces/updateWorkspace.d.ts +0 -6
|
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.createInviteUserToWorkspace = createInviteUserToWorkspace;
|
|
13
13
|
/*
|
|
14
14
|
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
15
15
|
* http://github.com/fonoster/fonoster
|
|
@@ -33,12 +33,11 @@ const logger_1 = require("@fonoster/logger");
|
|
|
33
33
|
const types_1 = require("@fonoster/types");
|
|
34
34
|
const grpc_js_1 = require("@grpc/grpc-js");
|
|
35
35
|
const nanoid_1 = require("nanoid");
|
|
36
|
-
const
|
|
37
|
-
const
|
|
36
|
+
const createIsAdminMember_1 = require("./createIsAdminMember");
|
|
37
|
+
const createIsWorkspaceMember_1 = require("./createIsWorkspaceMember");
|
|
38
38
|
const envs_1 = require("../envs");
|
|
39
39
|
const utils_1 = require("../utils");
|
|
40
|
-
const
|
|
41
|
-
const getTokenFromCall_1 = require("../utils/getTokenFromCall");
|
|
40
|
+
const createGenerateWorkspaceInviteToken_1 = require("../utils/createGenerateWorkspaceInviteToken");
|
|
42
41
|
const getUserRefFromToken_1 = require("../utils/getUserRefFromToken");
|
|
43
42
|
const logger = (0, logger_1.getLogger)({ service: "identity", filePath: __filename });
|
|
44
43
|
const userIsMemberError = {
|
|
@@ -56,24 +55,26 @@ const findUserByEmail = (prisma, email) => __awaiter(void 0, void 0, void 0, fun
|
|
|
56
55
|
}
|
|
57
56
|
});
|
|
58
57
|
});
|
|
59
|
-
const
|
|
60
|
-
return
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
58
|
+
const createCreateUser = (prisma) => {
|
|
59
|
+
return function createUser(request) {
|
|
60
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
const { name, email, password } = request;
|
|
62
|
+
return yield prisma.user.create({
|
|
63
|
+
data: {
|
|
64
|
+
name,
|
|
65
|
+
email,
|
|
66
|
+
accessKeyId: (0, utils_1.generateAccessKeyId)(utils_1.AccessKeyIdType.USER),
|
|
67
|
+
password
|
|
68
|
+
}
|
|
69
|
+
});
|
|
69
70
|
});
|
|
70
|
-
}
|
|
71
|
+
};
|
|
71
72
|
};
|
|
72
|
-
function
|
|
73
|
-
const
|
|
74
|
-
const token = (0,
|
|
73
|
+
function createInviteUserToWorkspace(prisma, identityConfig, sendInvite) {
|
|
74
|
+
const inviteUserToWorkspace = (call, callback) => __awaiter(this, void 0, void 0, function* () {
|
|
75
|
+
const token = (0, common_1.getTokenFromCall)(call);
|
|
75
76
|
const adminRef = (0, getUserRefFromToken_1.getUserRefFromToken)(token);
|
|
76
|
-
const accessKeyId = (0,
|
|
77
|
+
const accessKeyId = (0, common_1.getAccessKeyIdFromCall)(call);
|
|
77
78
|
const workspace = yield prisma.workspace.findUnique({
|
|
78
79
|
where: {
|
|
79
80
|
accessKeyId
|
|
@@ -87,12 +88,12 @@ function inviteUserToWorkspace(prisma, identityConfig, sendInvite) {
|
|
|
87
88
|
email,
|
|
88
89
|
role
|
|
89
90
|
});
|
|
90
|
-
const isAdmin = yield (0,
|
|
91
|
+
const isAdmin = yield (0, createIsAdminMember_1.createIsAdminMember)(prisma)(workspaceRef, adminRef);
|
|
91
92
|
if (!isAdmin) {
|
|
92
93
|
return callback(inviterIsNotAdminError);
|
|
93
94
|
}
|
|
94
95
|
let user = yield findUserByEmail(prisma, email);
|
|
95
|
-
const isMember = yield (0,
|
|
96
|
+
const isMember = yield (0, createIsWorkspaceMember_1.createIsWorkspaceMember)(prisma)(workspaceRef, user === null || user === void 0 ? void 0 : user.ref);
|
|
96
97
|
if (isMember) {
|
|
97
98
|
return callback(userIsMemberError);
|
|
98
99
|
}
|
|
@@ -100,7 +101,7 @@ function inviteUserToWorkspace(prisma, identityConfig, sendInvite) {
|
|
|
100
101
|
let isExistingUser = true;
|
|
101
102
|
if (!user) {
|
|
102
103
|
isExistingUser = false;
|
|
103
|
-
user = yield
|
|
104
|
+
user = yield createCreateUser(prisma)({
|
|
104
105
|
name,
|
|
105
106
|
email,
|
|
106
107
|
password: oneTimePassword,
|
|
@@ -118,7 +119,7 @@ function inviteUserToWorkspace(prisma, identityConfig, sendInvite) {
|
|
|
118
119
|
workspace: true
|
|
119
120
|
}
|
|
120
121
|
});
|
|
121
|
-
const inviteeToken = yield (0,
|
|
122
|
+
const inviteeToken = yield (0, createGenerateWorkspaceInviteToken_1.createGenerateWorkspaceInviteToken)(identityConfig)({
|
|
122
123
|
userRef: user.ref,
|
|
123
124
|
memberRef: newMember.ref,
|
|
124
125
|
accessKeyId: user.accessKeyId,
|
|
@@ -136,5 +137,5 @@ function inviteUserToWorkspace(prisma, identityConfig, sendInvite) {
|
|
|
136
137
|
workspaceRef
|
|
137
138
|
});
|
|
138
139
|
});
|
|
139
|
-
return (0, common_1.withErrorHandlingAndValidation)(
|
|
140
|
+
return (0, common_1.withErrorHandlingAndValidation)(inviteUserToWorkspace, common_1.Validators.inviteUserToWorkspaceRequestSchema);
|
|
140
141
|
}
|
|
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.createIsAdminMember = createIsAdminMember;
|
|
13
13
|
/*
|
|
14
14
|
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
15
15
|
* http://github.com/fonoster/fonoster
|
|
@@ -29,24 +29,26 @@ exports.isAdminMember = isAdminMember;
|
|
|
29
29
|
* limitations under the License.
|
|
30
30
|
*/
|
|
31
31
|
const types_1 = require("@fonoster/types");
|
|
32
|
-
function
|
|
33
|
-
return (workspaceRef, adminRef)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const workspace = yield prisma.workspace.findUnique({
|
|
39
|
-
where: {
|
|
40
|
-
ref: workspaceRef
|
|
41
|
-
},
|
|
42
|
-
include: {
|
|
43
|
-
members: true
|
|
32
|
+
function createIsAdminMember(prisma) {
|
|
33
|
+
return function isAdminMember(workspaceRef, adminRef) {
|
|
34
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
35
|
+
var _a;
|
|
36
|
+
if (!workspaceRef || !adminRef) {
|
|
37
|
+
return false;
|
|
44
38
|
}
|
|
39
|
+
const workspace = yield prisma.workspace.findUnique({
|
|
40
|
+
where: {
|
|
41
|
+
ref: workspaceRef
|
|
42
|
+
},
|
|
43
|
+
include: {
|
|
44
|
+
members: true
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
if ((workspace === null || workspace === void 0 ? void 0 : workspace.ownerRef) === adminRef) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
const role = (_a = workspace === null || workspace === void 0 ? void 0 : workspace.members.find((member) => member.ref === adminRef)) === null || _a === void 0 ? void 0 : _a.role;
|
|
51
|
+
return role === types_1.WorkspaceRoleEnum.ADMIN || role === types_1.WorkspaceRoleEnum.OWNER;
|
|
45
52
|
});
|
|
46
|
-
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
const role = (_a = workspace === null || workspace === void 0 ? void 0 : workspace.members.find((member) => member.ref === adminRef)) === null || _a === void 0 ? void 0 : _a.role;
|
|
50
|
-
return role === types_1.WorkspaceRoleEnum.ADMIN || role === types_1.WorkspaceRoleEnum.OWNER;
|
|
51
|
-
});
|
|
53
|
+
};
|
|
52
54
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.createIsWorkspaceMember = createIsWorkspaceMember;
|
|
13
|
+
function createIsWorkspaceMember(prisma) {
|
|
14
|
+
return function isWorkspaceMember(workspaceRef, userRef) {
|
|
15
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
16
|
+
const workspace = yield prisma.workspace.findUnique({
|
|
17
|
+
where: {
|
|
18
|
+
ref: workspaceRef
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
const isMember = yield prisma.workspaceMember.findFirst({
|
|
22
|
+
where: {
|
|
23
|
+
// Force userId to be an empty string to ensure that the query is not
|
|
24
|
+
// filter by workspaceRef only
|
|
25
|
+
userRef: userRef || "",
|
|
26
|
+
workspaceRef
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
const isOwner = (workspace === null || workspace === void 0 ? void 0 : workspace.ownerRef) === userRef;
|
|
30
|
+
return !!(isMember || isOwner);
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { GrpcErrorMessage } from "@fonoster/common";
|
|
2
|
+
import { Prisma } from "../db";
|
|
3
|
+
declare function createListWorkspaces(prisma: Prisma): (call: {
|
|
4
|
+
request: unknown;
|
|
5
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
6
|
+
export { createListWorkspaces };
|
|
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.createListWorkspaces = createListWorkspaces;
|
|
13
13
|
/*
|
|
14
14
|
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
15
15
|
* http://github.com/fonoster/fonoster
|
|
@@ -30,16 +30,14 @@ exports.listWorkspaces = listWorkspaces;
|
|
|
30
30
|
*/
|
|
31
31
|
const common_1 = require("@fonoster/common");
|
|
32
32
|
const logger_1 = require("@fonoster/logger");
|
|
33
|
-
const utils_1 = require("../utils");
|
|
34
|
-
const getTokenFromCall_1 = require("../utils/getTokenFromCall");
|
|
35
33
|
const getUserRefFromToken_1 = require("../utils/getUserRefFromToken");
|
|
36
34
|
const logger = (0, logger_1.getLogger)({ service: "identity", filePath: __filename });
|
|
37
|
-
function
|
|
38
|
-
const
|
|
35
|
+
function createListWorkspaces(prisma) {
|
|
36
|
+
const listWorkspaces = (call, callback) => __awaiter(this, void 0, void 0, function* () {
|
|
39
37
|
var _a, _b;
|
|
40
|
-
const token = (0,
|
|
38
|
+
const token = (0, common_1.getTokenFromCall)(call);
|
|
41
39
|
const userRef = (0, getUserRefFromToken_1.getUserRefFromToken)(token);
|
|
42
|
-
const access = (0,
|
|
40
|
+
const access = (0, common_1.decodeToken)(token);
|
|
43
41
|
const workspacesAccessKeyIds = (_a = access.access) === null || _a === void 0 ? void 0 : _a.map((a) => a.accessKeyId);
|
|
44
42
|
logger.verbose("list workspaces for user or apikey", {
|
|
45
43
|
userRef,
|
|
@@ -71,5 +69,5 @@ function listWorkspaces(prisma) {
|
|
|
71
69
|
nextPageToken: (_b = items[items.length - 1]) === null || _b === void 0 ? void 0 : _b.ref
|
|
72
70
|
});
|
|
73
71
|
});
|
|
74
|
-
return (0, common_1.withErrorHandlingAndValidation)(
|
|
72
|
+
return (0, common_1.withErrorHandlingAndValidation)(listWorkspaces, common_1.Validators.listRequestSchema);
|
|
75
73
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { GrpcErrorMessage } from "@fonoster/common";
|
|
2
|
+
import { Prisma } from "../db";
|
|
3
|
+
declare function createRemoveUserFromWorkspace(prisma: Prisma): (call: {
|
|
4
|
+
request: unknown;
|
|
5
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
6
|
+
export { createRemoveUserFromWorkspace };
|
|
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.createRemoveUserFromWorkspace = createRemoveUserFromWorkspace;
|
|
13
13
|
/*
|
|
14
14
|
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
15
15
|
* http://github.com/fonoster/fonoster
|
|
@@ -31,17 +31,15 @@ exports.removeUserFromWorkspace = removeUserFromWorkspace;
|
|
|
31
31
|
const common_1 = require("@fonoster/common");
|
|
32
32
|
const logger_1 = require("@fonoster/logger");
|
|
33
33
|
const grpc_js_1 = require("@grpc/grpc-js");
|
|
34
|
-
const
|
|
35
|
-
const utils_1 = require("../utils");
|
|
36
|
-
const getTokenFromCall_1 = require("../utils/getTokenFromCall");
|
|
34
|
+
const createIsAdminMember_1 = require("./createIsAdminMember");
|
|
37
35
|
const getUserRefFromToken_1 = require("../utils/getUserRefFromToken");
|
|
38
36
|
const logger = (0, logger_1.getLogger)({ service: "identity", filePath: __filename });
|
|
39
|
-
function
|
|
40
|
-
const
|
|
37
|
+
function createRemoveUserFromWorkspace(prisma) {
|
|
38
|
+
const removeUserFromWorkspace = (call, callback) => __awaiter(this, void 0, void 0, function* () {
|
|
41
39
|
const { request } = call;
|
|
42
40
|
const { userRef } = request;
|
|
43
|
-
const token = (0,
|
|
44
|
-
const accessKeyId = (0,
|
|
41
|
+
const token = (0, common_1.getTokenFromCall)(call);
|
|
42
|
+
const accessKeyId = (0, common_1.getAccessKeyIdFromCall)(call);
|
|
45
43
|
const adminRef = (0, getUserRefFromToken_1.getUserRefFromToken)(token);
|
|
46
44
|
const workspace = yield prisma.workspace.findUnique({
|
|
47
45
|
where: {
|
|
@@ -50,7 +48,7 @@ function removeUserFromWorkspace(prisma) {
|
|
|
50
48
|
});
|
|
51
49
|
const { ref: workspaceRef } = workspace;
|
|
52
50
|
logger.verbose("removing user from workspace", { workspaceRef, userRef });
|
|
53
|
-
const isAdmin = yield (0,
|
|
51
|
+
const isAdmin = yield (0, createIsAdminMember_1.createIsAdminMember)(prisma)(workspaceRef, adminRef);
|
|
54
52
|
if (!isAdmin && adminRef !== userRef) {
|
|
55
53
|
return callback({
|
|
56
54
|
code: grpc_js_1.status.PERMISSION_DENIED,
|
|
@@ -76,5 +74,5 @@ function removeUserFromWorkspace(prisma) {
|
|
|
76
74
|
});
|
|
77
75
|
callback(null, response);
|
|
78
76
|
});
|
|
79
|
-
return (0, common_1.withErrorHandlingAndValidation)(
|
|
77
|
+
return (0, common_1.withErrorHandlingAndValidation)(removeUserFromWorkspace, common_1.Validators.removeUserFromWorkspaceRequestSchema);
|
|
80
78
|
}
|
|
@@ -2,7 +2,7 @@ import { GrpcErrorMessage } from "@fonoster/common";
|
|
|
2
2
|
import { Prisma } from "../db";
|
|
3
3
|
import { IdentityConfig } from "../exchanges/types";
|
|
4
4
|
import { SendInvite } from "../invites";
|
|
5
|
-
declare function
|
|
5
|
+
declare function createResendWorkspaceMembershipInvitation(prisma: Prisma, identityConfig: IdentityConfig, sendInvite: SendInvite): (call: {
|
|
6
6
|
request: unknown;
|
|
7
7
|
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
8
|
-
export {
|
|
8
|
+
export { createResendWorkspaceMembershipInvitation };
|
|
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.createResendWorkspaceMembershipInvitation = createResendWorkspaceMembershipInvitation;
|
|
13
13
|
/*
|
|
14
14
|
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
15
15
|
* http://github.com/fonoster/fonoster
|
|
@@ -31,18 +31,17 @@ exports.resendWorkspaceMembershipInvitation = resendWorkspaceMembershipInvitatio
|
|
|
31
31
|
const common_1 = require("@fonoster/common");
|
|
32
32
|
const logger_1 = require("@fonoster/logger");
|
|
33
33
|
const grpc_js_1 = require("@grpc/grpc-js");
|
|
34
|
-
const
|
|
34
|
+
const createIsAdminMember_1 = require("./createIsAdminMember");
|
|
35
35
|
const envs_1 = require("../envs");
|
|
36
36
|
const utils_1 = require("../utils");
|
|
37
|
-
const
|
|
38
|
-
const getTokenFromCall_1 = require("../utils/getTokenFromCall");
|
|
37
|
+
const createGenerateWorkspaceInviteToken_1 = require("../utils/createGenerateWorkspaceInviteToken");
|
|
39
38
|
const getUserRefFromToken_1 = require("../utils/getUserRefFromToken");
|
|
40
39
|
const logger = (0, logger_1.getLogger)({ service: "identity", filePath: __filename });
|
|
41
|
-
function
|
|
42
|
-
const
|
|
43
|
-
const token = (0,
|
|
40
|
+
function createResendWorkspaceMembershipInvitation(prisma, identityConfig, sendInvite) {
|
|
41
|
+
const resendWorkspaceMembershipInvitation = (call, callback) => __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
const token = (0, common_1.getTokenFromCall)(call);
|
|
44
43
|
const adminRef = (0, getUserRefFromToken_1.getUserRefFromToken)(token);
|
|
45
|
-
const accessKeyId = (0,
|
|
44
|
+
const accessKeyId = (0, common_1.getAccessKeyIdFromCall)(call);
|
|
46
45
|
const workspace = yield prisma.workspace.findUnique({
|
|
47
46
|
where: {
|
|
48
47
|
accessKeyId
|
|
@@ -56,7 +55,7 @@ function resendWorkspaceMembershipInvitation(prisma, identityConfig, sendInvite)
|
|
|
56
55
|
inviteeRef,
|
|
57
56
|
adminRef
|
|
58
57
|
});
|
|
59
|
-
const isAdmin = yield (0,
|
|
58
|
+
const isAdmin = yield (0, createIsAdminMember_1.createIsAdminMember)(prisma)(workspace.ref, adminRef);
|
|
60
59
|
if (!isAdmin) {
|
|
61
60
|
return callback({
|
|
62
61
|
code: grpc_js_1.status.PERMISSION_DENIED,
|
|
@@ -79,7 +78,7 @@ function resendWorkspaceMembershipInvitation(prisma, identityConfig, sendInvite)
|
|
|
79
78
|
message: `Original invitation not found for userRef: ${inviteeRef}`
|
|
80
79
|
});
|
|
81
80
|
}
|
|
82
|
-
const inviteeToken = yield (0,
|
|
81
|
+
const inviteeToken = yield (0, createGenerateWorkspaceInviteToken_1.createGenerateWorkspaceInviteToken)(identityConfig)({
|
|
83
82
|
userRef: member.user.ref,
|
|
84
83
|
memberRef: member.ref,
|
|
85
84
|
accessKeyId: member.user.accessKeyId,
|
|
@@ -96,5 +95,5 @@ function resendWorkspaceMembershipInvitation(prisma, identityConfig, sendInvite)
|
|
|
96
95
|
userRef: inviteeRef
|
|
97
96
|
});
|
|
98
97
|
});
|
|
99
|
-
return (0, common_1.withErrorHandlingAndValidation)(
|
|
98
|
+
return (0, common_1.withErrorHandlingAndValidation)(resendWorkspaceMembershipInvitation, common_1.Validators.resendWorkspaceMembershipInvitationRequestSchema);
|
|
100
99
|
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { GrpcErrorMessage } from "@fonoster/common";
|
|
2
|
+
import { Prisma } from "../db";
|
|
3
|
+
declare function createUpdateWorkspace(prisma: Prisma): (call: {
|
|
4
|
+
request: unknown;
|
|
5
|
+
}, callback: (error?: import("@fonoster/common").GrpcErrorMessage, response?: unknown) => void) => Promise<void>;
|
|
6
|
+
export { createUpdateWorkspace };
|
|
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.createUpdateWorkspace = createUpdateWorkspace;
|
|
13
13
|
/*
|
|
14
14
|
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
15
15
|
* http://github.com/fonoster/fonoster
|
|
@@ -31,18 +31,17 @@ exports.updateWorkspace = updateWorkspace;
|
|
|
31
31
|
const common_1 = require("@fonoster/common");
|
|
32
32
|
const logger_1 = require("@fonoster/logger");
|
|
33
33
|
const grpc_js_1 = require("@grpc/grpc-js");
|
|
34
|
-
const
|
|
35
|
-
const getTokenFromCall_1 = require("../utils/getTokenFromCall");
|
|
34
|
+
const createIsWorkspaceMember_1 = require("./createIsWorkspaceMember");
|
|
36
35
|
const getUserRefFromToken_1 = require("../utils/getUserRefFromToken");
|
|
37
36
|
const logger = (0, logger_1.getLogger)({ service: "identity", filePath: __filename });
|
|
38
|
-
function
|
|
39
|
-
const
|
|
40
|
-
const token = (0,
|
|
37
|
+
function createUpdateWorkspace(prisma) {
|
|
38
|
+
const updateWorkspace = (call, callback) => __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
const token = (0, common_1.getTokenFromCall)(call);
|
|
41
40
|
const userRef = (0, getUserRefFromToken_1.getUserRefFromToken)(token);
|
|
42
41
|
const { request } = call;
|
|
43
42
|
const { ref, name } = request;
|
|
44
43
|
logger.verbose("call to updateWorkspace", { ref, userRef });
|
|
45
|
-
const isMember = yield (0,
|
|
44
|
+
const isMember = yield (0, createIsWorkspaceMember_1.createIsWorkspaceMember)(prisma)(ref, userRef);
|
|
46
45
|
if (!isMember) {
|
|
47
46
|
callback({
|
|
48
47
|
code: grpc_js_1.status.PERMISSION_DENIED,
|
|
@@ -59,5 +58,5 @@ function updateWorkspace(prisma) {
|
|
|
59
58
|
});
|
|
60
59
|
callback(null, { ref });
|
|
61
60
|
});
|
|
62
|
-
return (0, common_1.withErrorHandlingAndValidation)(
|
|
61
|
+
return (0, common_1.withErrorHandlingAndValidation)(updateWorkspace, common_1.Validators.updateWorkspaceRequestSchema);
|
|
63
62
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export * from "./
|
|
2
|
-
export * from "./
|
|
3
|
-
export * from "./
|
|
4
|
-
export * from "./
|
|
5
|
-
export * from "./
|
|
6
|
-
export * from "./
|
|
7
|
-
export * from "./
|
|
8
|
-
export * from "./
|
|
1
|
+
export * from "./createCreateWorkspace";
|
|
2
|
+
export * from "./createDeleteWorkspace";
|
|
3
|
+
export * from "./createGetWorkspace";
|
|
4
|
+
export * from "./createInviteUserToWorkspace";
|
|
5
|
+
export * from "./createListWorkspaces";
|
|
6
|
+
export * from "./createRemoveUserFromWorkspace";
|
|
7
|
+
export * from "./createResendWorkspaceMembershipInvitation";
|
|
8
|
+
export * from "./createUpdateWorkspace";
|
package/dist/workspaces/index.js
CHANGED
|
@@ -32,11 +32,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
32
32
|
* See the License for the specific language governing permissions and
|
|
33
33
|
* limitations under the License.
|
|
34
34
|
*/
|
|
35
|
-
__exportStar(require("./
|
|
36
|
-
__exportStar(require("./
|
|
37
|
-
__exportStar(require("./
|
|
38
|
-
__exportStar(require("./
|
|
39
|
-
__exportStar(require("./
|
|
40
|
-
__exportStar(require("./
|
|
41
|
-
__exportStar(require("./
|
|
42
|
-
__exportStar(require("./
|
|
35
|
+
__exportStar(require("./createCreateWorkspace"), exports);
|
|
36
|
+
__exportStar(require("./createDeleteWorkspace"), exports);
|
|
37
|
+
__exportStar(require("./createGetWorkspace"), exports);
|
|
38
|
+
__exportStar(require("./createInviteUserToWorkspace"), exports);
|
|
39
|
+
__exportStar(require("./createListWorkspaces"), exports);
|
|
40
|
+
__exportStar(require("./createRemoveUserFromWorkspace"), exports);
|
|
41
|
+
__exportStar(require("./createResendWorkspaceMembershipInvitation"), exports);
|
|
42
|
+
__exportStar(require("./createUpdateWorkspace"), exports);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fonoster/identity",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.26",
|
|
4
4
|
"description": "Identity service for Fonoster",
|
|
5
5
|
"author": "Pedro Sanders <psanders@fonoster.com>",
|
|
6
6
|
"homepage": "https://github.com/fonoster/fonoster#readme",
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
"fonoster": "./dist/index.js"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@fonoster/common": "^0.8.
|
|
24
|
-
"@fonoster/logger": "^0.8.
|
|
25
|
-
"@fonoster/types": "^0.8.
|
|
23
|
+
"@fonoster/common": "^0.8.26",
|
|
24
|
+
"@fonoster/logger": "^0.8.26",
|
|
25
|
+
"@fonoster/types": "^0.8.26",
|
|
26
26
|
"@grpc/grpc-js": "~1.10.6",
|
|
27
27
|
"@prisma/client": "^6.0.1",
|
|
28
28
|
"jsonwebtoken": "^9.0.2",
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@types/jsonwebtoken": "^9.0.6"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "f01e634eca9a94b3a276369e998c6e75f8b75284"
|
|
52
52
|
}
|
package/dist/JsonWebErrorEnum.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.JsonWebErrorEnum = void 0;
|
|
4
|
-
/*
|
|
5
|
-
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
6
|
-
* http://github.com/fonoster/fonoster
|
|
7
|
-
*
|
|
8
|
-
* This file is part of Fonoster
|
|
9
|
-
*
|
|
10
|
-
* Licensed under the MIT License (the "License");
|
|
11
|
-
* you may not use this file except in compliance with
|
|
12
|
-
* the License. You may obtain a copy of the License at
|
|
13
|
-
*
|
|
14
|
-
* https://opensource.org/licenses/MIT
|
|
15
|
-
*
|
|
16
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
17
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
-
* See the License for the specific language governing permissions and
|
|
20
|
-
* limitations under the License.
|
|
21
|
-
*/
|
|
22
|
-
var JsonWebErrorEnum;
|
|
23
|
-
(function (JsonWebErrorEnum) {
|
|
24
|
-
JsonWebErrorEnum["JsonWebTokenError"] = "JsonWebTokenError";
|
|
25
|
-
JsonWebErrorEnum["TokenExpiredError"] = "TokenExpiredError";
|
|
26
|
-
})(JsonWebErrorEnum || (exports.JsonWebErrorEnum = JsonWebErrorEnum = {}));
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { ServerInterceptingCall } from "@grpc/grpc-js";
|
|
2
|
-
/**
|
|
3
|
-
* This function is a gRPC interceptor that checks if the request is valid
|
|
4
|
-
* and if the user has the right permissions to access the resource. When
|
|
5
|
-
* validating the request, the function will check if the request is in the
|
|
6
|
-
* skip list, if the token is valid and if the role is allowed by the RBAC.
|
|
7
|
-
*
|
|
8
|
-
* @param {string} identityPublicKey - The public key to validate the token
|
|
9
|
-
* @param {string[]} publicPath - The list of public paths
|
|
10
|
-
* @return {Function} - The gRPC interceptor
|
|
11
|
-
*/
|
|
12
|
-
declare function createAuthInterceptor(identityPublicKey: string, publicPath: string[]): (methodDefinition: {
|
|
13
|
-
path: string;
|
|
14
|
-
}, call: ServerInterceptingCall) => ServerInterceptingCall;
|
|
15
|
-
export { createAuthInterceptor };
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createAuthInterceptor = createAuthInterceptor;
|
|
4
|
-
/*
|
|
5
|
-
* Copyright (C) 2024 by Fonoster Inc (https://fonoster.com)
|
|
6
|
-
* http://github.com/fonoster/fonoster
|
|
7
|
-
*
|
|
8
|
-
* This file is part of Fonoster
|
|
9
|
-
*
|
|
10
|
-
* Licensed under the MIT License (the "License");
|
|
11
|
-
* you may not use this file except in compliance with
|
|
12
|
-
* the License. You may obtain a copy of the License at
|
|
13
|
-
*
|
|
14
|
-
* https://opensource.org/licenses/MIT
|
|
15
|
-
*
|
|
16
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
17
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
18
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
19
|
-
* See the License for the specific language governing permissions and
|
|
20
|
-
* limitations under the License.
|
|
21
|
-
*/
|
|
22
|
-
const logger_1 = require("@fonoster/logger");
|
|
23
|
-
const errors_1 = require("./errors");
|
|
24
|
-
const roles_1 = require("./roles");
|
|
25
|
-
const utils_1 = require("./utils");
|
|
26
|
-
const logger = (0, logger_1.getLogger)({ service: "identity", filePath: __filename });
|
|
27
|
-
/**
|
|
28
|
-
* This function is a gRPC interceptor that checks if the request is valid
|
|
29
|
-
* and if the user has the right permissions to access the resource. When
|
|
30
|
-
* validating the request, the function will check if the request is in the
|
|
31
|
-
* skip list, if the token is valid and if the role is allowed by the RBAC.
|
|
32
|
-
*
|
|
33
|
-
* @param {string} identityPublicKey - The public key to validate the token
|
|
34
|
-
* @param {string[]} publicPath - The list of public paths
|
|
35
|
-
* @return {Function} - The gRPC interceptor
|
|
36
|
-
*/
|
|
37
|
-
function createAuthInterceptor(identityPublicKey, publicPath) {
|
|
38
|
-
/**
|
|
39
|
-
* Inner function that will be called by the gRPC server.
|
|
40
|
-
*
|
|
41
|
-
* @param {object} methodDefinition - The method definition
|
|
42
|
-
* @param {string} methodDefinition.path - The path of the gRPC method
|
|
43
|
-
* @param {ServerInterceptingCall} call - The call object
|
|
44
|
-
* @return {ServerInterceptingCall} - The modified call object
|
|
45
|
-
*/
|
|
46
|
-
return (methodDefinition, call) => {
|
|
47
|
-
const { path } = methodDefinition;
|
|
48
|
-
const accessKeyId = (0, utils_1.getAccessKeyIdFromCall)(call);
|
|
49
|
-
logger.verbose("intercepting api call to path", { accessKeyId, path });
|
|
50
|
-
if (publicPath.includes(methodDefinition.path)) {
|
|
51
|
-
logger.verbose("passing auth control to edge function", { path });
|
|
52
|
-
return call;
|
|
53
|
-
}
|
|
54
|
-
const token = (0, utils_1.getTokenFromCall)(call);
|
|
55
|
-
logger.verbose("validating token", { accessKeyId, path });
|
|
56
|
-
if (!(0, utils_1.isValidToken)(token, identityPublicKey)) {
|
|
57
|
-
return (0, errors_1.unauthenticatedError)(call);
|
|
58
|
-
}
|
|
59
|
-
const decodedToken = (0, utils_1.decodeToken)(token);
|
|
60
|
-
logger.verbose("checking access for accessKeyId", {
|
|
61
|
-
accessKeyId,
|
|
62
|
-
path,
|
|
63
|
-
hasAccess: (0, utils_1.hasAccess)(decodedToken.access, path),
|
|
64
|
-
pathIsWorkspacePath: roles_1.workspaceAccess.includes(path),
|
|
65
|
-
tokenHasAccessKeyId: (0, utils_1.tokenHasAccessKeyId)(token, accessKeyId)
|
|
66
|
-
});
|
|
67
|
-
if (!(0, utils_1.hasAccess)(decodedToken.access, path) ||
|
|
68
|
-
(roles_1.workspaceAccess.includes(path) &&
|
|
69
|
-
!(0, utils_1.tokenHasAccessKeyId)(token, accessKeyId))) {
|
|
70
|
-
return (0, errors_1.permissionDeniedError)(call);
|
|
71
|
-
}
|
|
72
|
-
return call;
|
|
73
|
-
};
|
|
74
|
-
}
|
package/dist/errors.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { ServerInterceptingCall } from "@grpc/grpc-js";
|
|
2
|
-
declare const unauthenticatedError: (call: ServerInterceptingCall) => ServerInterceptingCall;
|
|
3
|
-
declare const permissionDeniedError: (call: ServerInterceptingCall) => ServerInterceptingCall;
|
|
4
|
-
export { permissionDeniedError, unauthenticatedError };
|