package com.l7tech.server.security.rbac;

import com.l7tech.gateway.common.security.rbac.OperationType;
import com.l7tech.gateway.common.security.rbac.Role;
import com.l7tech.objectmodel.Entity;
import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.SaveException;
import com.l7tech.objectmodel.SecurityZone;
import com.l7tech.objectmodel.UpdateException;
import com.l7tech.objectmodel.folder.Folder;
import com.l7tech.server.HibernateEntityManager;
import com.l7tech.server.folder.FolderManager;
import com.l7tech.util.Config;
import com.l7tech.util.TextUtils;
import jakarta.inject.Inject;
import java.text.MessageFormat;
import java.util.logging.Logger;
import java.util.regex.Pattern;
import org.jetbrains.annotations.NotNull;

public class SecurityZoneManagerImpl extends HibernateEntityManager<SecurityZone, EntityHeader> implements SecurityZoneManager {
   static final String m;
   static final String n;
   static final String o;
   static final String p;
   static final Pattern q;
   static final int r = 50;
   private static final Logger s;
   private static final String t;
   private static final String u;
   @Inject
   private RoleManager roleManager;
   @Inject
   private FolderManager folderManager;
   @Inject
   private Config config;
   private static final String[] v;

   public Class<? extends Entity> getImpClass() {
      return SecurityZone.class;
   }

   public void createRoles(SecurityZone var1) throws SaveException {
      Folder var2 = this.a();

      try {
         if (this.config.getBooleanProperty(v[4], true)) {
            this.a(var1, var2);
         }
      } catch (SaveException var4) {
         throw a(var4);
      }

      try {
         if (this.config.getBooleanProperty(v[5], true)) {
            this.b(var1, var2);
         }
      } catch (SaveException var3) {
         throw a(var3);
      }
   }

   @Override
   public void addManageSecurityZoneRole(@NotNull SecurityZone var1) throws SaveException {
      try {
         if (var1 == null) {
            b(0);
         }
      } catch (SaveException var2) {
         throw a(var2);
      }

      this.b(var1, this.a());
   }

   @Override
   public void addReadSecurityZoneRole(@NotNull SecurityZone var1) throws SaveException {
      try {
         if (var1 == null) {
            b(1);
         }
      } catch (SaveException var2) {
         throw a(var2);
      }

      this.a(var1, this.a());
   }

   public void updateRoles(@NotNull SecurityZone var1) throws UpdateException {
      try {
         if (var1 == null) {
            b(2);
         }
      } catch (FindException var4) {
         throw a(var4);
      }

      try {
         this.roleManager.renameEntitySpecificRoles(EntityType.SECURITY_ZONE, var1, q);
      } catch (FindException var3) {
         throw new UpdateException(v[15], var3);
      }
   }

   private Folder a() throws SaveException {
      try {
         return this.folderManager.findRootFolder();
      } catch (FindException var3) {
         throw new SaveException(v[26], var3);
      }
   }

   private Role a(@NotNull String var1, @NotNull String var2, Goid var3) {
      try {
         if (var1 == null) {
            b(3);
         }
      } catch (IllegalArgumentException var5) {
         throw a(var5);
      }

      try {
         if (var2 == null) {
            b(4);
         }
      } catch (IllegalArgumentException var6) {
         throw a(var6);
      }

      s.info(v[0] + var1);
      Role var4 = new Role();
      var4.setName(var1);
      var4.setDescription(var2);
      var4.setEntityType(EntityType.SECURITY_ZONE);
      var4.setEntityGoid(var3);
      return var4;
   }

   private void a(@NotNull SecurityZone var1, @NotNull Folder var2) throws SaveException {
      try {
         if (var1 == null) {
            b(5);
         }
      } catch (SaveException var6) {
         throw a(var6);
      }

      try {
         if (var2 == null) {
            b(6);
         }
      } catch (SaveException var7) {
         throw a(var7);
      }

      String[] var5 = v;
      String var3 = MessageFormat.format(var5[16], TextUtils.truncStringMiddle(var1.getName(), 50), var1.getGoid().toHexString());
      Role var4 = this.a(var3, var5[2], var1.getGoid());
      this.a(var1, var4, var2);
      this.roleManager.save(var4);
   }

