public class org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm extends org.apache.shiro.realm.ldap.DefaultLdapRealm
{
private static final java.lang.String UNIQUEMEMBER_SUBSTITUTION_TOKEN;
private static final javax.naming.directory.SearchControls SUBTREE_SCOPE;
private java.lang.String searchBase;
private java.lang.String groupObjectClass;
private java.lang.String uniqueMemberAttribute;
private java.lang.String uniqueMemberAttributeValuePrefix;
private java.lang.String uniqueMemberAttributeValueSuffix;
protected java.util.Set groupExtractedAttribute;
protected java.util.Set userExtractedAttribute;
protected java.util.Set permissionByGroupAttribute;
protected java.util.Set permissionByUserAttribute;
private java.lang.String searchUserBase;
private java.lang.String userObjectClass;
private final java.util.Map rolesByGroup;
private org.apache.isis.security.shiro.permrolemapper.PermissionToRoleMapper permissionToRoleMapper;
private java.lang.String cnAttribute;
public void <init>()
{
java.util.LinkedHashMap v;
java.util.concurrent.ConcurrentHashMap$KeySetView v, v, v, v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
specialinvoke v.<org.apache.shiro.realm.ldap.DefaultLdapRealm: void <init>()>();
v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String uniqueMemberAttribute> = "uniqueMember";
v = staticinvoke <org.apache.isis.commons.internal.collections._Sets: java.util.concurrent.ConcurrentHashMap$KeySetView newConcurrentHashSet()>();
v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Set groupExtractedAttribute> = v;
v = staticinvoke <org.apache.isis.commons.internal.collections._Sets: java.util.concurrent.ConcurrentHashMap$KeySetView newConcurrentHashSet()>();
v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Set userExtractedAttribute> = v;
v = staticinvoke <org.apache.isis.commons.internal.collections._Sets: java.util.concurrent.ConcurrentHashMap$KeySetView newConcurrentHashSet()>();
v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Set permissionByGroupAttribute> = v;
v = staticinvoke <org.apache.isis.commons.internal.collections._Sets: java.util.concurrent.ConcurrentHashMap$KeySetView newConcurrentHashSet()>();
v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Set permissionByUserAttribute> = v;
v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String searchUserBase> = "";
v = staticinvoke <org.apache.isis.commons.internal.collections._Maps: java.util.LinkedHashMap newLinkedHashMap()>();
v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Map rolesByGroup> = v;
v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String cnAttribute> = "cn";
virtualinvoke v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: void setGroupObjectClass(java.lang.String)>("groupOfUniqueNames");
virtualinvoke v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: void setUniqueMemberAttribute(java.lang.String)>("uniqueMember");
virtualinvoke v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: void setUniqueMemberAttributeValueTemplate(java.lang.String)>("uid={0}");
return;
}
protected org.apache.shiro.authz.AuthorizationInfo queryForAuthorizationInfo(org.apache.shiro.subject.PrincipalCollection, org.apache.shiro.realm.ldap.LdapContextFactory) throws javax.naming.NamingException
{
org.apache.shiro.realm.ldap.LdapContextFactory v;
java.util.Collection v;
java.util.Set v, v, v;
java.lang.Object v;
org.apache.shiro.subject.PrincipalCollection v;
org.apache.shiro.authz.SimpleAuthorizationInfo v;
javax.naming.ldap.LdapContext v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: org.apache.shiro.subject.PrincipalCollection;
v := @parameter: org.apache.shiro.realm.ldap.LdapContextFactory;
v = specialinvoke v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Set getRoles(org.apache.shiro.subject.PrincipalCollection,org.apache.shiro.realm.ldap.LdapContextFactory)>(v, v);
v = new org.apache.shiro.authz.SimpleAuthorizationInfo;
specialinvoke v.<org.apache.shiro.authz.SimpleAuthorizationInfo: void <init>(java.util.Set)>(v);
v = specialinvoke v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Set permsFor(java.util.Set)>(v);
v = virtualinvoke v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.Object getAvailablePrincipal(org.apache.shiro.subject.PrincipalCollection)>(v);
v = interfaceinvoke v.<org.apache.shiro.realm.ldap.LdapContextFactory: javax.naming.ldap.LdapContext getSystemLdapContext()>();
v = specialinvoke v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Collection getPermissionForUser(java.lang.String,javax.naming.ldap.LdapContext)>(v, v);
interfaceinvoke v.<java.util.Set: boolean addAll(java.util.Collection)>(v);
v = specialinvoke v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Set getPermissionForRole(java.lang.String,javax.naming.ldap.LdapContext)>(v, v);
interfaceinvoke v.<java.util.Set: boolean addAll(java.util.Collection)>(v);
virtualinvoke v.<org.apache.shiro.authz.SimpleAuthorizationInfo: void setStringPermissions(java.util.Set)>(v);
return v;
}
private java.util.Set getPermissionForRole(java.lang.String, javax.naming.ldap.LdapContext) throws javax.naming.NamingException
{
java.util.Set v, v, v;
javax.naming.directory.SearchControls v;
javax.naming.NamingEnumeration v;
java.lang.Object v;
java.lang.String v, v, v, v;
javax.naming.ldap.LdapContext v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
java.util.LinkedHashSet v;
boolean v, v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.lang.String;
v := @parameter: javax.naming.ldap.LdapContext;
v = staticinvoke <org.apache.isis.commons.internal.collections._Sets: java.util.LinkedHashSet newLinkedHashSet()>();
v = virtualinvoke v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Set groupFor(java.lang.String,javax.naming.ldap.LdapContext)>(v, v);
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String searchBase>;
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String groupObjectClass>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("objectClass=\u0001");
v = <org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: javax.naming.directory.SearchControls SUBTREE_SCOPE>;
v = interfaceinvoke v.<javax.naming.ldap.LdapContext: javax.naming.NamingEnumeration search(java.lang.String,java.lang.String,javax.naming.directory.SearchControls)>(v, v, v);
label:
v = interfaceinvoke v.<javax.naming.NamingEnumeration: boolean hasMore()>();
if v == 0 goto label;
v = interfaceinvoke v.<javax.naming.NamingEnumeration: java.lang.Object next()>();
v = virtualinvoke v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: boolean memberOf(javax.naming.directory.SearchResult,java.util.Set)>(v, v);
if v == 0 goto label;
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Set groupExtractedAttribute>;
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Set permissionByGroupAttribute>;
specialinvoke v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: void addPermIfFound(javax.naming.directory.SearchResult,java.util.Set,java.util.Set,java.util.Set)>(v, v, v, v);
goto label;
label:
return v;
}
protected java.util.Set groupFor(java.lang.String, javax.naming.ldap.LdapContext) throws javax.naming.NamingException
{
javax.naming.directory.SearchControls v;
javax.naming.NamingEnumeration v;
java.lang.Object v;
java.lang.String v, v, v, v;
javax.naming.ldap.LdapContext v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
java.util.LinkedHashSet v;
boolean v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.lang.String;
v := @parameter: javax.naming.ldap.LdapContext;
v = staticinvoke <org.apache.isis.commons.internal.collections._Sets: java.util.LinkedHashSet newLinkedHashSet()>();
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String searchBase>;
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String groupObjectClass>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("objectClass=\u0001");
v = <org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: javax.naming.directory.SearchControls SUBTREE_SCOPE>;
v = interfaceinvoke v.<javax.naming.ldap.LdapContext: javax.naming.NamingEnumeration search(java.lang.String,java.lang.String,javax.naming.directory.SearchControls)>(v, v, v);
label:
v = interfaceinvoke v.<javax.naming.NamingEnumeration: boolean hasMore()>();
if v == 0 goto label;
v = interfaceinvoke v.<javax.naming.NamingEnumeration: java.lang.Object next()>();
specialinvoke v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: void addRoleIfMember(java.lang.String,javax.naming.directory.SearchResult,java.util.Set)>(v, v, v);
goto label;
label:
return v;
}
protected boolean memberOf(javax.naming.directory.SearchResult, java.util.Set) throws javax.naming.NamingException
{
java.util.Set v;
javax.naming.directory.Attribute v;
javax.naming.directory.Attributes v;
java.lang.Object v;
java.lang.String v, v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
javax.naming.directory.SearchResult v;
boolean v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: javax.naming.directory.SearchResult;
v := @parameter: java.util.Set;
v = virtualinvoke v.<javax.naming.directory.SearchResult: javax.naming.directory.Attributes getAttributes()>();
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String cnAttribute>;
v = interfaceinvoke v.<javax.naming.directory.Attributes: javax.naming.directory.Attribute get(java.lang.String)>(v);
v = interfaceinvoke v.<javax.naming.directory.Attribute: java.lang.Object get()>();
v = virtualinvoke v.<java.lang.Object: java.lang.String toString()>();
v = interfaceinvoke v.<java.util.Set: boolean contains(java.lang.Object)>(v);
return v;
}
private java.util.Collection getPermissionForUser(java.lang.String, javax.naming.ldap.LdapContext) throws javax.naming.NamingException
{
java.lang.Throwable v;
java.util.Collection v;
java.util.Set v;
java.lang.String v;
javax.naming.ldap.LdapContext v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.lang.String;
v := @parameter: javax.naming.ldap.LdapContext;
label:
v = specialinvoke v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Collection permUser(java.lang.String,javax.naming.ldap.LdapContext)>(v, v);
label:
return v;
label:
v := @caughtexception;
v = staticinvoke <java.util.Collections: java.util.Set emptySet()>();
return v;
catch org.apache.shiro.authc.AuthenticationException from label to label with label;
}
private java.util.Collection permUser(java.lang.String, javax.naming.ldap.LdapContext) throws javax.naming.NamingException
{
java.util.Set v, v;
javax.naming.directory.SearchControls v;
javax.naming.NamingEnumeration v;
java.lang.Object v;
java.lang.String v, v, v, v;
javax.naming.ldap.LdapContext v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
java.util.LinkedHashSet v;
boolean v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.lang.String;
v := @parameter: javax.naming.ldap.LdapContext;
v = staticinvoke <org.apache.isis.commons.internal.collections._Sets: java.util.LinkedHashSet newLinkedHashSet()>();
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String searchUserBase>;
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String userObjectClass>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("objectClass=\u0001");
v = <org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: javax.naming.directory.SearchControls SUBTREE_SCOPE>;
v = interfaceinvoke v.<javax.naming.ldap.LdapContext: javax.naming.NamingEnumeration search(java.lang.String,java.lang.String,javax.naming.directory.SearchControls)>(v, v, v);
label:
v = interfaceinvoke v.<javax.naming.NamingEnumeration: boolean hasMore()>();
if v == 0 goto label;
v = interfaceinvoke v.<javax.naming.NamingEnumeration: java.lang.Object next()>();
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Set userExtractedAttribute>;
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Set permissionByUserAttribute>;
specialinvoke v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: void addPermIfFound(javax.naming.directory.SearchResult,java.util.Set,java.util.Set,java.util.Set)>(v, v, v, v);
goto label;
label:
return v;
}
private void addPermIfFound(javax.naming.directory.SearchResult, java.util.Set, java.util.Set, java.util.Set) throws javax.naming.NamingException
{
boolean v, v, v, v, v, v, v;
java.util.Set v, v, v, v;
javax.naming.directory.Attributes v;
javax.naming.NamingEnumeration v, v;
javax.naming.directory.SearchResult v;
java.util.HashMap v;
java.util.HashSet v;
java.lang.String v, v, v, v, v, v, v, v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
java.util.Iterator v, v, v;
java.lang.Object v, v, v, v, v, v, v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: javax.naming.directory.SearchResult;
v := @parameter: java.util.Set;
v := @parameter: java.util.Set;
v := @parameter: java.util.Set;
v = virtualinvoke v.<javax.naming.directory.SearchResult: javax.naming.directory.Attributes getAttributes()>();
v = interfaceinvoke v.<javax.naming.directory.Attributes: javax.naming.NamingEnumeration getAll()>();
v = staticinvoke <org.apache.isis.commons.internal.collections._Maps: java.util.HashMap newHashMap()>();
label:
v = interfaceinvoke v.<javax.naming.NamingEnumeration: boolean hasMore()>();
if v == 0 goto label;
v = interfaceinvoke v.<javax.naming.NamingEnumeration: java.lang.Object next()>();
v = interfaceinvoke v.<javax.naming.directory.Attribute: java.lang.String getID()>();
v = interfaceinvoke v.<java.util.Set: boolean contains(java.lang.Object)>(v);
if v == 0 goto label;
v = interfaceinvoke v.<javax.naming.directory.Attribute: javax.naming.NamingEnumeration getAll()>();
v = interfaceinvoke v.<javax.naming.directory.Attribute: java.lang.String getID()>();
v = new java.util.HashSet;
specialinvoke v.<java.util.HashSet: void <init>()>();
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
label:
v = interfaceinvoke v.<javax.naming.NamingEnumeration: boolean hasMore()>();
if v == 0 goto label;
v = interfaceinvoke v.<javax.naming.NamingEnumeration: java.lang.Object next()>();
v = virtualinvoke v.<java.lang.Object: java.lang.String toString()>();
v = interfaceinvoke v.<javax.naming.directory.Attribute: java.lang.String getID()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
goto label;
label:
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = interfaceinvoke v.<java.util.Map: java.util.Set keySet()>();
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.Object)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("{\u0001}");
v = virtualinvoke v.<java.lang.String: boolean contains(java.lang.CharSequence)>(v);
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\\{\u0001\\}");
v = virtualinvoke v.<java.lang.String: java.lang.String replaceAll(java.lang.String,java.lang.String)>(v, v);
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
goto label;
label:
return;
}
private java.util.Set getRoles(org.apache.shiro.subject.PrincipalCollection, org.apache.shiro.realm.ldap.LdapContextFactory) throws javax.naming.NamingException
{
java.lang.Throwable v;
org.apache.shiro.realm.ldap.LdapContextFactory v;
java.util.Set v, v;
javax.naming.AuthenticationException v;
java.lang.Object v;
org.apache.shiro.subject.PrincipalCollection v;
javax.naming.ldap.LdapContext v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: org.apache.shiro.subject.PrincipalCollection;
v := @parameter: org.apache.shiro.realm.ldap.LdapContextFactory;
v = virtualinvoke v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.Object getAvailablePrincipal(org.apache.shiro.subject.PrincipalCollection)>(v);
v = null;
label:
v = interfaceinvoke v.<org.apache.shiro.realm.ldap.LdapContextFactory: javax.naming.ldap.LdapContext getSystemLdapContext()>();
v = specialinvoke v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Set rolesFor(java.lang.String,javax.naming.ldap.LdapContext)>(v, v);
label:
staticinvoke <org.apache.shiro.realm.ldap.LdapUtils: void closeContext(javax.naming.ldap.LdapContext)>(v);
return v;
label:
v := @caughtexception;
v = staticinvoke <java.util.Collections: java.util.Set emptySet()>();
label:
staticinvoke <org.apache.shiro.realm.ldap.LdapUtils: void closeContext(javax.naming.ldap.LdapContext)>(v);
return v;
label:
v := @caughtexception;
staticinvoke <org.apache.shiro.realm.ldap.LdapUtils: void closeContext(javax.naming.ldap.LdapContext)>(v);
throw v;
catch javax.naming.AuthenticationException from label to label with label;
catch java.lang.Throwable from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private java.util.Set rolesFor(java.lang.String, javax.naming.ldap.LdapContext) throws javax.naming.NamingException
{
javax.naming.directory.SearchControls v;
javax.naming.NamingEnumeration v;
java.lang.Object v;
java.lang.String v, v, v, v;
javax.naming.ldap.LdapContext v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
java.util.LinkedHashSet v;
boolean v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.lang.String;
v := @parameter: javax.naming.ldap.LdapContext;
v = staticinvoke <org.apache.isis.commons.internal.collections._Sets: java.util.LinkedHashSet newLinkedHashSet()>();
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String searchBase>;
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String groupObjectClass>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("objectClass=\u0001");
v = <org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: javax.naming.directory.SearchControls SUBTREE_SCOPE>;
v = interfaceinvoke v.<javax.naming.ldap.LdapContext: javax.naming.NamingEnumeration search(java.lang.String,java.lang.String,javax.naming.directory.SearchControls)>(v, v, v);
label:
v = interfaceinvoke v.<javax.naming.NamingEnumeration: boolean hasMore()>();
if v == 0 goto label;
v = interfaceinvoke v.<javax.naming.NamingEnumeration: java.lang.Object next()>();
specialinvoke v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: void addRoleIfMember(java.lang.String,javax.naming.directory.SearchResult,java.util.Set)>(v, v, v);
goto label;
label:
return v;
}
private void addRoleIfMember(java.lang.String, javax.naming.directory.SearchResult, java.util.Set) throws javax.naming.NamingException
{
javax.naming.directory.Attribute v;
java.lang.String v, v, v, v, v, v, v, v, v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
boolean v, v, v, v;
java.util.Set v;
javax.naming.directory.Attributes v, v;
javax.naming.NamingEnumeration v, v;
java.lang.Object v, v, v;
javax.naming.directory.SearchResult v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.lang.String;
v := @parameter: javax.naming.directory.SearchResult;
v := @parameter: java.util.Set;
v = virtualinvoke v.<javax.naming.directory.SearchResult: javax.naming.directory.Attributes getAttributes()>();
v = interfaceinvoke v.<javax.naming.directory.Attributes: javax.naming.NamingEnumeration getAll()>();
label:
v = interfaceinvoke v.<javax.naming.NamingEnumeration: boolean hasMore()>();
if v == 0 goto label;
v = interfaceinvoke v.<javax.naming.NamingEnumeration: java.lang.Object next()>();
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String uniqueMemberAttribute>;
v = interfaceinvoke v.<javax.naming.directory.Attribute: java.lang.String getID()>();
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>(v);
if v == 0 goto label;
v = interfaceinvoke v.<javax.naming.directory.Attribute: javax.naming.NamingEnumeration getAll()>();
label:
v = interfaceinvoke v.<javax.naming.NamingEnumeration: boolean hasMore()>();
if v == 0 goto label;
v = interfaceinvoke v.<javax.naming.NamingEnumeration: java.lang.Object next()>();
v = virtualinvoke v.<java.lang.Object: java.lang.String toString()>();
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String uniqueMemberAttributeValuePrefix>;
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String uniqueMemberAttributeValueSuffix>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,java.lang.String)>(v, v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001\u0001\u0001");
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = virtualinvoke v.<javax.naming.directory.SearchResult: javax.naming.directory.Attributes getAttributes()>();
v = interfaceinvoke v.<javax.naming.directory.Attributes: javax.naming.directory.Attribute get(java.lang.String)>("cn");
v = interfaceinvoke v.<javax.naming.directory.Attribute: java.lang.Object get()>();
v = virtualinvoke v.<java.lang.Object: java.lang.String toString()>();
v = specialinvoke v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String roleNameFor(java.lang.String)>(v);
if v == null goto label;
interfaceinvoke v.<java.util.Set: boolean add(java.lang.Object)>(v);
goto label;
label:
return;
}
private java.lang.String roleNameFor(java.lang.String)
{
java.util.Map v, v;
java.lang.Object v;
java.lang.String v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
boolean v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.lang.String;
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Map rolesByGroup>;
v = interfaceinvoke v.<java.util.Map: boolean isEmpty()>();
if v != 0 goto label;
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Map rolesByGroup>;
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
goto label;
label:
v = v;
label:
return v;
}
private java.util.Set permsFor(java.util.Set)
{
java.util.Iterator v;
java.util.Set v;
java.util.Map v;
java.lang.Object v, v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
java.util.LinkedHashSet v;
boolean v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.util.Set;
v = staticinvoke <org.apache.isis.commons.internal.collections._Sets: java.util.LinkedHashSet newLinkedHashSet()>();
v = interfaceinvoke v.<java.util.Set: java.util.Iterator iterator()>();
label:
v = interfaceinvoke v.<java.util.Iterator: boolean hasNext()>();
if v == 0 goto label;
v = interfaceinvoke v.<java.util.Iterator: java.lang.Object next()>();
v = specialinvoke v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Map getPermissionsByRole()>();
v = interfaceinvoke v.<java.util.Map: java.lang.Object get(java.lang.Object)>(v);
if v == null goto label;
interfaceinvoke v.<java.util.Set: boolean addAll(java.util.Collection)>(v);
goto label;
label:
return v;
}
public void setSearchBase(java.lang.String)
{
java.lang.String v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.lang.String;
v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String searchBase> = v;
return;
}
public void setGroupObjectClass(java.lang.String)
{
java.lang.String v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.lang.String;
v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String groupObjectClass> = v;
return;
}
public void setUniqueMemberAttribute(java.lang.String)
{
java.lang.String v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.lang.String;
v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String uniqueMemberAttribute> = v;
return;
}
public void setUniqueMemberAttributeValueTemplate(java.lang.String)
{
java.lang.IllegalArgumentException v, v;
int v, v, v, v;
java.lang.String v, v, v, v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
boolean v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.lang.String;
v = staticinvoke <org.apache.shiro.util.StringUtils: boolean hasText(java.lang.String)>(v);
if v != 0 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("User DN template cannot be null or empty.");
throw v;
label:
v = virtualinvoke v.<java.lang.String: int indexOf(java.lang.String)>("{0}");
if v >= 0 goto label;
v = new java.lang.IllegalArgumentException;
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>("UniqueMember attribute value template must contain the \'{0}\' replacement token to understand how to parse the group members.");
throw v;
label:
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int,int)>(0, v);
v = virtualinvoke v.<java.lang.String: int length()>();
v = "{0}";
v = virtualinvoke v.<java.lang.String: int length()>();
v = v + v;
v = virtualinvoke v.<java.lang.String: java.lang.String substring(int)>(v);
v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String uniqueMemberAttributeValuePrefix> = v;
v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String uniqueMemberAttributeValueSuffix> = v;
return;
}
public void setRolesByGroup(java.util.Map)
{
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
java.util.Map v, v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.util.Map;
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Map rolesByGroup>;
interfaceinvoke v.<java.util.Map: void putAll(java.util.Map)>(v);
return;
}
private java.util.Map getPermissionsByRole()
{
java.lang.IllegalStateException v;
org.apache.isis.security.shiro.permrolemapper.PermissionToRoleMapper v, v;
java.util.Map v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: org.apache.isis.security.shiro.permrolemapper.PermissionToRoleMapper permissionToRoleMapper>;
if v != null goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("Permissions by role not yet set.");
throw v;
label:
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: org.apache.isis.security.shiro.permrolemapper.PermissionToRoleMapper permissionToRoleMapper>;
v = interfaceinvoke v.<org.apache.isis.security.shiro.permrolemapper.PermissionToRoleMapper: java.util.Map getPermissionsByRole()>();
return v;
}
public void setResourcePath(java.lang.String)
{
java.lang.IllegalStateException v;
org.apache.isis.security.shiro.permrolemapper.PermissionToRoleMapperFromIni v;
org.apache.isis.security.shiro.permrolemapper.PermissionToRoleMapper v, v;
org.apache.shiro.config.Ini v;
java.lang.Class v;
java.lang.String v, v, v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.lang.String;
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: org.apache.isis.security.shiro.permrolemapper.PermissionToRoleMapper permissionToRoleMapper>;
if v == null goto label;
v = new java.lang.IllegalStateException;
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: org.apache.isis.security.shiro.permrolemapper.PermissionToRoleMapper permissionToRoleMapper>;
v = virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = virtualinvoke v.<java.lang.Class: java.lang.String getName()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Permissions already set, \u0001");
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>(v);
throw v;
label:
v = staticinvoke <org.apache.shiro.config.Ini: org.apache.shiro.config.Ini fromResourcePath(java.lang.String)>(v);
v = new org.apache.isis.security.shiro.permrolemapper.PermissionToRoleMapperFromIni;
specialinvoke v.<org.apache.isis.security.shiro.permrolemapper.PermissionToRoleMapperFromIni: void <init>(org.apache.shiro.config.Ini)>(v);
v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: org.apache.isis.security.shiro.permrolemapper.PermissionToRoleMapper permissionToRoleMapper> = v;
return;
}
public void setPermissionByUserAttribute(java.lang.String)
{
java.util.function.Consumer v;
java.util.stream.Stream v;
java.util.Set v;
java.lang.String[] v;
java.lang.String v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: java.lang.String[] split(java.lang.String)>(",");
v = staticinvoke <org.apache.isis.commons.internal.base._NullSafe: java.util.stream.Stream stream(java.lang.Object[])>(v);
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Set permissionByUserAttribute>;
virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = staticinvoke <org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm$add__1: java.util.function.Consumer bootstrap$(java.util.Set)>(v);
interfaceinvoke v.<java.util.stream.Stream: void forEach(java.util.function.Consumer)>(v);
return;
}
public void setPermissionByGroupAttribute(java.lang.String)
{
java.util.function.Consumer v;
java.util.stream.Stream v;
java.util.Set v;
java.lang.String[] v;
java.lang.String v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: java.lang.String[] split(java.lang.String)>(",");
v = staticinvoke <org.apache.isis.commons.internal.base._NullSafe: java.util.stream.Stream stream(java.lang.Object[])>(v);
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Set permissionByGroupAttribute>;
virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = staticinvoke <org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm$add__2: java.util.function.Consumer bootstrap$(java.util.Set)>(v);
interfaceinvoke v.<java.util.stream.Stream: void forEach(java.util.function.Consumer)>(v);
return;
}
public void setUserExtractedAttribute(java.lang.String)
{
java.util.function.Consumer v;
java.util.stream.Stream v;
java.util.Set v;
java.lang.String[] v;
java.lang.String v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: java.lang.String[] split(java.lang.String)>(",");
v = staticinvoke <org.apache.isis.commons.internal.base._NullSafe: java.util.stream.Stream stream(java.lang.Object[])>(v);
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Set userExtractedAttribute>;
virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = staticinvoke <org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm$add__3: java.util.function.Consumer bootstrap$(java.util.Set)>(v);
interfaceinvoke v.<java.util.stream.Stream: void forEach(java.util.function.Consumer)>(v);
return;
}
public void setGroupExtractedAttribute(java.lang.String)
{
java.util.function.Consumer v;
java.util.stream.Stream v;
java.util.Set v;
java.lang.String[] v;
java.lang.String v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.lang.String;
v = virtualinvoke v.<java.lang.String: java.lang.String[] split(java.lang.String)>(",");
v = staticinvoke <org.apache.isis.commons.internal.base._NullSafe: java.util.stream.Stream stream(java.lang.Object[])>(v);
v = v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.util.Set groupExtractedAttribute>;
virtualinvoke v.<java.lang.Object: java.lang.Class getClass()>();
v = staticinvoke <org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm$add__4: java.util.function.Consumer bootstrap$(java.util.Set)>(v);
interfaceinvoke v.<java.util.stream.Stream: void forEach(java.util.function.Consumer)>(v);
return;
}
public void setSearchUserBase(java.lang.String)
{
java.lang.String v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.lang.String;
v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String searchUserBase> = v;
return;
}
public void setUserObjectClass(java.lang.String)
{
java.lang.String v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.lang.String;
v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String userObjectClass> = v;
return;
}
public void setCnAttribute(java.lang.String)
{
java.lang.String v;
org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm v;
v := @this: org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm;
v := @parameter: java.lang.String;
v.<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: java.lang.String cnAttribute> = v;
return;
}
static void <clinit>()
{
javax.naming.directory.SearchControls v, v;
v = new javax.naming.directory.SearchControls;
specialinvoke v.<javax.naming.directory.SearchControls: void <init>()>();
<org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: javax.naming.directory.SearchControls SUBTREE_SCOPE> = v;
v = <org.apache.isis.extensions.shirorealmldap.realm.impl.IsisLdapRealm: javax.naming.directory.SearchControls SUBTREE_SCOPE>;
virtualinvoke v.<javax.naming.directory.SearchControls: void setSearchScope(int)>(2);
return;
}
}