package com.l7tech.server.policy.assertion.identity;

import com.l7tech.identity.Group;
import com.l7tech.identity.GroupManager;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.ObjectNotFoundException;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.policy.assertion.identity.MemberOfGroup;
import com.l7tech.server.identity.AuthenticationResult;
import java.util.concurrent.atomic.AtomicReference;
import org.springframework.context.ApplicationContext;

public class ServerMemberOfGroup extends ServerIdentityAssertion<MemberOfGroup> {
   private static final long e = 1000L;
   private final AtomicReference<a> f = new AtomicReference<>();
   private static final String[] g;

   public ServerMemberOfGroup(MemberOfGroup var1, ApplicationContext var2) {
      super(var1, var2);
   }

   protected Group getGroup() throws FindException, ObjectNotFoundException {
      Group var1 = null;
      a var2 = this.f.get();

      try {
         if (var2 != null && !this.a(var2.b)) {
            return var2.a;
         }
      } catch (FindException var5) {
         throw a(var5);
      }

      GroupManager var3 = this.getIdentityProvider().getGroupManager();
      if (this.assertion.getGroupId() != null) {
         var1 = var3.findByPrimaryKey(this.assertion.getGroupId());
      } else {
         String var4 = this.assertion.getGroupName();
         if (var4 != null) {
            var1 = var3.findByName(var4);
         }
      }

      this.f.compareAndSet(var2, new a(var1));
      return var1;
   }