   private void b(@NotNull SecurityZone var1, @NotNull Folder var2) throws SaveException {
      try {
         if (var1 == null) {
            b(7);
         }
      } catch (SaveException var6) {
         throw a(var6);
      }

      try {
         if (var2 == null) {
            b(8);
         }
      } catch (SaveException var7) {
         throw a(var7);
      }

      String[] var5 = v;
      String var3 = MessageFormat.format(var5[8], TextUtils.truncStringMiddle(var1.getName(), 50), var1.getGoid().toHexString());
      Role var4 = this.a(var3, var5[25], var1.getGoid());
      this.a(var1, var4, var2);
      var4.addSecurityZonePermission(OperationType.CREATE, EntityType.ANY, var1);
      var4.addSecurityZonePermission(OperationType.UPDATE, EntityType.ANY, var1);
      var4.addSecurityZonePermission(OperationType.DELETE, EntityType.ANY, var1);
      this.roleManager.save(var4);
   }

   private void a(SecurityZone var1, Role var2, Folder var3) throws SaveException {
      var2.addEntityPermission(OperationType.READ, EntityType.FOLDER, var3.getId());
      var2.addEntityPermission(OperationType.READ, EntityType.SECURITY_ZONE, var1.getId());
      var2.addSecurityZonePermission(OperationType.READ, EntityType.ANY, var1);
   }

