X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.cms%2Fsrc%2Forg%2Fargeo%2Fcms%2Finternal%2Fruntime%2FCmsUserManagerImpl.java;h=1eb227b0e6588e755b0fe8e77f62f42a79d915d4;hb=a4e2def61f587de89a03037aec2b95c54732ec55;hp=06736fbeb637bb5c0680a93f7000f4a65dd37e08;hpb=e4a5502f49e2a2c35d16bbc96efdffead1362a76;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsUserManagerImpl.java b/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsUserManagerImpl.java index 06736fbeb..1eb227b0e 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsUserManagerImpl.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/runtime/CmsUserManagerImpl.java @@ -264,13 +264,33 @@ public class CmsUserManagerImpl implements CmsUserManager { } } + @Override + public CmsGroup createGroup(String dn) { + try { + userTransaction.begin(); + CmsGroup group = (CmsGroup) userAdmin.createRole(dn, Role.GROUP); + userTransaction.commit(); + return group; + } catch (Exception e) { + try { + userTransaction.rollback(); + } catch (Exception e1) { + log.error("Could not roll back", e1); + } + if (e instanceof RuntimeException) + throw (RuntimeException) e; + else + throw new RuntimeException("Cannot create group " + dn, e); + } + } + @Override public CmsGroup getOrCreateGroup(HierarchyUnit groups, String commonName) { + String dn = LdapAttr.cn.name() + "=" + commonName + "," + groups.getBase(); + CmsGroup group = (CmsGroup) getUserAdmin().getRole(dn); + if (group != null) + return group; try { - String dn = LdapAttr.cn.name() + "=" + commonName + "," + groups.getBase(); - CmsGroup group = (CmsGroup) getUserAdmin().getRole(dn); - if (group != null) - return group; userTransaction.begin(); group = (CmsGroup) userAdmin.createRole(dn, Role.GROUP); userTransaction.commit(); @@ -290,11 +310,11 @@ public class CmsUserManagerImpl implements CmsUserManager { @Override public CmsGroup getOrCreateSystemRole(HierarchyUnit roles, QName systemRole) { + String dn = LdapAttr.cn.name() + "=" + NamespaceUtils.toPrefixedName(systemRole) + "," + roles.getBase(); + CmsGroup group = (CmsGroup) getUserAdmin().getRole(dn); + if (group != null) + return group; try { - String dn = LdapAttr.cn.name() + "=" + NamespaceUtils.toPrefixedName(systemRole) + "," + roles.getBase(); - CmsGroup group = (CmsGroup) getUserAdmin().getRole(dn); - if (group != null) - return group; userTransaction.begin(); group = (CmsGroup) userAdmin.createRole(dn, Role.GROUP); userTransaction.commit(); @@ -410,7 +430,25 @@ public class CmsUserManagerImpl implements CmsUserManager { if (log.isTraceEnabled()) log.trace("Cannot rollback transaction", e2); } - throw new RuntimeException("Cannot add object classes " + role + " to group " + group, e1); + throw new RuntimeException("Cannot add member " + role + " to group " + group, e1); + } + } + + @Override + public void removeMember(CmsGroup group, Role role) { + try { + userTransaction.begin(); + group.removeMember(role); + userTransaction.commit(); + } catch (Exception e1) { + try { + if (!userTransaction.isNoTransactionStatus()) + userTransaction.rollback(); + } catch (Exception e2) { + if (log.isTraceEnabled()) + log.trace("Cannot rollback transaction", e2); + } + throw new RuntimeException("Cannot remove member " + role + " from group " + group, e1); } }