@fonoster/identity 0.9.5 → 0.9.8
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/db.d.ts +9 -4
- package/dist/db.js +10 -9
- package/dist/exchanges/createExchangeCredentials.js +3 -4
- package/dist/exchanges/types.d.ts +5 -0
- package/dist/service.js +24 -24
- package/dist/users/upsertDefaultUser.d.ts +2 -1
- package/dist/users/upsertDefaultUser.js +4 -3
- package/dist/utils/createGetApiKeyByAccessKeyId.d.ts +3 -3
- package/dist/utils/createGetUserByAccessKeyId.d.ts +9 -3
- package/dist/utils/createGetUserByEmail.d.ts +2 -2
- package/dist/utils/createGetUserByWorkspaceAccessKeyId.d.ts +2 -2
- package/dist/utils/createUpdateMembershipStatus.js +2 -1
- package/dist/workspaces/createInviteUserToWorkspace.js +2 -3
- package/dist/workspaces/createResendWorkspaceMembershipInvitation.js +2 -3
- package/package.json +4 -4
- package/dist/envs.d.ts +0 -7
- package/dist/envs.js +0 -36
package/dist/db.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Prisma as DMMF } from "./generated/@prisma/client";
|
|
2
|
-
declare const
|
|
2
|
+
export declare const createPrismaClient: (dbUrl: string, cloakEncryptionKey: string) => import("./generated/@prisma/client/runtime/library").DynamicClientExtensionThis<DMMF.TypeMap<import("./generated/@prisma/client/runtime/library").InternalArgs & {
|
|
3
3
|
result: {};
|
|
4
4
|
model: {};
|
|
5
5
|
query: {};
|
|
@@ -9,6 +9,11 @@ declare const prisma: import("./generated/@prisma/client/runtime/library").Dynam
|
|
|
9
9
|
model: {};
|
|
10
10
|
query: {};
|
|
11
11
|
client: {};
|
|
12
|
-
},
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
}, {
|
|
13
|
+
datasources: {
|
|
14
|
+
db: {
|
|
15
|
+
url: string;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
}>;
|
|
19
|
+
export type Prisma = ReturnType<typeof createPrismaClient>;
|
package/dist/db.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.createPrismaClient = void 0;
|
|
4
4
|
/*
|
|
5
5
|
* Copyright (C) 2025 by Fonoster Inc (https://fonoster.com)
|
|
6
6
|
* http://github.com/fonoster/fonoster
|
|
@@ -21,11 +21,12 @@ exports.prisma = void 0;
|
|
|
21
21
|
*/
|
|
22
22
|
const client_1 = require("./generated/@prisma/client");
|
|
23
23
|
const prisma_field_encryption_1 = require("prisma-field-encryption");
|
|
24
|
-
const
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
}));
|
|
31
|
-
|
|
24
|
+
const createPrismaClient = (dbUrl, cloakEncryptionKey) => {
|
|
25
|
+
return new client_1.PrismaClient({
|
|
26
|
+
datasources: { db: { url: dbUrl } },
|
|
27
|
+
}).$extends((0, prisma_field_encryption_1.fieldEncryptionExtension)({
|
|
28
|
+
encryptionKey: cloakEncryptionKey,
|
|
29
|
+
dmmf: client_1.Prisma.dmmf,
|
|
30
|
+
}));
|
|
31
|
+
};
|
|
32
|
+
exports.createPrismaClient = createPrismaClient;
|
|
@@ -65,12 +65,11 @@ const common_1 = require("@fonoster/common");
|
|
|
65
65
|
const logger_1 = require("@fonoster/logger");
|
|
66
66
|
const grpc = __importStar(require("@grpc/grpc-js"));
|
|
67
67
|
const exchangeTokens_1 = require("./exchangeTokens");
|
|
68
|
-
const envs_1 = require("../envs");
|
|
69
68
|
const createIsValidVerificationCode_1 = require("../utils/createIsValidVerificationCode");
|
|
70
69
|
const createGetUserByEmail_1 = require("../utils/createGetUserByEmail");
|
|
71
70
|
const verification_1 = require("../verification");
|
|
72
71
|
const logger = (0, logger_1.getLogger)({ service: "identity", filePath: __filename });
|
|
73
|
-
const verificationRequiredButNotProvided = (user) =>
|
|
72
|
+
const verificationRequiredButNotProvided = (identityConfig, user) => identityConfig.userVerificationRequired &&
|
|
74
73
|
(!user.emailVerified || !user.phoneNumberVerified);
|
|
75
74
|
function createExchangeCredentials(prisma, identityConfig) {
|
|
76
75
|
const isValidVerificationCode = (0, createIsValidVerificationCode_1.createIsValidVerificationCode)(prisma);
|
|
@@ -85,13 +84,13 @@ function createExchangeCredentials(prisma, identityConfig) {
|
|
|
85
84
|
message: "Invalid credentials"
|
|
86
85
|
});
|
|
87
86
|
}
|
|
88
|
-
if (verificationRequiredButNotProvided(user)) {
|
|
87
|
+
if (verificationRequiredButNotProvided(identityConfig, user)) {
|
|
89
88
|
return callback({
|
|
90
89
|
code: grpc.status.PERMISSION_DENIED,
|
|
91
90
|
message: "User contact information not verified"
|
|
92
91
|
});
|
|
93
92
|
}
|
|
94
|
-
if (
|
|
93
|
+
if (identityConfig.userVerificationRequired) {
|
|
95
94
|
const isValid = yield isValidVerificationCode({
|
|
96
95
|
type: verification_1.ContactType.EMAIL,
|
|
97
96
|
value: email,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Validators as V } from "@fonoster/common";
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
type IdentityConfig = {
|
|
4
|
+
dbUrl: string;
|
|
4
5
|
issuer: string;
|
|
5
6
|
audience: string;
|
|
6
7
|
privateKey: string;
|
|
@@ -9,6 +10,10 @@ type IdentityConfig = {
|
|
|
9
10
|
accessTokenExpiresIn: number | string;
|
|
10
11
|
refreshTokenExpiresIn: number | string;
|
|
11
12
|
idTokenExpiresIn: number | string;
|
|
13
|
+
workspaceInviteExpiration: string;
|
|
14
|
+
workspaceInviteUrl: string;
|
|
15
|
+
workspaceInviteFailUrl: string;
|
|
16
|
+
userVerificationRequired: boolean;
|
|
12
17
|
smtpConfig: {
|
|
13
18
|
sender: string;
|
|
14
19
|
host: string;
|
package/dist/service.js
CHANGED
|
@@ -21,7 +21,6 @@ exports.buildIdentityService = buildIdentityService;
|
|
|
21
21
|
* limitations under the License.
|
|
22
22
|
*/
|
|
23
23
|
const db_1 = require("./db");
|
|
24
|
-
const envs_1 = require("./envs");
|
|
25
24
|
const createExchangeOauth2Code_1 = require("./exchanges/createExchangeOauth2Code");
|
|
26
25
|
const getPublicKey_1 = require("./getPublicKey");
|
|
27
26
|
const verification_1 = require("./verification");
|
|
@@ -34,42 +33,43 @@ const serviceDefinitionParams = {
|
|
|
34
33
|
};
|
|
35
34
|
exports.serviceDefinitionParams = serviceDefinitionParams;
|
|
36
35
|
function buildIdentityService(identityConfig) {
|
|
36
|
+
const prisma = (0, db_1.createPrismaClient)(identityConfig.dbUrl, identityConfig.encryptionKey);
|
|
37
37
|
const service = {
|
|
38
38
|
definition: serviceDefinitionParams,
|
|
39
39
|
handlers: {
|
|
40
40
|
// Workspace operations
|
|
41
|
-
createWorkspace: (0, _1.createCreateWorkspace)(
|
|
42
|
-
deleteWorkspace: (0, _1.createDeleteWorkspace)(
|
|
43
|
-
getWorkspace: (0, _1.createGetWorkspace)(
|
|
44
|
-
updateWorkspace: (0, _1.createUpdateWorkspace)(
|
|
45
|
-
listWorkspaces: (0, _1.createListWorkspaces)(
|
|
46
|
-
inviteUserToWorkspace: (0, _1.createInviteUserToWorkspace)(
|
|
47
|
-
resendWorkspaceMembershipInvitation: (0, _1.createResendWorkspaceMembershipInvitation)(
|
|
48
|
-
removeUserFromWorkspace: (0, _1.createRemoveUserFromWorkspace)(
|
|
41
|
+
createWorkspace: (0, _1.createCreateWorkspace)(prisma),
|
|
42
|
+
deleteWorkspace: (0, _1.createDeleteWorkspace)(prisma),
|
|
43
|
+
getWorkspace: (0, _1.createGetWorkspace)(prisma),
|
|
44
|
+
updateWorkspace: (0, _1.createUpdateWorkspace)(prisma),
|
|
45
|
+
listWorkspaces: (0, _1.createListWorkspaces)(prisma),
|
|
46
|
+
inviteUserToWorkspace: (0, _1.createInviteUserToWorkspace)(prisma, identityConfig, _1.sendInvite),
|
|
47
|
+
resendWorkspaceMembershipInvitation: (0, _1.createResendWorkspaceMembershipInvitation)(prisma, identityConfig, _1.sendInvite),
|
|
48
|
+
removeUserFromWorkspace: (0, _1.createRemoveUserFromWorkspace)(prisma),
|
|
49
49
|
// User operations
|
|
50
|
-
createUser: (0, _1.createCreateUser)(
|
|
51
|
-
getUser: (0, _1.createGetUser)(
|
|
52
|
-
deleteUser: (0, _1.createDeleteUser)(
|
|
53
|
-
updateUser: (0, _1.createUpdateUser)(
|
|
50
|
+
createUser: (0, _1.createCreateUser)(prisma),
|
|
51
|
+
getUser: (0, _1.createGetUser)(prisma),
|
|
52
|
+
deleteUser: (0, _1.createDeleteUser)(prisma),
|
|
53
|
+
updateUser: (0, _1.createUpdateUser)(prisma),
|
|
54
54
|
// ApiKey operations
|
|
55
|
-
createApiKey: (0, _1.createCreateApiKey)(
|
|
56
|
-
deleteApiKey: (0, _1.createDeleteApiKey)(
|
|
57
|
-
listApiKeys: (0, _1.createListApiKeys)(
|
|
58
|
-
regenerateApiKey: (0, _1.createRegenerateApiKey)(
|
|
55
|
+
createApiKey: (0, _1.createCreateApiKey)(prisma),
|
|
56
|
+
deleteApiKey: (0, _1.createDeleteApiKey)(prisma),
|
|
57
|
+
listApiKeys: (0, _1.createListApiKeys)(prisma),
|
|
58
|
+
regenerateApiKey: (0, _1.createRegenerateApiKey)(prisma),
|
|
59
59
|
// Exchanges
|
|
60
|
-
exchangeApiKey: (0, _1.createExchangeApiKey)(
|
|
61
|
-
exchangeCredentials: (0, _1.createExchangeCredentials)(
|
|
62
|
-
exchangeOauth2Code: (0, createExchangeOauth2Code_1.createExchangeOauth2Code)(
|
|
63
|
-
exchangeRefreshToken: (0, _1.createExchangeRefreshToken)(
|
|
60
|
+
exchangeApiKey: (0, _1.createExchangeApiKey)(prisma, identityConfig),
|
|
61
|
+
exchangeCredentials: (0, _1.createExchangeCredentials)(prisma, identityConfig),
|
|
62
|
+
exchangeOauth2Code: (0, createExchangeOauth2Code_1.createExchangeOauth2Code)(prisma, identityConfig),
|
|
63
|
+
exchangeRefreshToken: (0, _1.createExchangeRefreshToken)(prisma, identityConfig),
|
|
64
64
|
getPublicKey: (0, getPublicKey_1.createGetPublicKey)(identityConfig.publicKey),
|
|
65
65
|
// Placeholders for conditional handlers
|
|
66
66
|
sendVerificationCode: undefined,
|
|
67
67
|
verifyCode: undefined
|
|
68
68
|
}
|
|
69
69
|
};
|
|
70
|
-
if (
|
|
71
|
-
service.handlers.sendVerificationCode = (0, verification_1.createSendVerificationCode)(
|
|
72
|
-
service.handlers.verifyCode = (0, verification_1.createVerifyCode)(
|
|
70
|
+
if (identityConfig.userVerificationRequired) {
|
|
71
|
+
service.handlers.sendVerificationCode = (0, verification_1.createSendVerificationCode)(prisma, identityConfig);
|
|
72
|
+
service.handlers.verifyCode = (0, verification_1.createVerifyCode)(prisma);
|
|
73
73
|
}
|
|
74
74
|
return service;
|
|
75
75
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { IdentityConfig } from "../exchanges";
|
|
2
3
|
declare const createUserRequestSchema: z.ZodObject<{
|
|
3
4
|
name: z.ZodString;
|
|
4
5
|
email: z.ZodString;
|
|
@@ -13,5 +14,5 @@ declare const createUserRequestSchema: z.ZodObject<{
|
|
|
13
14
|
password?: string;
|
|
14
15
|
}>;
|
|
15
16
|
type CreateUserRequest = z.infer<typeof createUserRequestSchema>;
|
|
16
|
-
declare function upsertDefaultUser(request: CreateUserRequest): Promise<void>;
|
|
17
|
+
declare function upsertDefaultUser(identityConfig: IdentityConfig, request: CreateUserRequest): Promise<void>;
|
|
17
18
|
export { upsertDefaultUser };
|
|
@@ -45,8 +45,9 @@ const USER_REF = "00000000-0000-0000-0000-000000000000";
|
|
|
45
45
|
const WORKSPACE_REF = "00000000-0000-0000-0000-000000000000";
|
|
46
46
|
const USER_ACCESS_KEY_ID = "US00000000000000000000000000000000";
|
|
47
47
|
const WORKSPACE_ACCESS_KEY_ID = "WO00000000000000000000000000000000";
|
|
48
|
-
function upsertDefaultUser(request) {
|
|
48
|
+
function upsertDefaultUser(identityConfig, request) {
|
|
49
49
|
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
const prisma = (0, db_1.createPrismaClient)(identityConfig.dbUrl, identityConfig.encryptionKey);
|
|
50
51
|
try {
|
|
51
52
|
const validatedRequest = createUserRequestSchema.parse(request);
|
|
52
53
|
const { name, email, password } = validatedRequest;
|
|
@@ -54,7 +55,7 @@ function upsertDefaultUser(request) {
|
|
|
54
55
|
email,
|
|
55
56
|
accessKeyId: USER_ACCESS_KEY_ID
|
|
56
57
|
});
|
|
57
|
-
yield
|
|
58
|
+
yield prisma.user.upsert({
|
|
58
59
|
where: { ref: USER_REF },
|
|
59
60
|
update: {
|
|
60
61
|
name,
|
|
@@ -71,7 +72,7 @@ function upsertDefaultUser(request) {
|
|
|
71
72
|
accessKeyId: USER_ACCESS_KEY_ID
|
|
72
73
|
}
|
|
73
74
|
});
|
|
74
|
-
yield
|
|
75
|
+
yield prisma.workspace.upsert({
|
|
75
76
|
where: { ref: WORKSPACE_REF },
|
|
76
77
|
update: {},
|
|
77
78
|
create: {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Prisma } from "../db";
|
|
2
2
|
declare function createGetApiKeyByAccessKeyId(prisma: Prisma): (accessKeyId: string) => Promise<{
|
|
3
|
-
role: import("../generated/@prisma/client").$Enums.ApiKeyRole;
|
|
4
|
-
expiresAt: Date | null;
|
|
5
3
|
ref: string;
|
|
6
4
|
accessKeyId: string;
|
|
7
5
|
createdAt: Date;
|
|
8
6
|
updatedAt: Date;
|
|
9
|
-
|
|
7
|
+
role: import("../generated/@prisma/client").$Enums.ApiKeyRole;
|
|
10
8
|
workspaceRef: string;
|
|
9
|
+
accessKeySecret: string;
|
|
10
|
+
expiresAt: Date | null;
|
|
11
11
|
}>;
|
|
12
12
|
export { createGetApiKeyByAccessKeyId };
|
|
@@ -4,18 +4,24 @@ declare function createGetUserByAccessKeyId(prisma: Prisma): (accessKeyId: strin
|
|
|
4
4
|
model: {};
|
|
5
5
|
query: {};
|
|
6
6
|
client: {};
|
|
7
|
-
}, import("../generated/@prisma/client").Prisma.PrismaClientOptions>, "User", "findFirst", null,
|
|
7
|
+
}, import("../generated/@prisma/client").Prisma.PrismaClientOptions>, "User", "findFirst", null, {
|
|
8
|
+
datasources: {
|
|
9
|
+
db: {
|
|
10
|
+
url: string;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
}> & import("../generated/@prisma/client/runtime/library").PrismaPromise<{
|
|
8
14
|
name: string;
|
|
9
15
|
ref: string;
|
|
10
16
|
accessKeyId: string;
|
|
11
|
-
createdAt: Date;
|
|
12
|
-
updatedAt: Date;
|
|
13
17
|
email: string;
|
|
14
18
|
emailVerified: boolean;
|
|
15
19
|
password: string;
|
|
16
20
|
phoneNumber: string | null;
|
|
17
21
|
phoneNumberVerified: boolean;
|
|
18
22
|
avatar: string | null;
|
|
23
|
+
createdAt: Date;
|
|
24
|
+
updatedAt: Date;
|
|
19
25
|
extended: import("../generated/@prisma/client/runtime/library").JsonValue | null;
|
|
20
26
|
}>;
|
|
21
27
|
export { createGetUserByAccessKeyId };
|
|
@@ -3,14 +3,14 @@ declare function createGetUserByEmail(prisma: Prisma): (email: string) => Promis
|
|
|
3
3
|
name: string;
|
|
4
4
|
ref: string;
|
|
5
5
|
accessKeyId: string;
|
|
6
|
-
createdAt: Date;
|
|
7
|
-
updatedAt: Date;
|
|
8
6
|
email: string;
|
|
9
7
|
emailVerified: boolean;
|
|
10
8
|
password: string;
|
|
11
9
|
phoneNumber: string | null;
|
|
12
10
|
phoneNumberVerified: boolean;
|
|
13
11
|
avatar: string | null;
|
|
12
|
+
createdAt: Date;
|
|
13
|
+
updatedAt: Date;
|
|
14
14
|
extended: import("../generated/@prisma/client/runtime/library").JsonValue | null;
|
|
15
15
|
}>;
|
|
16
16
|
export { createGetUserByEmail };
|
|
@@ -3,14 +3,14 @@ declare function createGetUserByWorkspaceAccessKeyId(prisma: Prisma): (accessKey
|
|
|
3
3
|
name: string;
|
|
4
4
|
ref: string;
|
|
5
5
|
accessKeyId: string;
|
|
6
|
-
createdAt: Date;
|
|
7
|
-
updatedAt: Date;
|
|
8
6
|
email: string;
|
|
9
7
|
emailVerified: boolean;
|
|
10
8
|
password: string;
|
|
11
9
|
phoneNumber: string | null;
|
|
12
10
|
phoneNumberVerified: boolean;
|
|
13
11
|
avatar: string | null;
|
|
12
|
+
createdAt: Date;
|
|
13
|
+
updatedAt: Date;
|
|
14
14
|
extended: import("../generated/@prisma/client/runtime/library").JsonValue | null;
|
|
15
15
|
}>;
|
|
16
16
|
export { createGetUserByWorkspaceAccessKeyId };
|
|
@@ -33,13 +33,14 @@ const jwt_decode_1 = require("jwt-decode");
|
|
|
33
33
|
const common_1 = require("@fonoster/common");
|
|
34
34
|
const db_1 = require("../db");
|
|
35
35
|
function createUpdateMembershipStatus(identityConfig) {
|
|
36
|
+
const prisma = (0, db_1.createPrismaClient)(identityConfig.dbUrl, identityConfig.encryptionKey);
|
|
36
37
|
return function pdateMembershipStatus(token) {
|
|
37
38
|
return __awaiter(this, void 0, void 0, function* () {
|
|
38
39
|
if (!(0, common_1.isValidToken)(token, identityConfig.privateKey)) {
|
|
39
40
|
throw new Error("Invalid token");
|
|
40
41
|
}
|
|
41
42
|
const { memberRef } = (0, jwt_decode_1.jwtDecode)(token);
|
|
42
|
-
yield
|
|
43
|
+
yield prisma.workspaceMember.update({
|
|
43
44
|
where: {
|
|
44
45
|
ref: memberRef
|
|
45
46
|
},
|
|
@@ -35,7 +35,6 @@ const grpc_js_1 = require("@grpc/grpc-js");
|
|
|
35
35
|
const nanoid_1 = require("nanoid");
|
|
36
36
|
const createIsAdminMember_1 = require("./createIsAdminMember");
|
|
37
37
|
const createIsWorkspaceMember_1 = require("./createIsWorkspaceMember");
|
|
38
|
-
const envs_1 = require("../envs");
|
|
39
38
|
const utils_1 = require("../utils");
|
|
40
39
|
const createGenerateWorkspaceInviteToken_1 = require("../utils/createGenerateWorkspaceInviteToken");
|
|
41
40
|
const getUserRefFromToken_1 = require("../utils/getUserRefFromToken");
|
|
@@ -123,14 +122,14 @@ function createInviteUserToWorkspace(prisma, identityConfig, sendInvite) {
|
|
|
123
122
|
userRef: user.ref,
|
|
124
123
|
memberRef: newMember.ref,
|
|
125
124
|
accessKeyId: user.accessKeyId,
|
|
126
|
-
expiresIn:
|
|
125
|
+
expiresIn: identityConfig.workspaceInviteExpiration
|
|
127
126
|
});
|
|
128
127
|
yield sendInvite((0, utils_1.createSendEmail)(identityConfig), {
|
|
129
128
|
recipient: email,
|
|
130
129
|
oneTimePassword,
|
|
131
130
|
workspaceName: newMember.workspace.name,
|
|
132
131
|
isExistingUser,
|
|
133
|
-
inviteUrl: `${
|
|
132
|
+
inviteUrl: `${identityConfig.workspaceInviteUrl}?token=${inviteeToken}`
|
|
134
133
|
});
|
|
135
134
|
callback(null, {
|
|
136
135
|
userRef: user === null || user === void 0 ? void 0 : user.ref,
|
|
@@ -32,7 +32,6 @@ 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
34
|
const createIsAdminMember_1 = require("./createIsAdminMember");
|
|
35
|
-
const envs_1 = require("../envs");
|
|
36
35
|
const utils_1 = require("../utils");
|
|
37
36
|
const createGenerateWorkspaceInviteToken_1 = require("../utils/createGenerateWorkspaceInviteToken");
|
|
38
37
|
const getUserRefFromToken_1 = require("../utils/getUserRefFromToken");
|
|
@@ -82,14 +81,14 @@ function createResendWorkspaceMembershipInvitation(prisma, identityConfig, sendI
|
|
|
82
81
|
userRef: member.user.ref,
|
|
83
82
|
memberRef: member.ref,
|
|
84
83
|
accessKeyId: member.user.accessKeyId,
|
|
85
|
-
expiresIn:
|
|
84
|
+
expiresIn: identityConfig.workspaceInviteExpiration
|
|
86
85
|
});
|
|
87
86
|
yield sendInvite((0, utils_1.createSendEmail)(identityConfig), {
|
|
88
87
|
recipient: member.user.email,
|
|
89
88
|
oneTimePassword: member.user.password,
|
|
90
89
|
workspaceName: member.workspace.name,
|
|
91
90
|
isExistingUser: true,
|
|
92
|
-
inviteUrl: `${
|
|
91
|
+
inviteUrl: `${identityConfig.workspaceInviteUrl}?token=${inviteeToken}`
|
|
93
92
|
});
|
|
94
93
|
callback(null, {
|
|
95
94
|
userRef: inviteeRef
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fonoster/identity",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.8",
|
|
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,8 +20,8 @@
|
|
|
20
20
|
"fonoster": "./dist/index.js"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@fonoster/common": "^0.9.
|
|
24
|
-
"@fonoster/logger": "^0.9.
|
|
23
|
+
"@fonoster/common": "^0.9.7",
|
|
24
|
+
"@fonoster/logger": "^0.9.7",
|
|
25
25
|
"@fonoster/types": "^0.9.0",
|
|
26
26
|
"@grpc/grpc-js": "~1.10.6",
|
|
27
27
|
"@prisma/client": "^6.3.1",
|
|
@@ -48,5 +48,5 @@
|
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"@types/jsonwebtoken": "^9.0.6"
|
|
50
50
|
},
|
|
51
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "ce8a2ea35fa85d494b158ddb8e61bd92ff2af00b"
|
|
52
52
|
}
|
package/dist/envs.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export declare const CLOAK_ENCRYPTION_KEY: string;
|
|
2
|
-
export declare const IDENTITY_MFA_REQUIRED: boolean;
|
|
3
|
-
export declare const IDENTITY_OAUTH2_GITHUB_CLIENT_ID: string;
|
|
4
|
-
export declare const IDENTITY_OAUTH2_GITHUB_CLIENT_SECRET: string;
|
|
5
|
-
export declare const IDENTITY_USER_VERIFICATION_REQUIRED: boolean;
|
|
6
|
-
export declare const IDENTITY_WORKSPACE_INVITATION_URL: string;
|
|
7
|
-
export declare const IDENTITY_WORKSPACE_INVITE_EXPIRATION: string;
|
package/dist/envs.js
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IDENTITY_WORKSPACE_INVITE_EXPIRATION = exports.IDENTITY_WORKSPACE_INVITATION_URL = exports.IDENTITY_USER_VERIFICATION_REQUIRED = exports.IDENTITY_OAUTH2_GITHUB_CLIENT_SECRET = exports.IDENTITY_OAUTH2_GITHUB_CLIENT_ID = exports.IDENTITY_MFA_REQUIRED = exports.CLOAK_ENCRYPTION_KEY = void 0;
|
|
4
|
-
/*
|
|
5
|
-
* Copyright (C) 2025 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 getEnvString = (moduleKey, serverKey, defaultValue) => {
|
|
23
|
-
return process.env[moduleKey] || process.env[serverKey] || defaultValue || "";
|
|
24
|
-
};
|
|
25
|
-
const getEnvBoolean = (moduleKey, serverKey, defaultValue = false) => {
|
|
26
|
-
const moduleValue = process.env[moduleKey];
|
|
27
|
-
const serverValue = process.env[serverKey];
|
|
28
|
-
return moduleValue === "true" || serverValue === "true" || defaultValue;
|
|
29
|
-
};
|
|
30
|
-
exports.CLOAK_ENCRYPTION_KEY = getEnvString("CLOAK_ENCRYPTION_KEY", "APISERVER_CLOAK_ENCRYPTION_KEY");
|
|
31
|
-
exports.IDENTITY_MFA_REQUIRED = getEnvBoolean("IDENTITY_MFA_REQUIRED", "APISERVER_IDENTITY_MFA_REQUIRED");
|
|
32
|
-
exports.IDENTITY_OAUTH2_GITHUB_CLIENT_ID = getEnvString("IDENTITY_OAUTH2_GITHUB_CLIENT_ID", "APISERVER_IDENTITY_OAUTH2_GITHUB_CLIENT_ID");
|
|
33
|
-
exports.IDENTITY_OAUTH2_GITHUB_CLIENT_SECRET = getEnvString("IDENTITY_OAUTH2_GITHUB_CLIENT_SECRET", "APISERVER_IDENTITY_OAUTH2_GITHUB_CLIENT_SECRET");
|
|
34
|
-
exports.IDENTITY_USER_VERIFICATION_REQUIRED = getEnvBoolean("IDENTITY_USER_VERIFICATION_REQUIRED", "APISERVER_IDENTITY_USER_VERIFICATION_REQUIRED");
|
|
35
|
-
exports.IDENTITY_WORKSPACE_INVITATION_URL = getEnvString("IDENTITY_WORKSPACE_INVITATION_URL", "APISERVER_IDENTITY_WORKSPACE_INVITATION_URL");
|
|
36
|
-
exports.IDENTITY_WORKSPACE_INVITE_EXPIRATION = getEnvString("IDENTITY_WORKSPACE_INVITE_EXPIRATION", "APISERVER_IDENTITY_WORKSPACE_INVITE_EXPIRATION", "1d");
|