   static {
      String[] var5 = new String[27];
      int var3 = 0;
      String var2 = "`u\u000b\u0015%#ED'\u0000\u0011&jyLk\u000bNq>bu\t\u0001</EW'\b\u001b#jkmh\u001a:$&G\u0003w\u000f\u00060'NWb\u001cTvoX\u0004'\u0001\u0012qoX\r\"\u001dT<?XW'\u0000\u001b%jIF'\u0000\u0001=&^vt\u000b\u0006\"jJPt\u0007\u0013?/O\u0003s\u0001T%\"N\u0003|^\tq8DObN\u001c0<N\u0003s\u0006\u0011q+IJk\u0007\u0000(j_L'\u001c\u00110.\u000bFi\u001a\u001d%#NP'\u0019\u001d%\"BM'\u001a\u001c4jP\u0012zN\u00074)^Qn\u001a\rq0DMb@\u000bVw\n\u0015%/yLk\u000b\u0007!Qe\u000f\u0017\u007f+^Wh<\u001b=/\u0005Un\u000b\u0003\u000b%EF)\u000f\u0001%%hQb\u000f\u00004#Qe\u000f\u0017\u007f+^Wh<\u001b=/\u0005Nf\u0000\u00156/qLi\u000bZ0?_LD\u001c\u00110>N\u0004yh\u0000\u0011\nQh\u0001\u0000\u0017%GGb\u001c\u0016nf\u0000\u00156/\u000bX7\u0013T\u000b%EF'FW*{V\n\u0004Yh\u0000\u0011\u0017Bc\n&4+Opb\r\u0001##_Z]\u0001\u001a4\u0018DOb\u0014un\u000b\u0003q1\u001b^'4\u001b?/\u000b\u000b$\u0015E,c!Qe\u000f\u0017\u007f+^Wh<\u001b=/\u0005Un\u000b\u0003\u000b%EF)\u000f\u0001%%hQb\u000f\u00004^vt\u000b\u0006\"jJPt\u0007\u0013?/O\u0003s\u0001T%\"N\u0003|^\tq8DObN\u001c0<N\u0003s\u0006\u0011q+IJk\u0007\u0000(j_L'\u001c\u00110.\u000bFi\u001a\u001d%#NP'\u0019\u001d%\"BM'\u001a\u001c4jP\u0012zN\u00074)^Qn\u001a\rq0DMb@\u0019Bc\n90$JDb=\u00112?YJs\u0017.>$Nqh\u0002\u0011\u001e`h\u001b\u00185jELsN\u00128$O\u0003u\u0001\u001849\u000bWhN\u0001!.JWb\u0014un\u000b\u0003q1\u001b^'4\u001b?/\u000b\u000b$\u0015E,c\u0004Mf\u0003\u0011yvt\u000b\u0006\"jJPt\u0007\u0013?/O\u0003s\u0001T%\"N\u0003|^\tq8DObN\u001c0<N\u0003s\u0006\u0011q+IJk\u0007\u0000(j_L'\r\u00064+_F+N\u00064+O\u000f'\u001b\u00045+_F'\u000f\u001a5jOFk\u000b\u00004jNMs\u0007\u00008/X\u0003p\u0007\u00009#E\u0003s\u0006\u0011q1\u001a^'\u001d\u00112?YJs\u0017T+%EF)\u001a@u\u000b\u0015%/iBt\u000b'4)^Qn\u001a\r\u000b%EFU\u0001\u001847@h\u0003[=}_Fd\u0006[\"/YUb\u001c[\"/HVu\u0007\u0000(eYAf\r[\u0002/HVu\u0007\u0000(\u0010DMb#\u0015?+LFu'\u0019!&\u000bGb\u001d\u0017##[Wn\u0001\u001a\u0016nf\u0000\u00156/\u000bX7\u0013T\u000b%EF'FW*{V\n=\u000b8RI\u000f\u0016\\\u0004|IE}{\u0019\u001b \u0013Sqc\u0005\t8FKljP\u0013zN(yip\u007fc5(5f\u000b~{55|\u0010J\u000e}^Yh\u0017v\t[GPx#Qe\u000f\u0017\u007f+^Wh<\u001b=/\u0005Nf\u0000\u00156/qLi\u000bZ0?_LD\u001c\u00110>N";
      int var4 = "`u\u000b\u0015%#ED'\u0000\u0011&jyLk\u000bNq>bu\t\u0001</EW'\b\u001b#jkmh\u001a:$&G\u0003w\u000f\u00060'NWb\u001cTvoX\u0004'\u0001\u0012qoX\r\"\u001dT<?XW'\u0000\u001b%jIF'\u0000\u0001=&^vt\u000b\u0006\"jJPt\u0007\u0013?/O\u0003s\u0001T%\"N\u0003|^\tq8DObN\u001c0<N\u0003s\u0006\u0011q+IJk\u0007\u0000(j_L'\u001c\u00110.\u000bFi\u001a\u001d%#NP'\u0019\u001d%\"BM'\u001a\u001c4jP\u0012zN\u00074)^Qn\u001a\rq0DMb@\u000bVw\n\u0015%/yLk\u000b\u0007!Qe\u000f\u0017\u007f+^Wh<\u001b=/\u0005Un\u000b\u0003\u000b%EF)\u000f\u0001%%hQb\u000f\u00004#Qe\u000f\u0017\u007f+^Wh<\u001b=/\u0005Nf\u0000\u00156/qLi\u000bZ0?_LD\u001c\u00110>N\u0004yh\u0000\u0011\nQh\u0001\u0000\u0017%GGb\u001c\u0016nf\u0000\u00156/\u000bX7\u0013T\u000b%EF'FW*{V\n\u0004Yh\u0000\u0011\u0017Bc\n&4+Opb\r\u0001##_Z]\u0001\u001a4\u0018DOb\u0014un\u000b\u0003q1\u001b^'4\u001b?/\u000b\u000b$\u0015E,c!Qe\u000f\u0017\u007f+^Wh<\u001b=/\u0005Un\u000b\u0003\u000b%EF)\u000f\u0001%%hQb\u000f\u00004^vt\u000b\u0006\"jJPt\u0007\u0013?/O\u0003s\u0001T%\"N\u0003|^\tq8DObN\u001c0<N\u0003s\u0006\u0011q+IJk\u0007\u0000(j_L'\u001c\u00110.\u000bFi\u001a\u001d%#NP'\u0019\u001d%\"BM'\u001a\u001c4jP\u0012zN\u00074)^Qn\u001a\rq0DMb@\u0019Bc\n90$JDb=\u00112?YJs\u0017.>$Nqh\u0002\u0011\u001e`h\u001b\u00185jELsN\u00128$O\u0003u\u0001\u001849\u000bWhN\u0001!.JWb\u0014un\u000b\u0003q1\u001b^'4\u001b?/\u000b\u000b$\u0015E,c\u0004Mf\u0003\u0011yvt\u000b\u0006\"jJPt\u0007\u0013?/O\u0003s\u0001T%\"N\u0003|^\tq8DObN\u001c0<N\u0003s\u0006\u0011q+IJk\u0007\u0000(j_L'\r\u00064+_F+N\u00064+O\u000f'\u001b\u00045+_F'\u000f\u001a5jOFk\u000b\u00004jNMs\u0007\u00008/X\u0003p\u0007\u00009#E\u0003s\u0006\u0011q1\u001a^'\u001d\u00112?YJs\u0017T+%EF)\u001a@u\u000b\u0015%/iBt\u000b'4)^Qn\u001a\r\u000b%EFU\u0001\u001847@h\u0003[=}_Fd\u0006[\"/YUb\u001c[\"/HVu\u0007\u0000(eYAf\r[\u0002/HVu\u0007\u0000(\u0010DMb#\u0015?+LFu'\u0019!&\u000bGb\u001d\u0017##[Wn\u0001\u001a\u0016nf\u0000\u00156/\u000bX7\u0013T\u000b%EF'FW*{V\n=\u000b8RI\u000f\u0016\\\u0004|IE}{\u0019\u001b \u0013Sqc\u0005\t8FKljP\u0013zN(yip\u007fc5(5f\u000b~{55|\u0010J\u000e}^Yh\u0017v\t[GPx#Qe\u000f\u0017\u007f+^Wh<\u001b=/\u0005Nf\u0000\u00156/qLi\u000bZ0?_LD\u001c\u00110>N"
         .length();
      char var1 = 19;
      int var7 = -1;

      label24:
      while (true) {
         byte var10000 = 70;
         String var10001 = var2.substring(++var7, var7 + var1);
         byte var10002 = -1;

         while (true) {
            String var9 = b(var10000, a(var10001));
            switch (var10002) {
               case 0:
                  var5[var3++] = var9;
                  if ((var7 += var1) >= var4) {
                     v = var5;
                     String[] var10 = v;
                     o = v[13];
                     p = var10[18];
                     u = var10[11];
                     n = var10[24];
                     m = var10[12];
                     t = var10[22];
                     String[] var8 = v;
                     q = Pattern.compile(MessageFormat.format(var8[23], var8[6]));
                     s = Logger.getLogger(SecurityZoneManagerImpl.class.getName());
                     return;
                  }

                  var1 = var2.charAt(var7);
                  break;
               default:
                  var5[var3++] = var9;
                  if ((var7 += var1) < var4) {
                     var1 = var2.charAt(var7);
                     continue label24;
                  }

                  var2 = "!#\\Qu=\u001d\u0007#PDhx\u0018T$V\u0003ru\u0019T+\t^&o\u0013\u00185\u0019Kgk\u0019T$QF&|\u001e\u001d<PW\u007f=\b\u001bpZQc|\b\u0011|\u0019Qc|\u0018XpLSb|\b\u0011pXMb=\u0018\u0011<\\Wc=\u0019\u001a$PWox\u000fT'PWnt\u0012T$QF&fM\tpJFeh\u000e\u001d$@\u0003|r\u0012\u0011~\u001a!>XAjx\\\u0000?\u0019Eos\u0018T\"VLr=\u001a\u001b<]Ft";
                  var4 = "!#\\Qu=\u001d\u0007#PDhx\u0018T$V\u0003ru\u0019T+\t^&o\u0013\u00185\u0019Kgk\u0019T$QF&|\u001e\u001d<PW\u007f=\b\u001bpZQc|\b\u0011|\u0019Qc|\u0018XpLSb|\b\u0011pXMb=\u0018\u0011<\\Wc=\u0019\u001a$PWox\u000fT'PWnt\u0012T$QF&fM\tpJFeh\u000e\u001d$@\u0003|r\u0012\u0011~\u001a!>XAjx\\\u0000?\u0019Eos\u0018T\"VLr=\u001a\u001b<]Ft"
                     .length();
                  var1 = 'y';
                  var7 = -1;
            }

            var10000 = 17;
            var10001 = var2.substring(++var7, var7 + var1);
            var10002 = 0;
         }
      }
   }

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

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

      return var10000;
   }

   private static String b(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 -> 101;
            case 1 -> 65;
            case 2 -> 40;
            case 3 -> 50;
            case 4 -> 23;
            case 5 -> 12;
            default -> 109;
         });
      }

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