Fix merge conflicts

This commit is contained in:
Tuan Dang
2023-09-13 09:35:53 +01:00
43 changed files with 168 additions and 98 deletions
+1 -1
View File
@@ -1 +1 @@
.github/resources/docker-compose.be-test.yml:generic-api-key:16 .github/resources/docker-compose.be-test.yml:generic-api-key:16
+1 -1
View File
@@ -8,7 +8,7 @@ import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
getUserProjectPermissions getUserProjectPermissions
} from "../../services/ProjectRoleService"; } from "../../ee/services/ProjectRoleService";
import { ForbiddenError } from "@casl/ability"; import { ForbiddenError } from "@casl/ability";
import { BadRequestError } from "../../utils/errors"; import { BadRequestError } from "../../utils/errors";
@@ -24,7 +24,7 @@ import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
getUserProjectPermissions getUserProjectPermissions
} from "../../services/ProjectRoleService"; } from "../../ee/services/ProjectRoleService";
import { ForbiddenError } from "@casl/ability"; import { ForbiddenError } from "@casl/ability";
import { getIntegrationAuthAccessHelper } from "../../helpers"; import { getIntegrationAuthAccessHelper } from "../../helpers";
import { ObjectId } from "mongodb"; import { ObjectId } from "mongodb";
@@ -155,18 +155,20 @@ export const saveIntegrationToken = async (req: Request, res: Response) => {
namespace, namespace,
algorithm: ALGORITHM_AES_256_GCM, algorithm: ALGORITHM_AES_256_GCM,
keyEncoding: ENCODING_SCHEME_UTF8, keyEncoding: ENCODING_SCHEME_UTF8,
...(integration === INTEGRATION_GCP_SECRET_MANAGER ? { ...(integration === INTEGRATION_GCP_SECRET_MANAGER
metadata: { ? {
authMethod: "serviceAccount" metadata: {
} authMethod: "serviceAccount"
} : {}) }
}
: {})
}, },
{ {
new: true, new: true,
upsert: true upsert: true
} }
); );
// encrypt and save integration access details // encrypt and save integration access details
if (refreshToken) { if (refreshToken) {
await exchangeRefresh({ await exchangeRefresh({
@@ -705,14 +707,14 @@ export const getIntegrationAuthNorthflankSecretGroups = async (req: Request, res
/** /**
* Return list of build configs for TeamCity project with id [appId] * Return list of build configs for TeamCity project with id [appId]
* @param req * @param req
* @param res * @param res
* @returns * @returns
*/ */
export const getIntegrationAuthTeamCityBuildConfigs = async (req: Request, res: Response) => { export const getIntegrationAuthTeamCityBuildConfigs = async (req: Request, res: Response) => {
const { const {
params: { integrationAuthId,appId }, params: { integrationAuthId, appId }
} = await validateRequest(reqValidator.GetIntegrationAuthTeamCityBuildConfigsV1 , req); } = await validateRequest(reqValidator.GetIntegrationAuthTeamCityBuildConfigsV1, req);
// TODO(akhilmhdh): remove class -> static function path and makes these into reusable independent functions // TODO(akhilmhdh): remove class -> static function path and makes these into reusable independent functions
const { integrationAuth } = await getIntegrationAuthAccessHelper({ const { integrationAuth } = await getIntegrationAuthAccessHelper({
@@ -727,7 +729,7 @@ export const getIntegrationAuthTeamCityBuildConfigs = async (req: Request, res:
ProjectPermissionActions.Read, ProjectPermissionActions.Read,
ProjectPermissionSub.Integrations ProjectPermissionSub.Integrations
); );
interface TeamCityBuildConfig { interface TeamCityBuildConfig {
id: string; id: string;
name: string; name: string;
@@ -736,27 +738,29 @@ export const getIntegrationAuthTeamCityBuildConfigs = async (req: Request, res:
href: string; href: string;
webUrl: string; webUrl: string;
} }
interface GetTeamCityBuildConfigsRes { interface GetTeamCityBuildConfigsRes {
count: number; count: number;
href: string; href: string;
buildType: TeamCityBuildConfig[]; buildType: TeamCityBuildConfig[];
} }
if (appId && appId !== "") { if (appId && appId !== "") {
const { data: { buildType } } = ( const {
await standardRequest.get<GetTeamCityBuildConfigsRes>(`${req.integrationAuth.url}/app/rest/buildTypes`, { data: { buildType }
} = await standardRequest.get<GetTeamCityBuildConfigsRes>(
`${req.integrationAuth.url}/app/rest/buildTypes`,
{
params: { params: {
locator: `project:${appId}` locator: `project:${appId}`
}, },
headers: { headers: {
Authorization: `Bearer ${req.accessToken}`, Authorization: `Bearer ${req.accessToken}`,
Accept: "application/json", Accept: "application/json"
}, }
}) }
); );
return res.status(200).send({ return res.status(200).send({
buildConfigs: buildType.map((buildConfig) => ({ buildConfigs: buildType.map((buildConfig) => ({
name: buildConfig.name, name: buildConfig.name,
@@ -764,11 +768,11 @@ export const getIntegrationAuthTeamCityBuildConfigs = async (req: Request, res:
})) }))
}); });
} }
return res.status(200).send({ return res.status(200).send({
buildConfigs: [] buildConfigs: []
}); });
} };
/** /**
* Delete integration authorization with id [integrationAuthId] * Delete integration authorization with id [integrationAuthId]
@@ -14,7 +14,7 @@ import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
getUserProjectPermissions getUserProjectPermissions
} from "../../services/ProjectRoleService"; } from "../../ee/services/ProjectRoleService";
import { ForbiddenError } from "@casl/ability"; import { ForbiddenError } from "@casl/ability";
/** /**
+1 -1
View File
@@ -10,7 +10,7 @@ import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
getUserProjectPermissions getUserProjectPermissions
} from "../../services/ProjectRoleService"; } from "../../ee/services/ProjectRoleService";
import { ForbiddenError } from "@casl/ability"; import { ForbiddenError } from "@casl/ability";
/** /**
@@ -13,9 +13,9 @@ import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
getUserProjectPermissions getUserProjectPermissions
} from "../../services/ProjectRoleService"; } from "../../ee/services/ProjectRoleService";
import { ForbiddenError } from "@casl/ability"; import { ForbiddenError } from "@casl/ability";
import Role from "../../models/role"; import Role from "../../ee/models/role";
import { BadRequestError } from "../../utils/errors"; import { BadRequestError } from "../../utils/errors";
import { InviteUserToWorkspaceV1 } from "../../validation/workspace"; import { InviteUserToWorkspaceV1 } from "../../validation/workspace";
@@ -22,7 +22,7 @@ import {
OrgPermissionActions, OrgPermissionActions,
OrgPermissionSubjects, OrgPermissionSubjects,
getUserOrgPermissions getUserOrgPermissions
} from "../../services/RoleService"; } from "../../ee/services/RoleService";
import { ForbiddenError } from "@casl/ability"; import { ForbiddenError } from "@casl/ability";
/** /**
@@ -17,7 +17,7 @@ import {
OrgPermissionActions, OrgPermissionActions,
OrgPermissionSubjects, OrgPermissionSubjects,
getUserOrgPermissions getUserOrgPermissions
} from "../../services/RoleService"; } from "../../ee/services/RoleService";
import { OrganizationNotFoundError } from "../../utils/errors"; import { OrganizationNotFoundError } from "../../utils/errors";
import { ForbiddenError } from "@casl/ability"; import { ForbiddenError } from "@casl/ability";
@@ -16,7 +16,7 @@ import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
getUserProjectPermissions getUserProjectPermissions
} from "../../services/ProjectRoleService"; } from "../../ee/services/ProjectRoleService";
import { ForbiddenError, subject } from "@casl/ability"; import { ForbiddenError, subject } from "@casl/ability";
export const createSecretImp = async (req: Request, res: Response) => { export const createSecretImp = async (req: Request, res: Response) => {
@@ -4,9 +4,13 @@ import crypto from "crypto";
import { Types } from "mongoose"; import { Types } from "mongoose";
import { OrganizationNotFoundError, UnauthorizedRequestError } from "../../utils/errors"; import { OrganizationNotFoundError, UnauthorizedRequestError } from "../../utils/errors";
import GitAppOrganizationInstallation from "../../ee/models/gitAppOrganizationInstallation"; import GitAppOrganizationInstallation from "../../ee/models/gitAppOrganizationInstallation";
import { scanGithubFullRepoForSecretLeaks } from "../../queues/secret-scanning/githubScanFullRepository" import { scanGithubFullRepoForSecretLeaks } from "../../queues/secret-scanning/githubScanFullRepository";
import { getSecretScanningGitAppId, getSecretScanningPrivateKey } from "../../config"; import { getSecretScanningGitAppId, getSecretScanningPrivateKey } from "../../config";
import GitRisks, { STATUS_RESOLVED_FALSE_POSITIVE, STATUS_RESOLVED_NOT_REVOKED, STATUS_RESOLVED_REVOKED } from "../../ee/models/gitRisks"; import GitRisks, {
STATUS_RESOLVED_FALSE_POSITIVE,
STATUS_RESOLVED_NOT_REVOKED,
STATUS_RESOLVED_REVOKED
} from "../../ee/models/gitRisks";
import { ProbotOctokit } from "probot"; import { ProbotOctokit } from "probot";
import { Organization } from "../../models"; import { Organization } from "../../models";
import { validateRequest } from "../../helpers/validation"; import { validateRequest } from "../../helpers/validation";
@@ -15,7 +19,7 @@ import {
OrgPermissionActions, OrgPermissionActions,
OrgPermissionSubjects, OrgPermissionSubjects,
getUserOrgPermissions getUserOrgPermissions
} from "../../services/RoleService"; } from "../../ee/services/RoleService";
import { ForbiddenError } from "@casl/ability"; import { ForbiddenError } from "@casl/ability";
export const createInstallationSession = async (req: Request, res: Response) => { export const createInstallationSession = async (req: Request, res: Response) => {
@@ -92,15 +96,21 @@ export const linkInstallationToOrganization = async (req: Request, res: Response
appId: await getSecretScanningGitAppId(), appId: await getSecretScanningGitAppId(),
privateKey: await getSecretScanningPrivateKey(), privateKey: await getSecretScanningPrivateKey(),
installationId: installationId.toString() installationId: installationId.toString()
}, }
}); });
const { data: { repositories }}= await octokit.apps.listReposAccessibleToInstallation() const {
data: { repositories }
} = await octokit.apps.listReposAccessibleToInstallation();
for (const repository of repositories) { for (const repository of repositories) {
scanGithubFullRepoForSecretLeaks({organizationId: installationSession.organization.toString(), installationId, repository: {id: repository.id, fullName: repository.full_name}}) scanGithubFullRepoForSecretLeaks({
organizationId: installationSession.organization.toString(),
installationId,
repository: { id: repository.id, fullName: repository.full_name }
});
} }
res.json(installationLink) res.json(installationLink);
} };
export const getCurrentOrganizationInstallationStatus = async (req: Request, res: Response) => { export const getCurrentOrganizationInstallationStatus = async (req: Request, res: Response) => {
const { organizationId } = req.params; const { organizationId } = req.params;
@@ -6,7 +6,7 @@ import { EEAuditLogService, EESecretService } from "../../ee/services";
import { isValidScope } from "../../helpers/secrets"; import { isValidScope } from "../../helpers/secrets";
import { validateRequest } from "../../helpers/validation"; import { validateRequest } from "../../helpers/validation";
import { Secret, ServiceTokenData } from "../../models"; import { Secret, ServiceTokenData } from "../../models";
import {Folder} from "../../models/folder"; import { Folder } from "../../models/folder";
import { import {
appendFolder, appendFolder,
deleteFolderById, deleteFolderById,
@@ -21,7 +21,7 @@ import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
getUserProjectPermissions getUserProjectPermissions
} from "../../services/ProjectRoleService"; } from "../../ee/services/ProjectRoleService";
import { BadRequestError, UnauthorizedRequestError } from "../../utils/errors"; import { BadRequestError, UnauthorizedRequestError } from "../../utils/errors";
import * as reqValidator from "../../validation/folders"; import * as reqValidator from "../../validation/folders";
@@ -13,7 +13,7 @@ import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
getUserProjectPermissions getUserProjectPermissions
} from "../../services/ProjectRoleService"; } from "../../ee/services/ProjectRoleService";
import { ForbiddenError } from "@casl/ability"; import { ForbiddenError } from "@casl/ability";
export const createWebhook = async (req: Request, res: Response) => { export const createWebhook = async (req: Request, res: Response) => {
@@ -18,7 +18,7 @@ import {
OrgPermissionActions, OrgPermissionActions,
OrgPermissionSubjects, OrgPermissionSubjects,
getUserOrgPermissions getUserOrgPermissions
} from "../../services/RoleService"; } from "../../ee/services/RoleService";
import { ForbiddenError } from "@casl/ability"; import { ForbiddenError } from "@casl/ability";
import { validateRequest } from "../../helpers/validation"; import { validateRequest } from "../../helpers/validation";
import * as reqValidator from "../../validation"; import * as reqValidator from "../../validation";
@@ -26,7 +26,7 @@ import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
getUserProjectPermissions getUserProjectPermissions
} from "../../services/ProjectRoleService"; } from "../../ee/services/ProjectRoleService";
/** /**
* Return public keys of members of workspace with id [workspaceId] * Return public keys of members of workspace with id [workspaceId]
@@ -19,7 +19,7 @@ import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
getUserProjectPermissions getUserProjectPermissions
} from "../../services/ProjectRoleService"; } from "../../ee/services/ProjectRoleService";
import { ForbiddenError } from "@casl/ability"; import { ForbiddenError } from "@casl/ability";
/** /**
@@ -3,7 +3,7 @@ import { Types } from "mongoose";
import { Membership, MembershipOrg, ServiceAccount, Workspace } from "../../models"; import { Membership, MembershipOrg, ServiceAccount, Workspace } from "../../models";
import { deleteMembershipOrg } from "../../helpers/membershipOrg"; import { deleteMembershipOrg } from "../../helpers/membershipOrg";
import { updateSubscriptionOrgQuantity } from "../../helpers/organization"; import { updateSubscriptionOrgQuantity } from "../../helpers/organization";
import Role from "../../models/role"; import Role from "../../ee/models/role";
import { BadRequestError } from "../../utils/errors"; import { BadRequestError } from "../../utils/errors";
import { CUSTOM } from "../../variables"; import { CUSTOM } from "../../variables";
import * as reqValidator from "../../validation/organization"; import * as reqValidator from "../../validation/organization";
@@ -12,7 +12,7 @@ import {
OrgPermissionActions, OrgPermissionActions,
OrgPermissionSubjects, OrgPermissionSubjects,
getUserOrgPermissions getUserOrgPermissions
} from "../../services/RoleService"; } from "../../ee/services/RoleService";
import { ForbiddenError } from "@casl/ability"; import { ForbiddenError } from "@casl/ability";
/** /**
@@ -44,7 +44,7 @@ import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
getUserProjectPermissions getUserProjectPermissions
} from "../../services/ProjectRoleService"; } from "../../ee/services/ProjectRoleService";
import { ForbiddenError, subject } from "@casl/ability"; import { ForbiddenError, subject } from "@casl/ability";
/** /**
@@ -12,7 +12,7 @@ import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
getUserProjectPermissions getUserProjectPermissions
} from "../../services/ProjectRoleService"; } from "../../ee/services/ProjectRoleService";
import { ForbiddenError } from "@casl/ability"; import { ForbiddenError } from "@casl/ability";
import { Types } from "mongoose"; import { Types } from "mongoose";
+1 -1
View File
@@ -8,7 +8,7 @@ import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
getUserProjectPermissions getUserProjectPermissions
} from "../../services/ProjectRoleService"; } from "../../ee/services/ProjectRoleService";
import * as reqValidator from "../../validation/tags"; import * as reqValidator from "../../validation/tags";
export const createWorkspaceTag = async (req: Request, res: Response) => { export const createWorkspaceTag = async (req: Request, res: Response) => {
@@ -17,7 +17,7 @@ import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
getUserProjectPermissions getUserProjectPermissions
} from "../../services/ProjectRoleService"; } from "../../ee/services/ProjectRoleService";
import { ForbiddenError } from "@casl/ability"; import { ForbiddenError } from "@casl/ability";
interface V2PushSecret { interface V2PushSecret {
@@ -15,7 +15,7 @@ import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
getUserProjectPermissions getUserProjectPermissions
} from "../../services/ProjectRoleService"; } from "../../ee/services/ProjectRoleService";
import { ForbiddenError, subject } from "@casl/ability"; import { ForbiddenError, subject } from "@casl/ability";
import { validateServiceTokenDataClientForWorkspace } from "../../validation"; import { validateServiceTokenDataClientForWorkspace } from "../../validation";
import { PERMISSION_READ_SECRETS, PERMISSION_WRITE_SECRETS } from "../../variables"; import { PERMISSION_READ_SECRETS, PERMISSION_WRITE_SECRETS } from "../../variables";
@@ -3,7 +3,7 @@ import { Types } from "mongoose";
import { validateRequest } from "../../helpers/validation"; import { validateRequest } from "../../helpers/validation";
import { Secret } from "../../models"; import { Secret } from "../../models";
import { SecretService } from "../../services"; import { SecretService } from "../../services";
import { getUserProjectPermissions } from "../../services/ProjectRoleService"; import { getUserProjectPermissions } from "../../ee/services/ProjectRoleService";
import { UnauthorizedRequestError } from "../../utils/errors"; import { UnauthorizedRequestError } from "../../utils/errors";
import * as reqValidator from "../../validation/workspace"; import * as reqValidator from "../../validation/workspace";
+12 -10
View File
@@ -7,15 +7,17 @@ import * as workspaceController from "./workspaceController";
import * as actionController from "./actionController"; import * as actionController from "./actionController";
import * as membershipController from "./membershipController"; import * as membershipController from "./membershipController";
import * as cloudProductsController from "./cloudProductsController"; import * as cloudProductsController from "./cloudProductsController";
import * as roleController from "./roleController";
export { export {
secretController, secretController,
secretSnapshotController, secretSnapshotController,
organizationsController, organizationsController,
ssoController, ssoController,
usersController, usersController,
workspaceController, workspaceController,
actionController, actionController,
membershipController, membershipController,
cloudProductsController, cloudProductsController,
} roleController
};
@@ -9,7 +9,7 @@ import {
OrgPermissionActions, OrgPermissionActions,
OrgPermissionSubjects, OrgPermissionSubjects,
getUserOrgPermissions getUserOrgPermissions
} from "../../../services/RoleService"; } from "../../services/RoleService";
import { ForbiddenError } from "@casl/ability"; import { ForbiddenError } from "@casl/ability";
import { Organization } from "../../../models"; import { Organization } from "../../../models";
import { OrganizationNotFoundError } from "../../../utils/errors"; import { OrganizationNotFoundError } from "../../../utils/errors";
@@ -6,7 +6,7 @@ import {
GetUserPermission, GetUserPermission,
GetUserProjectPermission, GetUserProjectPermission,
UpdateRoleSchema UpdateRoleSchema
} from "../../validation"; } from "../../validation/role";
import { import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
@@ -22,9 +22,9 @@ import {
getUserOrgPermissions, getUserOrgPermissions,
memberPermissions memberPermissions
} from "../../services/RoleService"; } from "../../services/RoleService";
import { BadRequestError } from "../../utils/errors"; import { BadRequestError } from "../../../utils/errors";
import Role from "../../models/role"; import Role from "../../models/role";
import { validateRequest } from "../../helpers/validation"; import { validateRequest } from "../../../helpers/validation";
import { packRules } from "@casl/ability/extra"; import { packRules } from "@casl/ability/extra";
export const createRole = async (req: Request, res: Response) => { export const createRole = async (req: Request, res: Response) => {
@@ -6,7 +6,7 @@ import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
getUserProjectPermissions getUserProjectPermissions
} from "../../../services/ProjectRoleService"; } from "../../services/ProjectRoleService";
import { BadRequestError } from "../../../utils/errors"; import { BadRequestError } from "../../../utils/errors";
import * as reqValidator from "../../../validation"; import * as reqValidator from "../../../validation";
import { SecretVersion } from "../../models"; import { SecretVersion } from "../../models";
@@ -5,7 +5,7 @@ import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
getUserProjectPermissions getUserProjectPermissions
} from "../../../services/ProjectRoleService"; } from "../../services/ProjectRoleService";
import * as reqValidator from "../../../validation/secretSnapshot"; import * as reqValidator from "../../../validation/secretSnapshot";
import { ISecretVersion, SecretSnapshot, TFolderRootVersionSchema } from "../../models"; import { ISecretVersion, SecretSnapshot, TFolderRootVersionSchema } from "../../models";
@@ -14,7 +14,7 @@ import {
OrgPermissionActions, OrgPermissionActions,
OrgPermissionSubjects, OrgPermissionSubjects,
getUserOrgPermissions getUserOrgPermissions
} from "../../../services/RoleService"; } from "../../services/RoleService";
import { ForbiddenError } from "@casl/ability"; import { ForbiddenError } from "@casl/ability";
/** /**
@@ -39,7 +39,7 @@ import {
ProjectPermissionActions, ProjectPermissionActions,
ProjectPermissionSub, ProjectPermissionSub,
getUserProjectPermissions getUserProjectPermissions
} from "../../../services/ProjectRoleService"; } from "../../services/ProjectRoleService";
import { ForbiddenError } from "@casl/ability"; import { ForbiddenError } from "@casl/ability";
/** /**
+12 -10
View File
@@ -7,15 +7,17 @@ import workspace from "./workspace";
import action from "./action"; import action from "./action";
import cloudProducts from "./cloudProducts"; import cloudProducts from "./cloudProducts";
import secretScanning from "./secretScanning"; import secretScanning from "./secretScanning";
import roles from "./role";
export { export {
secret, secret,
secretSnapshot, secretSnapshot,
organizations, organizations,
sso, sso,
users, users,
workspace, workspace,
action, action,
cloudProducts, cloudProducts,
secretScanning secretScanning,
} roles
};
@@ -1,7 +1,7 @@
import express from "express"; import express from "express";
import { roleController } from "../../controllers/v1"; import { roleController } from "../../controllers/v1";
import { requireAuth } from "../../middleware"; import { requireAuth } from "../../../middleware";
import { AuthMode } from "../../variables"; import { AuthMode } from "../../../variables";
const router = express.Router(); const router = express.Router();
@@ -6,9 +6,9 @@ import {
buildMongoQueryMatcher, buildMongoQueryMatcher,
createMongoAbility createMongoAbility
} from "@casl/ability"; } from "@casl/ability";
import { Membership } from "../models"; import { Membership } from "../../models";
import { IRole } from "../models/role"; import { IRole } from "../models/role";
import { BadRequestError, UnauthorizedRequestError } from "../utils/errors"; import { BadRequestError, UnauthorizedRequestError } from "../../utils/errors";
import { FieldCondition, FieldInstruction, JsInterpreter } from "@ucast/mongo2js"; import { FieldCondition, FieldInstruction, JsInterpreter } from "@ucast/mongo2js";
import picomatch from "picomatch"; import picomatch from "picomatch";
@@ -1,8 +1,8 @@
import { AbilityBuilder, MongoAbility, RawRuleOf, createMongoAbility } from "@casl/ability"; import { AbilityBuilder, MongoAbility, RawRuleOf, createMongoAbility } from "@casl/ability";
import { MembershipOrg } from "../models"; import { MembershipOrg } from "../../models";
import { IRole } from "../models/role"; import { IRole } from "../models/role";
import { BadRequestError, UnauthorizedRequestError } from "../utils/errors"; import { BadRequestError, UnauthorizedRequestError } from "../../utils/errors";
import { ACCEPTED } from "../variables"; import { ACCEPTED } from "../../variables";
import { conditionsMatcher } from "./ProjectRoleService"; import { conditionsMatcher } from "./ProjectRoleService";
export enum OrgPermissionActions { export enum OrgPermissionActions {
+1 -1
View File
@@ -24,6 +24,7 @@ import {
secretSnapshot as eeSecretSnapshotRouter, secretSnapshot as eeSecretSnapshotRouter,
users as eeUsersRouter, users as eeUsersRouter,
workspace as eeWorkspaceRouter, workspace as eeWorkspaceRouter,
roles as v1RoleRouter,
secretScanning as v1SecretScanningRouter secretScanning as v1SecretScanningRouter
} from "./ee/routes/v1"; } from "./ee/routes/v1";
import { import {
@@ -37,7 +38,6 @@ import {
membership as v1MembershipRouter, membership as v1MembershipRouter,
organization as v1OrganizationRouter, organization as v1OrganizationRouter,
password as v1PasswordRouter, password as v1PasswordRouter,
role as v1RoleRouter,
secretImps as v1SecretImpsRouter, secretImps as v1SecretImpsRouter,
secret as v1SecretRouter, secret as v1SecretRouter,
secretsFolder as v1SecretsFolder, secretsFolder as v1SecretsFolder,
-1
View File
@@ -1,5 +1,4 @@
export * from "./user"; export * from "./user";
export * from "./role";
export * from "./workspace"; export * from "./workspace";
export * from "./bot"; export * from "./bot";
export * from "./integration"; export * from "./integration";
Binary file not shown.

After

Width:  |  Height:  |  Size: 741 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 430 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 493 KiB

+28 -1
View File
@@ -7,4 +7,31 @@ This section covers the internals of Infisical including its technical underpinn
<Note> <Note>
Knowledge of this section is recommended but not required to use Infisical. However, if you're operating Infisical, we recommend understanding the internals. Knowledge of this section is recommended but not required to use Infisical. However, if you're operating Infisical, we recommend understanding the internals.
</Note> </Note>
## Learn More
<CardGroup cols={2}>
<Card href="./components" title="Components" icon="boxes-stacked" color="#3775a9">
Learn about the fundamental parts of Infisical
</Card>
<Card href="./flows" title="Flows" icon="bars-staggered" color="#0078d3">
Find out more about the structure of core user flows in Infisical
</Card>
<Card
href="./security"
title="Security"
icon="shield"
color="#3775a9"
>
Read about most common security-related topics and questions
</Card>
<Card
href="./service-tokens"
title="Service tokens"
icon="ticket"
color="#3775a9"
>
Learn best practices for utilizing Infisical sevrice tokens
</Card>
</CardGroup>
+30
View File
@@ -25,6 +25,36 @@ If you choose to setup email service, you need to configure the following SMTP [
Below you will find details on how to configure common email providers: Below you will find details on how to configure common email providers:
<AccordionGroup> <AccordionGroup>
<Accordion title="Resend">
1. Create an account on [Resend](https://resend.com).
2. Add a [Domain](https://resend.com/domains).
![adding resend domain](../../images/email-resend-create-domain.png)
3. Create an [API Key](https://resend.com/api-keys).
![creating resend api key](../../images/email-resend-create-key.png)
4. Go to the [SMTP page](https://resend.com/settings/smtp) and copy the values.
![go to resend smtp settings](../../images/email-resend-smtp-settings.png)
5. With the API Key, you can now set your SMTP environment variables variables:
```
SMTP_HOST=smtp.resend.com
SMTP_USERNAME=resend
SMTP_PASSWORD=YOUR_API_KEY
SMTP_PORT=587
SMTP_SECURE=true
[email protected] # your email address being used to send out emails
SMTP_FROM_NAME=Infisical
```
<Info>
Remember that you will need to restart Infisical for this to work properly.
</Info>
</Accordion>
<Accordion title="Twilio SendGrid"> <Accordion title="Twilio SendGrid">
1. Create an account and configure [SendGrid](https://sendgrid.com) to send emails. 1. Create an account and configure [SendGrid](https://sendgrid.com) to send emails.
+1 -1
View File
@@ -9,7 +9,7 @@ export default function LoginPage() {
const { t } = useTranslation(); const { t } = useTranslation();
return ( return (
<div className="flex h-screen flex-col justify-center bg-gradient-to-tr from-mineshaft-600 via-mineshaft-800 to-bunker-700 px-6 pb-28 "> <div className="flex min-h-screen flex-col justify-center bg-gradient-to-tr from-mineshaft-600 via-mineshaft-800 to-bunker-700 px-6 pb-28 ">
<Head> <Head>
<title>{t("common.head-title", { title: t("login.title") })}</title> <title>{t("common.head-title", { title: t("login.title") })}</title>
<link rel="icon" href="/infisical.ico" /> <link rel="icon" href="/infisical.ico" />
+1 -5
View File
@@ -1,10 +1,6 @@
@tailwind base; @tailwind base;
@tailwind components; @tailwind components;
html {
@apply overflow-hidden;
}
.rdp-day, .rdp-day,
.rdp-nav_button { .rdp-nav_button {
@apply rounded-md hover:text-mineshaft-500; @apply rounded-md hover:text-mineshaft-500;
@@ -16,7 +12,7 @@ html {
} }
.rdp-day_today { .rdp-day_today {
@apply bg-primary/50 hover:bg-primary-600 text-mineshaft-500; @apply bg-primary/50 text-mineshaft-500 hover:bg-primary-600;
} }
@tailwind utilities; @tailwind utilities;