Skip to content

Commit 3ff069b

Browse files
committed
Add spring security for twingraph endpoints
1 parent 535ac00 commit 3ff069b

File tree

1 file changed

+70
-1
lines changed

1 file changed

+70
-1
lines changed

src/main/kotlin/com/cosmotech/api/security/AbstractSecurityConfiguration.kt

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ const val ROLE_SOLUTION_READER = "Solution.Reader"
3737
const val ROLE_SOLUTION_WRITER = "Solution.Writer"
3838
const val ROLE_WORKSPACE_READER = "Workspace.Reader"
3939
const val ROLE_WORKSPACE_WRITER = "Workspace.Writer"
40+
const val ROLE_TWIN_GRAPH_READER = "Twingraph.Reader"
41+
const val ROLE_TWIN_GRAPH_WRITER = "Twingraph.Writer"
4042

4143
// Allowed read scopes
4244
const val SCOPE_CONNECTOR_READ = "SCOPE_csm.connector.read"
@@ -46,6 +48,7 @@ const val SCOPE_SOLUTION_READ = "SCOPE_csm.solution.read"
4648
const val SCOPE_WORKSPACE_READ = "SCOPE_csm.workspace.read"
4749
const val SCOPE_SCENARIO_READ = "SCOPE_csm.scenario.read"
4850
const val SCOPE_SCENARIORUN_READ = "SCOPE_csm.scenariorun.read"
51+
const val SCOPE_TWIN_GRAPH_READ = "SCOPE_csm.twingraph.read"
4952

5053
// Allowed write scopes
5154
const val SCOPE_CONNECTOR_WRITE = "SCOPE_csm.connector.write"
@@ -55,6 +58,7 @@ const val SCOPE_SOLUTION_WRITE = "SCOPE_csm.solution.write"
5558
const val SCOPE_WORKSPACE_WRITE = "SCOPE_csm.workspace.write"
5659
const val SCOPE_SCENARIO_WRITE = "SCOPE_csm.scenario.write"
5760
const val SCOPE_SCENARIORUN_WRITE = "SCOPE_csm.scenariorun.write"
61+
const val SCOPE_TWIN_GRAPH_WRITE = "SCOPE_csm.twingraph.write"
5862

5963
// Endpoints paths
6064
const val PATH_CONNECTORS = "/connectors"
@@ -107,6 +111,30 @@ const val PATH_WORKSPACES = "/organizations/*/workspaces"
107111
const val PATH_WORKSPACES_USERS = "/organizations/*/workspaces/*/users"
108112
val PATHS_WORKSPACES = listOf(PATH_WORKSPACES, PATH_WORKSPACES_USERS)
109113
const val PATH_WORKSPACES_FILES = "/organizations/*/workspaces/*/files"
114+
// Job
115+
const val PATH_JOB_STATUS = "/organizations/*/job/*/status"
116+
val PATHS_JOB = listOf(PATH_JOB_STATUS)
117+
// Twingraph
118+
const val PATH_TWIN_GRAPH_IMPORT = "/organizations/*/twingraph/import"
119+
const val PATH_TWIN_GRAPH = "/organizations/*/twingraph"
120+
const val PATH_TWIN_GRAPHS = "/organizations/*/twingraphs"
121+
const val PATH_TWIN_GRAPH_QUERY = "/organizations/*/twingraph/*/query"
122+
const val PATH_TWIN_GRAPH_BATCH_QUERY = "/organizations/*/twingraph/*/batch-query"
123+
const val PATH_TWIN_GRAPH_BULK_DOWNLOAD = "/organizations/*/twingraph/download"
124+
const val PATH_TWIN_GRAPH_ENTITY = "/organizations/*/twingraph/*/entity"
125+
const val PATH_TWIN_GRAPH_METADATA = "/organizations/*/twingraph/*/metadata"
126+
const val PATH_TWIN_GRAPH_BATCH_ACTIONS = "/organizations/*/twingraph/*/batch"
127+
val PATHS_TWIN_GRAPH =
128+
listOf(
129+
PATH_TWIN_GRAPH_IMPORT,
130+
PATH_TWIN_GRAPH,
131+
PATH_TWIN_GRAPHS,
132+
PATH_TWIN_GRAPH_QUERY,
133+
PATH_TWIN_GRAPH_BATCH_QUERY,
134+
PATH_TWIN_GRAPH_BULK_DOWNLOAD,
135+
PATH_TWIN_GRAPH_ENTITY,
136+
PATH_TWIN_GRAPH_METADATA,
137+
PATH_TWIN_GRAPH_BATCH_ACTIONS)
110138

111139
// Endpoints roles
112140
val endpointSecurityPublic =
@@ -245,7 +273,38 @@ internal fun endpointSecurityReaders(
245273
customOrganizationUser,
246274
customOrganizationViewer),
247275
customAdmin = customOrganizationAdmin),
248-
)
276+
CsmSecurityEndpointsRolesReader(
277+
paths = PATHS_TWIN_GRAPH,
278+
roles =
279+
arrayOf(
280+
ROLE_TWIN_GRAPH_READER,
281+
ROLE_TWIN_GRAPH_WRITER,
282+
ROLE_ORGANIZATION_ADMIN,
283+
ROLE_ORGANIZATION_COLLABORATOR,
284+
ROLE_ORGANIZATION_MODELER,
285+
ROLE_ORGANIZATION_USER,
286+
ROLE_ORGANIZATION_VIEWER,
287+
SCOPE_TWIN_GRAPH_READ,
288+
SCOPE_TWIN_GRAPH_WRITE,
289+
customOrganizationUser,
290+
customOrganizationViewer),
291+
customAdmin = customOrganizationAdmin),
292+
CsmSecurityEndpointsRolesReader(
293+
paths = PATHS_JOB,
294+
roles =
295+
arrayOf(
296+
ROLE_TWIN_GRAPH_READER,
297+
ROLE_TWIN_GRAPH_WRITER,
298+
ROLE_ORGANIZATION_ADMIN,
299+
ROLE_ORGANIZATION_COLLABORATOR,
300+
ROLE_ORGANIZATION_MODELER,
301+
ROLE_ORGANIZATION_USER,
302+
ROLE_ORGANIZATION_VIEWER,
303+
SCOPE_TWIN_GRAPH_READ,
304+
SCOPE_TWIN_GRAPH_WRITE,
305+
customOrganizationUser,
306+
customOrganizationViewer),
307+
customAdmin = customOrganizationAdmin))
249308

250309
@Suppress("LongMethod")
251310
internal fun endpointSecurityWriters(
@@ -331,6 +390,16 @@ internal fun endpointSecurityWriters(
331390
SCOPE_WORKSPACE_WRITE,
332391
customOrganizationUser),
333392
customAdmin = customOrganizationAdmin),
393+
CsmSecurityEndpointsRolesWriter(
394+
paths = PATHS_TWIN_GRAPH,
395+
roles =
396+
arrayOf(
397+
ROLE_TWIN_GRAPH_WRITER,
398+
ROLE_ORGANIZATION_ADMIN,
399+
ROLE_ORGANIZATION_COLLABORATOR,
400+
ROLE_ORGANIZATION_MODELER,
401+
SCOPE_TWIN_GRAPH_WRITE),
402+
customAdmin = customOrganizationAdmin),
334403
)
335404

336405
abstract class AbstractSecurityConfiguration : WebSecurityConfigurerAdapter() {

0 commit comments

Comments
 (0)