@Service
class IMSProjectService(repository: IMSProjectRepository, val imsRepository: IMSRepository, val trackableRepository: TrackableRepository, val imsIssueRepository: IMSIssueRepository, val templatedNodeService: TemplatedNodeService, val nodeRepository: NodeRepository) : NamedNodeService<IMSProject, IMSProjectRepository>

Service for IMSProjects. Provides functions to create, update and delete

Parameters

repository

the associated repository used for CRUD functionality

imsRepository

used to get IMSs by id

trackableRepository

used to get Trackables by id

imsIssueRepository

used to delete IMSIssues when project is deleted

templatedNodeService

service used to update templatedFields

nodeRepository

used to delete Nodes

Constructors

Link copied to clipboard
constructor(repository: IMSProjectRepository, imsRepository: IMSRepository, trackableRepository: TrackableRepository, imsIssueRepository: IMSIssueRepository, templatedNodeService: TemplatedNodeService, nodeRepository: NodeRepository)

Properties

Link copied to clipboard
@Autowired
lateinit var authorizationChecker: AuthorizationChecker

Injected, used for the checkPermission function

Link copied to clipboard

Injected, used to get a user based on a GropiusAuthorizationContext

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard

Functions

Link copied to clipboard
suspend fun checkIsAdmin(authorizationContext: GropiusAuthorizationContext, errorMessage: String)

Checks if the user defined by authorizationContext is a global admin

Link copied to clipboard
suspend fun checkPermission(node: Node, permission: Permission, errorMessage: String)

Checks if the permission is granted on node If checkPermission on the permission.context is false, no permission is evaluated Does not handle the case that the user is an admin

Link copied to clipboard

Creates a new IMSProject based on the provided input Checks the authorization status

Link copied to clipboard
suspend fun deleteIMSProject(imsProject: IMSProject)

Deletes a IMSProject Does not check the authorization status

suspend fun deleteIMSProject(authorizationContext: GropiusAuthorizationContext, input: DeleteNodeInput)

Deletes a IMSProject by id Checks the authorization status

Link copied to clipboard
suspend fun evaluatePermission(node: Node, permission: Permission): Boolean

Evaluates if the permission is granted on node If checkPermission on the permission.context is false, no permission is evaluated Does not handle the case that the user is an admin

Link copied to clipboard
suspend fun getNodesToDelete(node: IMSProject): Collection<Node>

Gets all nodes to delete when this IMSProject is deleted, including the IMSProject itself.

Link copied to clipboard
suspend fun getUser(authorizationContext: GropiusAuthorizationContext): GropiusUser

Gets a GropiusUser based on the userId from the authorizationContext

Link copied to clipboard

Updates a IMSProject based on the provided input Checks the authorization status

Link copied to clipboard

Updates node based on input Updates name and description