Snippets

Adaptavist Bitbucket - Allow Only From Directory

Updated by Jamie Echlin

File AllowOnlyFromDirectory.groovy Modified

  • Ignore whitespace
  • Hide word diff
 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.")
     }
 }
Created by Jamie Echlin

File AllowOnlyFromDirectory.groovy Added

  • Ignore whitespace
  • Hide word diff
+package com.onresolve.stash.groovy.test.listeners.STASH_3850_block_personal
+
+import com.atlassian.stash.event.RepositoryCreationRequestedEvent
+import com.atlassian.stash.project.ProjectType
+
+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
+        event.cancel("You don't have permissions to create a personal repository.")
+    }
+}
HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.