@@ -37,6 +37,8 @@ const val ROLE_SOLUTION_READER = "Solution.Reader"
3737const val ROLE_SOLUTION_WRITER = " Solution.Writer"
3838const val ROLE_WORKSPACE_READER = " Workspace.Reader"
3939const 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
4244const val SCOPE_CONNECTOR_READ = " SCOPE_csm.connector.read"
@@ -46,6 +48,7 @@ const val SCOPE_SOLUTION_READ = "SCOPE_csm.solution.read"
4648const val SCOPE_WORKSPACE_READ = " SCOPE_csm.workspace.read"
4749const val SCOPE_SCENARIO_READ = " SCOPE_csm.scenario.read"
4850const val SCOPE_SCENARIORUN_READ = " SCOPE_csm.scenariorun.read"
51+ const val SCOPE_TWIN_GRAPH_READ = " SCOPE_csm.twingraph.read"
4952
5053// Allowed write scopes
5154const val SCOPE_CONNECTOR_WRITE = " SCOPE_csm.connector.write"
@@ -55,6 +58,7 @@ const val SCOPE_SOLUTION_WRITE = "SCOPE_csm.solution.write"
5558const val SCOPE_WORKSPACE_WRITE = " SCOPE_csm.workspace.write"
5659const val SCOPE_SCENARIO_WRITE = " SCOPE_csm.scenario.write"
5760const val SCOPE_SCENARIORUN_WRITE = " SCOPE_csm.scenariorun.write"
61+ const val SCOPE_TWIN_GRAPH_WRITE = " SCOPE_csm.twingraph.write"
5862
5963// Endpoints paths
6064const val PATH_CONNECTORS = " /connectors"
@@ -107,6 +111,30 @@ const val PATH_WORKSPACES = "/organizations/*/workspaces"
107111const val PATH_WORKSPACES_USERS = " /organizations/*/workspaces/*/users"
108112val PATHS_WORKSPACES = listOf (PATH_WORKSPACES , PATH_WORKSPACES_USERS )
109113const 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
112140val 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" )
251310internal 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
336405abstract class AbstractSecurityConfiguration : WebSecurityConfigurerAdapter () {
0 commit comments