<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Answers to: How to reset permissions of an user or role?</title><link>https://answers.axonivy.com/questions/58/how-to-reset-permissions-of-an-user-or-role</link><description>&lt;p&gt;In our project we set specific permissions to the application users and/or groups. Now we have the requirement to reset them to the default permissions.&lt;/p&gt;
&lt;p&gt;Is there a functionality directly in the UI or exists a public API?&lt;/p&gt;</description><atom:link href="https://answers.axonivy.com/questions/58/how-to-reset-permissions-of-an-user-or-role" rel="self"></atom:link><language>en</language><lastBuildDate>Fri, 08 Nov 2013 12:00:25 -0500</lastBuildDate><item><title>Answer by Flavio Sadeghi</title><link>https://answers.axonivy.com/questions/58/how-to-reset-permissions-of-an-user-or-role/59</link><description>&lt;p&gt;The public API does not provide a direct methode to reset the permission of an user or a role. However some lines of code will fulfill your request.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reset the permissions of a user:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A new user own only the role &lt;code&gt;Everybody&lt;/code&gt;. Therefore write a scipt which removes all roles from the user, except the role &lt;code&gt;Everybody&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reset the permissions of the role &lt;code&gt;Everybody&lt;/code&gt;&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;Write a scipt which removes all none default permissions from the role &lt;code&gt;Everybody&lt;/code&gt;. &lt;/p&gt;
&lt;p&gt;The tricky point is to find out the 'default permissions' of a &lt;code&gt;Everybody&lt;/code&gt; role. The following script will to this. Because the permissions of the role &lt;code&gt;Everybody&lt;/code&gt; of current projects are changed, we get the information from the system application (which also has a role &lt;code&gt;Everybody&lt;/code&gt;).&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;package xpertivy.admin;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Callable;

import ch.ivyteam.ivy.Advisor;
import ch.ivyteam.ivy.application.IApplication;
import ch.ivyteam.ivy.application.IApplicationConfigurationManager;
import ch.ivyteam.ivy.security.IPermission;
import ch.ivyteam.ivy.security.IPermissionAccess;
import ch.ivyteam.ivy.security.IRole;
import ch.ivyteam.ivy.security.ISecurityConstants;
import ch.ivyteam.ivy.security.ISecurityContext;
import ch.ivyteam.ivy.security.SecurityManagerFactory;
import ch.ivyteam.ivy.server.ServerFactory;

@SuppressWarnings("restriction")
public class PermissionUtils {
    private PermissionUtils() {
    }

    public static List&amp;lt;IPermission&amp;gt; getDefaultPermissionOfGroupEverybody() {
        try {
            // we need system rights to get the system application etc.
            return SecurityManagerFactory.getSecurityManager().executeAsSystem(
                    new Callable&amp;lt;List&amp;lt;IPermission&amp;gt;&amp;gt;() {
                        @Override
                        public List&amp;lt;IPermission&amp;gt; call() throws Exception {
                            return getDefaultPermissionOfGroupEverybodyInternal();
                        }
                    });
        } catch (Exception e) {
            throw new IllegalStateException(e);
        }
    }

    public static List&amp;lt;IPermission&amp;gt; getDefaultPermissionOfGroupEverybodyInternal() {
        IApplication systemApplication = getSystemApplication();
        IRole everybody = getRoleEverybody(systemApplication
                .getSecurityContext());
        List&amp;lt;IPermissionAccess&amp;gt; permissionAccesses = systemApplication
                .getSecurityDescriptor().getPermissionAccesses(everybody);

        List&amp;lt;IPermission&amp;gt; permissions = new ArrayList&amp;lt;IPermission&amp;gt;();
        for (IPermissionAccess permissionAccess : permissionAccesses) {
            permissions.add(permissionAccess.getPermission());
        }

        return permissions;
    }

    private static IApplication getSystemApplication() {
        IApplicationConfigurationManager appConfigManager = ServerFactory
                .getServer().getApplicationConfigurationManager();
        if (Advisor.getAdvisor().isDesigner()) {
            // assure this code runs also on the designer, even there is no
            // system application deployed
            return appConfigManager.findApplication("designer");
        } else {
            return appConfigManager.getSystemApplication();
        }
    }

    private static IRole getRoleEverybody(ISecurityContext securityContext) {
        return securityContext.findRole(ISecurityConstants.TOP_LEVEL_ROLE_NAME);
    }
}
&lt;/code&gt;&lt;/pre&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Flavio Sadeghi</dc:creator><pubDate>Fri, 08 Nov 2013 12:00:25 -0500</pubDate><guid>https://answers.axonivy.com/questions/58/how-to-reset-permissions-of-an-user-or-role/59</guid></item></channel></rss>