Skip to content

Commit 5a18b84

Browse files
authored
Add security policy to template endpoints (#2095)
Fixes OPS-3881.
1 parent d0194c6 commit 5a18b84

2 files changed

Lines changed: 18 additions & 1 deletion

File tree

packages/server/api/src/app/flow-template/flow-template.controller.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@ import {
22
FastifyPluginAsyncTypebox,
33
Type,
44
} from '@fastify/type-provider-typebox';
5-
import { OpenOpsId, PrincipalType } from '@openops/shared';
5+
import { OpenOpsId, Permission, PrincipalType } from '@openops/shared';
66
import { FastifyRequest } from 'fastify';
77
import { entitiesMustBeOwnedByCurrentProject } from '../authentication/authorization';
8+
import { getProjectScopedRoutePolicy } from '../core/security/route-policies/route-security-policy-factory';
89
import { flowTemplateService } from './flow-template.service';
910

1011
export const flowTemplateController: FastifyPluginAsyncTypebox = async (
@@ -17,6 +18,10 @@ export const flowTemplateController: FastifyPluginAsyncTypebox = async (
1718
{
1819
config: {
1920
allowedPrincipals: [PrincipalType.USER, PrincipalType.SERVICE],
21+
security: getProjectScopedRoutePolicy({
22+
allowedPrincipals: [PrincipalType.USER, PrincipalType.SERVICE],
23+
permission: Permission.READ_TEMPLATE,
24+
}),
2025
},
2126
schema: {
2227
tags: ['flow-templates'],
@@ -53,6 +58,10 @@ export const flowTemplateController: FastifyPluginAsyncTypebox = async (
5358
{
5459
config: {
5560
allowedPrincipals: [PrincipalType.USER, PrincipalType.SERVICE],
61+
security: getProjectScopedRoutePolicy({
62+
allowedPrincipals: [PrincipalType.USER, PrincipalType.SERVICE],
63+
permission: Permission.READ_TEMPLATE,
64+
}),
5665
},
5766
schema: {
5867
tags: ['flow-templates'],
@@ -73,6 +82,10 @@ export const flowTemplateController: FastifyPluginAsyncTypebox = async (
7382
{
7483
config: {
7584
allowedPrincipals: [PrincipalType.USER, PrincipalType.SERVICE],
85+
security: getProjectScopedRoutePolicy({
86+
allowedPrincipals: [PrincipalType.USER, PrincipalType.SERVICE],
87+
permission: Permission.WRITE_TEMPLATE,
88+
}),
7689
},
7790
schema: {
7891
body: {

packages/shared/src/lib/common/security/permission.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ export enum Permission {
2222
WRITE_FOLDER = 'folder:write',
2323
DELETE_FOLDER = 'folder:delete',
2424

25+
// Templates
26+
READ_TEMPLATE = 'template:read',
27+
WRITE_TEMPLATE = 'template:write',
28+
2529
// Users
2630
WRITE_USER = 'user:write',
2731

0 commit comments

Comments
 (0)