I found nice repository from cloudbees 
https://github.com/cloudbees/jenkins-scripts


and there is a script existing already 
https://github.com/cloudbees/jenkins-scripts/blob/master/auth-project-report.groovy

So I have take inspiration and did my script regarding the followup from 
the links above
- reading folders
- reads permissions
- if there is a user with "external" in the fullName, then store it, and if 
there are found at least 1 externals, it got printed out in pseudo-csv like 
*folderName;URL;userID;userFullName;mailAddres*

See below





*//taken @ 
https://github.com/cloudbees/jenkins-scripts/blob/master/auth-project-report.groovy//https://javadoc.jenkins.io/plugin/matrix-auth/com/cloudbees/hudson/plugins/folder/properties/AuthorizationMatrixProperty.html//https://javadoc.jenkins.io/plugin/cloudbees-folder/com/cloudbees/hudson/plugins/folder/AbstractFolder.html//https://javadoc.jenkins.io/hudson/security/Permission.htmldef
 
folderdef URLList<String> adminUserList=new ArrayList<String>() //get 
itemsfor (item in Jenkins.instance.allItems) {  //find folders  if 
(item.class.canonicalName == "com.cloudbees.hudson.plugins.folder.Folder") 
{     folder = item.fullName     URL = item.getAbsoluteUrl()     //iterate 
over properties and find permissions     item.properties.each { p ->        
if(p.class.canonicalName == 
"com.cloudbees.hudson.plugins.folder.properties.AuthorizationMatrixProperty") 
{           //permissions found, get them   
Map<hudson.security.Permission,Set<String>> gp = p.getGrantedPermissions() 
                  //interested only in admins of folder- permission to 
modify the given folder         
 gp.get(hudson.security.Permission.fromId("hudson.model.Item.Configure")).each{ 
           //getUserList                         User usr = 
User.getById(it,false)             //println usr.fullName        if(usr != 
null && usr.fullName.contains("external")) {    def usrMail = 
usr.getProperty(hudson.tasks.Mailer.UserProperty.class).getAddress();   
 adminUserList.add(it + ";" + usr.fullName +";" + usrMail)       }         
}         }     }    }    if(adminUserList.size() > 0) {   
adminUserList.each{user ->   println folder + ";" + URL + ";"+ user   }  }  
adminUserList=new ArrayList<String>()   } *




Dne pondělí 17. září 2018 13:51:34 UTC+2 Pavel Novák napsal(a):
>
> Hi, 
> regarding https://issues.jenkins-ci.org/browse/JENKINS-53581  
> <https://issues.jenkins-ci.org/browse/JENKINS-53581>
>
> I would like to get permissions setup for the folders in the Jenkins by 
> *groovy 
> script *used in the jenkins script console 
>
> Environment:
> Jenkins ver. 2.121.2 
>  + Folders plugin 6.5.1 
>  + Matrix Authorization Strategy 2.3 
>
> Jenkins ver. 2.107.3 
>  + Folders plugin 6.4 
>  + Matrix Authorization Strategy 2.2
>
> I am using similar scripts for kind of reporting, e.g. number of folders, 
> folders with recent builds (in given period, etc.)
>
> I tried, with the clues over the internet, following 
>
> import com.cloudbees.hudson.plugins.folder.*import 
> groovyjarjarasm.asm.Itemimport jenkins.model.Jenkinsimport 
> hudson.security.*import hudson.model.*//AbstractProject proj = 
> Hudson.instance.getItem("YourJob")//AuthorizationMatrixProperty authProperty 
> = proj.getProperty(AuthorizationMatrixProperty.class)
>  def items=Jenkins.instance.getAllItems();//load all items in jenkins  
> items.each{
>       //get folders only      if(it instanceof Folder){
>       // println it //print for debug     AbstractProject proj = 
> Hudson.instance.getItem(it.fullName)
>      AuthorizationMatrixProperty authProperty =  
> proj.getProperties(AuthorizationMatrixProperty.class)
>      }
>  }
>
>
> But that fails because casting error 
>
> org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast 
> object 'com.cloudbees.hudson.plugins.folder.Folder@4c019d3f[foldername]' with 
> class 'com.cloudbees.hudson.plugins.folder.Folder' to class 
> 'hudson.model.AbstractProject'
>
>
>
>
> In the link above I got an advise as to use abstract folder, etc. now I am in 
> the state I am getting error about getting property 
>
> groovy.lang.MissingMethodException: No signature of method: 
> com.cloudbees.hudson.plugins.folder.Folder.getProperties() is applicable for 
> argument types: (java.lang.Class) values: [class 
> hudson.security.AuthorizationMatrixProperty]
> Possible solutions: getProperties(), getProperties()
>
>
> Do you have any idea, how to obtain the permissions on the folder 
> - in fact, 1st level like "job root" should be enough, I dont need to go 
> deeper
> - in ideal case I would like to get all the granted permissions
> - at least, I need users, which are having any permissions on the folder 
> (Excl. jenkins admins, ofc.)
>
> note- I am jenkins admin, so I have the full permissions
>
> Thanks in advance for any advise.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jenkinsci-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/61d96524-387c-46d5-ab37-6aa2ddba20e0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to