@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 CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Prisma as DMMF } from "./generated/@prisma/client";
2
- declare const prisma: import("./generated/@prisma/client/runtime/library").DynamicClientExtensionThis<DMMF.TypeMap<import("./generated/@prisma/client/runtime/library").InternalArgs & {
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
- }, DMMF.PrismaClientOptions>;
13
- type Prisma = typeof prisma;
14
- export { Prisma, prisma };
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.prisma = void 0;
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 envs_1 = require("./envs");
25
- // Check the link for details on dmff:
26
- // https://www.npmjs.com/package/prisma-field-encryption#custom-prisma-client-location
27
- const prisma = new client_1.PrismaClient().$extends((0, prisma_field_encryption_1.fieldEncryptionExtension)({
28
- encryptionKey: envs_1.CLOAK_ENCRYPTION_KEY,
29
- dmmf: client_1.Prisma.dmmf
30
- }));
31
- exports.prisma = prisma;
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) => envs_1.IDENTITY_USER_VERIFICATION_REQUIRED &&
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 (envs_1.IDENTITY_USER_VERIFICATION_REQUIRED) {
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)(db_1.prisma),
42
- deleteWorkspace: (0, _1.createDeleteWorkspace)(db_1.prisma),
43
- getWorkspace: (0, _1.createGetWorkspace)(db_1.prisma),
44
- updateWorkspace: (0, _1.createUpdateWorkspace)(db_1.prisma),
45
- listWorkspaces: (0, _1.createListWorkspaces)(db_1.prisma),
46
- inviteUserToWorkspace: (0, _1.createInviteUserToWorkspace)(db_1.prisma, identityConfig, _1.sendInvite),
47
- resendWorkspaceMembershipInvitation: (0, _1.createResendWorkspaceMembershipInvitation)(db_1.prisma, identityConfig, _1.sendInvite),
48
- removeUserFromWorkspace: (0, _1.createRemoveUserFromWorkspace)(db_1.prisma),
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)(db_1.prisma),
51
- getUser: (0, _1.createGetUser)(db_1.prisma),
52
- deleteUser: (0, _1.createDeleteUser)(db_1.prisma),
53
- updateUser: (0, _1.createUpdateUser)(db_1.prisma),
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)(db_1.prisma),
56
- deleteApiKey: (0, _1.createDeleteApiKey)(db_1.prisma),
57
- listApiKeys: (0, _1.createListApiKeys)(db_1.prisma),
58
- regenerateApiKey: (0, _1.createRegenerateApiKey)(db_1.prisma),
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)(db_1.prisma, identityConfig),
61
- exchangeCredentials: (0, _1.createExchangeCredentials)(db_1.prisma, identityConfig),
62
- exchangeOauth2Code: (0, createExchangeOauth2Code_1.createExchangeOauth2Code)(db_1.prisma, identityConfig),
63
- exchangeRefreshToken: (0, _1.createExchangeRefreshToken)(db_1.prisma, identityConfig),
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 (envs_1.IDENTITY_USER_VERIFICATION_REQUIRED) {
71
- service.handlers.sendVerificationCode = (0, verification_1.createSendVerificationCode)(db_1.prisma, identityConfig);
72
- service.handlers.verifyCode = (0, verification_1.createVerifyCode)(db_1.prisma);
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 db_1.prisma.user.upsert({
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 db_1.prisma.workspace.upsert({
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
- accessKeySecret: string;
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, import("../generated/@prisma/client").Prisma.PrismaClientOptions> & import("../generated/@prisma/client/runtime/library").PrismaPromise<{
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 db_1.prisma.workspaceMember.update({
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: envs_1.IDENTITY_WORKSPACE_INVITE_EXPIRATION
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: `${envs_1.IDENTITY_WORKSPACE_INVITATION_URL}?token=${inviteeToken}`
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: envs_1.IDENTITY_WORKSPACE_INVITE_EXPIRATION
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: `${envs_1.IDENTITY_WORKSPACE_INVITATION_URL}?token=${inviteeToken}`
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.5",
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.5",
24
- "@fonoster/logger": "^0.9.0",
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": "c2c7c641b52b1ec85375484104b9e150a6b3afd9"
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");