   @Override
   public AssertionStatus checkUser(AuthenticationResult param1) {
      // $VF: Couldn't be decompiled
      // Please report this to the Vineflower issue tracker, at https://github.com/Vineflower/vineflower/issues with a copy of the class file (if you have the rights to distribute it!)
      // java.lang.RuntimeException: parsing failure!
      //   at org.jetbrains.java.decompiler.modules.decompiler.decompose.DomHelper.parseGraph(DomHelper.java:211)
      //   at org.jetbrains.java.decompiler.main.rels.MethodProcessor.codeToJava(MethodProcessor.java:174)
      //
      // Bytecode:
      // 000: aload 0
      // 001: invokevirtual com/l7tech/server/policy/assertion/identity/ServerMemberOfGroup.getIdentityProvider ()Lcom/l7tech/identity/IdentityProvider;
      // 004: invokeinterface com/l7tech/identity/IdentityProvider.getGroupManager ()Lcom/l7tech/identity/GroupManager; 1
      // 009: astore 2
      // 00a: goto 043
      // 00d: astore 3
      // 00e: aload 0
      // 00f: getstatic com/l7tech/gateway/common/audit/AssertionMessages.IDENTITY_PROVIDER_NOT_EXIST Lcom/l7tech/gateway/common/audit/Messages$M;
      // 012: bipush 1
      // 013: anewarray 152
      // 016: dup
      // 017: bipush 0
      // 018: aload 3
      // 019: invokestatic com/l7tech/util/ExceptionUtils.getMessage (Ljava/lang/Throwable;)Ljava/lang/String;
      // 01c: aastore
      // 01d: aload 3
      // 01e: invokestatic com/l7tech/util/ExceptionUtils.getDebugException (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 021: invokevirtual com/l7tech/server/policy/assertion/identity/ServerMemberOfGroup.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;Ljava/lang/Throwable;)V
      // 024: getstatic com/l7tech/policy/assertion/AssertionStatus.UNAUTHORIZED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 027: areturn
      // 028: astore 3
      // 029: aload 0
      // 02a: getstatic com/l7tech/gateway/common/audit/AssertionMessages.IDENTITY_PROVIDER_NOT_FOUND Lcom/l7tech/gateway/common/audit/Messages$M;
      // 02d: bipush 1
      // 02e: anewarray 152
      // 031: dup
      // 032: bipush 0
      // 033: aload 3
      // 034: invokestatic com/l7tech/util/ExceptionUtils.getMessage (Ljava/lang/Throwable;)Ljava/lang/String;
      // 037: aastore
      // 038: aload 3
      // 039: invokestatic com/l7tech/util/ExceptionUtils.getDebugException (Ljava/lang/Throwable;)Ljava/lang/Throwable;
      // 03c: invokevirtual com/l7tech/server/policy/assertion/identity/ServerMemberOfGroup.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;Ljava/lang/Throwable;)V
      // 03f: getstatic com/l7tech/policy/assertion/AssertionStatus.UNAUTHORIZED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 042: areturn
      // 043: aload 0
      // 044: invokevirtual com/l7tech/server/policy/assertion/identity/ServerMemberOfGroup.getGroup ()Lcom/l7tech/identity/Group;
      // 047: astore 3
      // 048: aload 3
      // 049: ifnonnull 057
      // 04c: aload 0
      // 04d: getstatic com/l7tech/gateway/common/audit/AssertionMessages.MEMBEROFGROUP_GROUP_NOT_EXIST Lcom/l7tech/gateway/common/audit/Messages$M;
      // 050: invokevirtual com/l7tech/server/policy/assertion/identity/ServerMemberOfGroup.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;)V
      // 053: getstatic com/l7tech/policy/assertion/AssertionStatus.UNAUTHORIZED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 056: areturn
      // 057: aload 3
      // 058: instanceof com/l7tech/identity/internal/InternalGroup
      // 05b: ifeq 087
      // 05e: aload 3
      // 05f: checkcast com/l7tech/identity/internal/InternalGroup
      // 062: invokevirtual com/l7tech/identity/internal/InternalGroup.isEnabled ()Z
      // 065: ifne 087
      // 068: goto 06f
      // 06b: invokestatic com/l7tech/server/policy/assertion/identity/ServerMemberOfGroup.a (Lcom/l7tech/objectmodel/FindException;)Lcom/l7tech/objectmodel/FindException;
      // 06e: athrow
      // 06f: aload 0
      // 070: getstatic com/l7tech/gateway/common/audit/AssertionMessages.MEMBEROFGROUP_GROUP_DISALBED Lcom/l7tech/gateway/common/audit/Messages$M;
      // 073: bipush 1
      // 074: anewarray 152
      // 077: dup
      // 078: bipush 0
      // 079: aload 3
      // 07a: invokeinterface com/l7tech/identity/Group.getName ()Ljava/lang/String; 1
      // 07f: aastore
      // 080: invokevirtual com/l7tech/server/policy/assertion/identity/ServerMemberOfGroup.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;[Ljava/lang/String;)V
      // 083: getstatic com/l7tech/policy/assertion/AssertionStatus.UNAUTHORIZED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 086: areturn
      // 087: aload 1
      // 088: aload 3
      // 089: invokevirtual com/l7tech/server/identity/AuthenticationResult.getCachedGroupMembership (Lcom/l7tech/identity/Group;)Ljava/lang/Boolean;
      // 08c: astore 4
      // 08e: aload 4
      // 090: ifnonnull 101
      // 093: aload 1
      // 094: invokevirtual com/l7tech/server/identity/AuthenticationResult.getUser ()Lcom/l7tech/identity/User;
      // 097: ifnull 0f0
      // 09a: goto 0a1
      // 09d: invokestatic com/l7tech/server/policy/assertion/identity/ServerMemberOfGroup.a (Lcom/l7tech/objectmodel/FindException;)Lcom/l7tech/objectmodel/FindException;
      // 0a0: athrow
      // 0a1: aload 1
      // 0a2: invokevirtual com/l7tech/server/identity/AuthenticationResult.getUser ()Lcom/l7tech/identity/User;
      // 0a5: invokeinterface com/l7tech/identity/User.getProviderId ()Lcom/l7tech/objectmodel/Goid; 1
      // 0aa: aload 0
      // 0ab: getfield com/l7tech/server/policy/assertion/identity/ServerMemberOfGroup.assertion Lcom/l7tech/policy/assertion/Assertion;
      // 0ae: checkcast com/l7tech/policy/assertion/identity/MemberOfGroup
      // 0b1: invokevirtual com/l7tech/policy/assertion/identity/MemberOfGroup.getIdentityProviderOid ()Lcom/l7tech/objectmodel/Goid;
      // 0b4: invokevirtual com/l7tech/objectmodel/Goid.equals (Ljava/lang/Object;)Z
      // 0b7: ifeq 0f0
      // 0ba: goto 0c1
      // 0bd: invokestatic com/l7tech/server/policy/assertion/identity/ServerMemberOfGroup.a (Lcom/l7tech/objectmodel/FindException;)Lcom/l7tech/objectmodel/FindException;
      // 0c0: athrow
      // 0c1: aload 2
      // 0c2: aload 1
      // 0c3: invokevirtual com/l7tech/server/identity/AuthenticationResult.getUser ()Lcom/l7tech/identity/User;
      // 0c6: aload 3
      // 0c7: invokeinterface com/l7tech/identity/GroupManager.isMember (Lcom/l7tech/identity/User;Lcom/l7tech/identity/Group;)Z 3
      // 0cc: ifeq 0f0
      // 0cf: goto 0d6
      // 0d2: invokestatic com/l7tech/server/policy/assertion/identity/ServerMemberOfGroup.a (Lcom/l7tech/objectmodel/FindException;)Lcom/l7tech/objectmodel/FindException;
      // 0d5: athrow
      // 0d6: aload 1
      // 0d7: aload 3
      // 0d8: bipush 1
      // 0d9: invokevirtual com/l7tech/server/identity/AuthenticationResult.setCachedGroupMembership (Lcom/l7tech/identity/Group;Z)V
      // 0dc: aload 0
      // 0dd: getfield com/l7tech/server/policy/assertion/identity/ServerMemberOfGroup.logger Ljava/util/logging/Logger;
      // 0e0: getstatic com/l7tech/server/policy/assertion/identity/ServerMemberOfGroup.g [Ljava/lang/String;
      // 0e3: astore 5
      // 0e5: aload 5
      // 0e7: bipush 0
      // 0e8: aaload
      // 0e9: invokevirtual java/util/logging/Logger.finest (Ljava/lang/String;)V
      // 0ec: getstatic com/l7tech/policy/assertion/AssertionStatus.NONE Lcom/l7tech/policy/assertion/AssertionStatus;
      // 0ef: areturn
      // 0f0: aload 1
      // 0f1: aload 3
      // 0f2: bipush 0
      // 0f3: invokevirtual com/l7tech/server/identity/AuthenticationResult.setCachedGroupMembership (Lcom/l7tech/identity/Group;Z)V
      // 0f6: aload 0
      // 0f7: getstatic com/l7tech/gateway/common/audit/AssertionMessages.MEMBEROFGROUP_USER_NOT_MEMBER Lcom/l7tech/gateway/common/audit/Messages$M;
      // 0fa: invokevirtual com/l7tech/server/policy/assertion/identity/ServerMemberOfGroup.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;)V
      // 0fd: getstatic com/l7tech/policy/assertion/AssertionStatus.UNAUTHORIZED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 100: areturn
      // 101: aload 4
      // 103: invokevirtual java/lang/Boolean.booleanValue ()Z
      // 106: ifeq 119
      // 109: aload 0
      // 10a: getfield com/l7tech/server/policy/assertion/identity/ServerMemberOfGroup.logger Ljava/util/logging/Logger;
      // 10d: getstatic com/l7tech/server/policy/assertion/identity/ServerMemberOfGroup.g [Ljava/lang/String;
      // 110: bipush 1
      // 111: aaload
      // 112: invokevirtual java/util/logging/Logger.finest (Ljava/lang/String;)V
      // 115: getstatic com/l7tech/policy/assertion/AssertionStatus.NONE Lcom/l7tech/policy/assertion/AssertionStatus;
      // 118: areturn
      // 119: aload 0
      // 11a: getstatic com/l7tech/gateway/common/audit/AssertionMessages.MEMBEROFGROUP_USING_CACHED_FAIL Lcom/l7tech/gateway/common/audit/Messages$M;
      // 11d: invokevirtual com/l7tech/server/policy/assertion/identity/ServerMemberOfGroup.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;)V
      // 120: getstatic com/l7tech/policy/assertion/AssertionStatus.UNAUTHORIZED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 123: areturn
      // 124: astore 3
      // 125: aload 0
      // 126: getstatic com/l7tech/gateway/common/audit/AssertionMessages.IDENTITY_PROVIDER_NOT_EXIST Lcom/l7tech/gateway/common/audit/Messages$M;
      // 129: invokevirtual com/l7tech/server/policy/assertion/identity/ServerMemberOfGroup.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;)V
      // 12c: getstatic com/l7tech/policy/assertion/AssertionStatus.UNAUTHORIZED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 12f: areturn
      // 130: astore 3
      // 131: aload 0
      // 132: getstatic com/l7tech/gateway/common/audit/AssertionMessages.MEMBEROFGROUP_GROUP_NOT_EXIST Lcom/l7tech/gateway/common/audit/Messages$M;
      // 135: invokevirtual com/l7tech/server/policy/assertion/identity/ServerMemberOfGroup.logAndAudit (Lcom/l7tech/gateway/common/audit/AuditDetailMessage;)V
      // 138: getstatic com/l7tech/policy/assertion/AssertionStatus.UNAUTHORIZED Lcom/l7tech/policy/assertion/AssertionStatus;
      // 13b: areturn
      // try (0 -> 4): 5 com/l7tech/objectmodel/ObjectNotFoundException
      // try (0 -> 4): 20 com/l7tech/objectmodel/FindException
      // try (35 -> 44): 139 com/l7tech/objectmodel/ObjectNotFoundException
      // try (45 -> 52): 53 com/l7tech/objectmodel/ObjectNotFoundException
      // try (45 -> 66): 139 com/l7tech/objectmodel/ObjectNotFoundException
      // try (79 -> 97): 98 com/l7tech/objectmodel/ObjectNotFoundException
      // try (73 -> 88): 89 com/l7tech/objectmodel/ObjectNotFoundException
      // try (71 -> 76): 77 com/l7tech/objectmodel/ObjectNotFoundException
      // try (67 -> 113): 139 com/l7tech/objectmodel/ObjectNotFoundException
      // try (114 -> 122): 139 com/l7tech/objectmodel/ObjectNotFoundException
      // try (123 -> 133): 139 com/l7tech/objectmodel/ObjectNotFoundException
      // try (134 -> 138): 139 com/l7tech/objectmodel/ObjectNotFoundException
      // try (35 -> 44): 145 com/l7tech/objectmodel/FindException
      // try (45 -> 66): 145 com/l7tech/objectmodel/FindException
      // try (67 -> 113): 145 com/l7tech/objectmodel/FindException
      // try (114 -> 122): 145 com/l7tech/objectmodel/FindException
      // try (123 -> 133): 145 com/l7tech/objectmodel/FindException
      // try (134 -> 138): 145 com/l7tech/objectmodel/FindException
   }

