Skip to content

Commit 022c2a8

Browse files
Improve list endpoints permissions check and address PR comments
1 parent b53348a commit 022c2a8

File tree

35 files changed

+860
-170
lines changed

35 files changed

+860
-170
lines changed

backend/src/ee/services/permission/default-roles.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ const buildAdminPermissionRules = () => {
7474
ProjectPermissionCertificateAuthorityActions.Create,
7575
ProjectPermissionCertificateAuthorityActions.Edit,
7676
ProjectPermissionCertificateAuthorityActions.Delete,
77-
ProjectPermissionCertificateAuthorityActions.List,
7877
ProjectPermissionCertificateAuthorityActions.Renew,
7978
ProjectPermissionCertificateAuthorityActions.SignIntermediate
8079
],
@@ -111,15 +110,14 @@ const buildAdminPermissionRules = () => {
111110
ProjectPermissionCertificateActions.Delete,
112111
ProjectPermissionCertificateActions.ReadPrivateKey,
113112
ProjectPermissionCertificateActions.Import,
114-
ProjectPermissionCertificateActions.List
113+
ProjectPermissionCertificateActions.Read
115114
],
116115
ProjectPermissionSub.Certificates
117116
);
118117

119118
can(
120119
[
121120
ProjectPermissionCertificateProfileActions.Read,
122-
ProjectPermissionCertificateProfileActions.List,
123121
ProjectPermissionCertificateProfileActions.Edit,
124122
ProjectPermissionCertificateProfileActions.Create,
125123
ProjectPermissionCertificateProfileActions.Delete,
@@ -487,15 +485,14 @@ const buildMemberPermissionRules = () => {
487485
ProjectPermissionCertificateActions.Create,
488486
ProjectPermissionCertificateActions.Delete,
489487
ProjectPermissionCertificateActions.Import,
490-
ProjectPermissionCertificateActions.List
488+
ProjectPermissionCertificateActions.Read
491489
],
492490
ProjectPermissionSub.Certificates
493491
);
494492

495493
can(
496494
[
497495
ProjectPermissionCertificateProfileActions.Read,
498-
ProjectPermissionCertificateProfileActions.List,
499496
ProjectPermissionCertificateProfileActions.Edit,
500497
ProjectPermissionCertificateProfileActions.Create,
501498
ProjectPermissionCertificateProfileActions.Delete
@@ -621,7 +618,6 @@ const buildViewerPermissionRules = () => {
621618
can(ProjectPermissionActions.Read, ProjectPermissionSub.IpAllowList);
622619
can(ProjectPermissionCertificateAuthorityActions.Read, ProjectPermissionSub.CertificateAuthorities);
623620
can(ProjectPermissionCertificateActions.Read, ProjectPermissionSub.Certificates);
624-
can(ProjectPermissionCertificateActions.List, ProjectPermissionSub.Certificates);
625621
can(ProjectPermissionPkiTemplateActions.Read, ProjectPermissionSub.CertificateTemplates);
626622
can(ProjectPermissionCmekActions.Read, ProjectPermissionSub.Cmek);
627623
can(ProjectPermissionActions.Read, ProjectPermissionSub.SshCertificates);

backend/src/ee/services/permission/project-permission.ts

Lines changed: 14 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ export enum ProjectPermissionCertificateAuthorityActions {
2828
Create = "create",
2929
Edit = "edit",
3030
Delete = "delete",
31-
List = "list",
3231
Renew = "renew",
3332
SignIntermediate = "sign-intermediate"
3433
}
@@ -38,7 +37,6 @@ export enum ProjectPermissionCertificateActions {
3837
Create = "create",
3938
Edit = "edit",
4039
Delete = "delete",
41-
List = "list",
4240
ReadPrivateKey = "read-private-key",
4341
Import = "import"
4442
}
@@ -129,7 +127,6 @@ export enum ProjectPermissionPkiSubscriberActions {
129127

130128
export enum ProjectPermissionCertificateProfileActions {
131129
Read = "read",
132-
List = "list",
133130
Create = "create",
134131
Edit = "edit",
135132
Delete = "delete",
@@ -153,7 +150,6 @@ export enum ProjectPermissionPkiSyncActions {
153150
Create = "create",
154151
Edit = "edit",
155152
Delete = "delete",
156-
List = "list",
157153
SyncCertificates = "sync-certificates",
158154
ImportCertificates = "import-certificates",
159155
RemoveCertificates = "remove-certificates"
@@ -256,7 +252,6 @@ export enum ProjectPermissionSub {
256252
CertificateAuthorities = "certificate-authorities",
257253
Certificates = "certificates",
258254
CertificateTemplates = "certificate-templates",
259-
CertificateTemplatesV2 = "certificate-templates-v2",
260255
SshCertificateAuthorities = "ssh-certificate-authorities",
261256
SshCertificates = "ssh-certificates",
262257
SshCertificateTemplates = "ssh-certificate-templates",
@@ -453,13 +448,6 @@ export type ProjectPermissionSet =
453448
| (ForcedSubject<ProjectPermissionSub.CertificateTemplates> & PkiTemplateSubjectFields)
454449
)
455450
]
456-
| [
457-
ProjectPermissionActions,
458-
(
459-
| ProjectPermissionSub.CertificateTemplatesV2
460-
| (ForcedSubject<ProjectPermissionSub.CertificateTemplatesV2> & CertificateTemplateV2SubjectFields)
461-
)
462-
]
463451
| [ProjectPermissionActions, ProjectPermissionSub.SshCertificateAuthorities]
464452
| [ProjectPermissionActions, ProjectPermissionSub.SshCertificates]
465453
| [ProjectPermissionActions, ProjectPermissionSub.SshCertificateTemplates]
@@ -640,6 +628,17 @@ const PkiSyncConditionSchema = z
640628
[PermissionConditionOperators.$GLOB]: PermissionConditionSchema[PermissionConditionOperators.$GLOB]
641629
})
642630
.partial()
631+
]),
632+
subscriberName: z.union([
633+
z.string(),
634+
z
635+
.object({
636+
[PermissionConditionOperators.$EQ]: PermissionConditionSchema[PermissionConditionOperators.$EQ],
637+
[PermissionConditionOperators.$NEQ]: PermissionConditionSchema[PermissionConditionOperators.$NEQ],
638+
[PermissionConditionOperators.$IN]: PermissionConditionSchema[PermissionConditionOperators.$IN],
639+
[PermissionConditionOperators.$GLOB]: PermissionConditionSchema[PermissionConditionOperators.$GLOB]
640+
})
641+
.partial()
643642
])
644643
})
645644
.partial();
@@ -756,6 +755,7 @@ const PkiTemplateConditionSchema = z
756755
z
757756
.object({
758757
[PermissionConditionOperators.$EQ]: PermissionConditionSchema[PermissionConditionOperators.$EQ],
758+
[PermissionConditionOperators.$NEQ]: PermissionConditionSchema[PermissionConditionOperators.$NEQ],
759759
[PermissionConditionOperators.$GLOB]: PermissionConditionSchema[PermissionConditionOperators.$GLOB],
760760
[PermissionConditionOperators.$IN]: PermissionConditionSchema[PermissionConditionOperators.$IN]
761761
})
@@ -870,21 +870,6 @@ const CertificateConditionSchema = z
870870
.partial()
871871
]),
872872
status: z.union([
873-
z.string(),
874-
z
875-
.object({
876-
[PermissionConditionOperators.$EQ]: PermissionConditionSchema[PermissionConditionOperators.$EQ],
877-
[PermissionConditionOperators.$NEQ]: PermissionConditionSchema[PermissionConditionOperators.$NEQ],
878-
[PermissionConditionOperators.$IN]: PermissionConditionSchema[PermissionConditionOperators.$IN]
879-
})
880-
.partial()
881-
])
882-
})
883-
.partial();
884-
885-
const CertificateProfileConditionSchema = z
886-
.object({
887-
slug: z.union([
888873
z.string(),
889874
z
890875
.object({
@@ -898,9 +883,9 @@ const CertificateProfileConditionSchema = z
898883
})
899884
.partial();
900885

901-
const CertificateTemplateV2ConditionSchema = z
886+
const CertificateProfileConditionSchema = z
902887
.object({
903-
name: z.union([
888+
slug: z.union([
904889
z.string(),
905890
z
906891
.object({
@@ -1308,16 +1293,6 @@ export const ProjectPermissionV2Schema = z.discriminatedUnion("subject", [
13081293
"When specified, only matching conditions will be allowed to access given resource."
13091294
).optional()
13101295
}),
1311-
z.object({
1312-
subject: z.literal(ProjectPermissionSub.CertificateTemplatesV2).describe("The entity this permission pertains to."),
1313-
inverted: z.boolean().optional().describe("Whether rule allows or forbids."),
1314-
action: CASL_ACTION_SCHEMA_NATIVE_ENUM(ProjectPermissionActions).describe(
1315-
"Describe what action an entity can take."
1316-
),
1317-
conditions: CertificateTemplateV2ConditionSchema.describe(
1318-
"When specified, only matching conditions will be allowed to access given resource."
1319-
).optional()
1320-
}),
13211296
...GeneralPermissionSchema
13221297
]);
13231298

0 commit comments

Comments
 (0)