package com.l7tech.identity.fed;

import com.l7tech.identity.IdentityProviderConfig;
import com.l7tech.identity.PersistentUser;
import com.l7tech.identity.User;
import com.l7tech.objectmodel.Goid;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
import jakarta.xml.bind.annotation.XmlRootElement;
import org.hibernate.annotations.Proxy;
import org.hibernate.annotations.Type;

@XmlRootElement
@Entity
@Proxy(lazy = false)
@Table(name = "fed_user")
public class FederatedUser extends PersistentUser {
   static final long serialVersionUID = 3416378631589423434L;

   public FederatedUser() {
      this(IdentityProviderConfig.DEFAULT_GOID, null);
   }

   public FederatedUser(Goid var1, String var2) {
      super(var1, var2);
   }

   @Column(name = "provider_goid")
   @Type(type = "com.l7tech.server.util.GoidType")
   @Override
   public Goid getProviderId() {
      return super.getProviderId();
   }

   @Column(name = "subject_dn", length = 1024)
   @Override
   public String getSubjectDn() {
      return super.getSubjectDn();
   }

   @Override
   public void copyFrom(User var1) {
      FederatedUser var2 = (FederatedUser)var1;
      this.setGoid(var2.getGoid());
      this.setName(var2.getName());
      this.setSubjectDn(var2.getSubjectDn());
      this.setProviderId(var2.getProviderId());
      this.setLogin(var2.getLogin());
      this.setDepartment(var2.getDepartment());
      this.setEmail(var2.getEmail());
      this.setFirstName(var2.getFirstName());
      this.setLastName(var2.getLastName());
   }
}