   private boolean a(long var1) {
      boolean var3 = true;
      long var4 = System.currentTimeMillis();
      if (var1 + 1000L > var4) {
         var3 = false;
      }

      return var3;
   }

   private static FindException a(FindException var0) {
      return var0;
   }

   static {
      String[] var5 = new String[2];
      int var3 = 0;
      String var2 = "Kb$\n\u0013)8Nn9H\u0013(?Ge%\u0001\u00053.B'tb<\u001b\u001f5,\u0006d(\u000b\u001e>/\u0006`;\u0007\u0003+kKb$\n\u0013)8Nn9H\u0005.(Eb:\u001b";
      int var4 = "Kb$\n\u0013)8Nn9H\u0013(?Ge%\u0001\u00053.B'tb<\u001b\u001f5,\u0006d(\u000b\u001e>/\u0006`;\u0007\u0003+kKb$\n\u0013)8Nn9H\u0005.(Eb:\u001b"
         .length();
      char var1 = 22;
      int var0 = -1;

      while (true) {
         String var10002 = d(77, b(var2.substring(++var0, var0 + var1)));
         byte var10001 = -1;
         var5[var3++] = var10002;
         if ((var0 += var1) >= var4) {
            g = var5;
            return;
         }

         var1 = var2.charAt(var0);
      }
   }

   private static char[] b(String var0) {
      char[] var10000 = var0.toCharArray();
      if (var10000.length < 2) {
         var10000[0] = (char)(var10000[0] ^ 6);
      }

      return var10000;
   }

   private static String d(int var0, char[] var1) {
      int var10003 = var1.length;
      int var10002 = var0;
      char[] var10001 = var1;
      int var10000 = var10003;

      for (int var2 = 0; var10000 > var2; var2++) {
         var10001[var2] = (char)(var10001[var2] ^ var10002 ^ switch (var2 % 7) {
            case 0 -> 107;
            case 1 -> 74;
            case 2 -> 4;
            case 3 -> 37;
            case 4 -> 59;
            case 5 -> 22;
            default -> 6;
         });
      }

      return new String(var10001).intern();
   }
}
