package com.l7tech.external.assertions.gatewaygraphql.server.data;

import com.l7tech.external.assertions.gatewaygraphql.server.resolver.query.IdpResolverHelper;
import com.l7tech.external.assertions.gatewaygraphql.server.util.JsonUtil;
import com.l7tech.identity.IdentityProvider;
import com.l7tech.identity.PersistentUser;
import com.l7tech.identity.User;
import org.apache.commons.codec.digest.DigestUtils;

public abstract class IdpUserDTO<IDPU extends User, IDP extends IdentityProvider> extends IdpEntityDTO<IDP> {
   protected final IDPU user;
   protected final IdpResolverHelper idpHelper;

   protected IdpUserDTO(IDPU var1, IDP var2, IdpResolverHelper var3) {
      super((IDP)var2);
      this.user = (IDPU)var1;
      this.idpHelper = var3;
   }

   public IDPU entity() {
      return this.user;
   }

   @Override
   public String getGoid() {
      return ((PersistentUser)this.user).getGoid().toHexString();
   }

   public String getName() {
      return this.user.getName();
   }

   public String getProviderName() {
      return this.idp.getConfig().getName();
   }

   public String getLogin() {
      return this.user.getLogin();
   }

   public String getSubjectDn() {
      return this.user.getSubjectDn();
   }

   public String getCertBase64() {
      return this.idpHelper.userCertBase64((PersistentUser)this.user);
   }

   public String getFirstName() {
      return this.user.getFirstName();
   }

   public String getLastName() {
      return this.user.getLastName();
   }

   public String getEmail() {
      return this.user.getEmail();
   }

   public String getDescription() {
      return this.user instanceof PersistentUser ? ((PersistentUser)this.user).getDescription() : null;
   }

   @Override
   public String getChecksum() {
      try {
         return DigestUtils.shaHex(JsonUtil.DEFAULT.serialize(this.createWrapperObject()));
      } catch (Throwable var2) {
         throw var2;
      }
   }

   @Override
   public abstract Object createWrapperObject();
}
