package com.onresolve.stash.groovy.test.listeners.STASH_3850_block_personal
+import com.atlassian.crowd.embedded.api.CrowdDirectoryService
+import com.atlassian.crowd.embedded.api.CrowdService
+import com.atlassian.sal.api.component.ComponentLocator
import com.atlassian.stash.event.RepositoryCreationRequestedEvent
import com.atlassian.stash.project.ProjectType
+def crowdService = ComponentLocator.getComponent(CrowdService)
+def crowdDirectoryService = ComponentLocator.getComponent(CrowdDirectoryService)
def event = event as RepositoryCreationRequestedEvent
def project = event.repository.project
// only allow when user comes from dir X
-if (project.type == ProjectType.PERSONAL) {
- // this is unsafe... if you want this let me know and I'll use the long-winded but correct method
- if (event.user?.backingCrowdUser?.directory?.name != "Stash Internal Directory") { // enter directory name
+if (project.type == ProjectType.PERSONAL && event.user) {
+ def cwdUser = crowdService.getUser(event.user.name)
+ def directory = crowdDirectoryService.findDirectoryById(cwdUser.directoryId)
+ if (directory.name != "Stash Internal Directory") { // enter directory name
event.cancel("You don't have permissions to create a personal repository.")