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

import com.l7tech.gateway.common.audit.AssertionMessages;
import com.l7tech.identity.AuthenticationException;
import com.l7tech.identity.User;
import com.l7tech.objectmodel.Goid;
import com.l7tech.policy.assertion.AssertionStatus;
import com.l7tech.policy.assertion.credential.LoginCredentials;
import com.l7tech.policy.assertion.identity.AuthenticationAssertion;
import com.l7tech.server.identity.AuthenticationResult;
import com.l7tech.server.message.PolicyEnforcementContext;
import com.l7tech.util.Pair;
import java.util.ArrayList;
import java.util.List;
import org.springframework.context.ApplicationContext;

public class ServerAuthenticationAssertion extends ServerIdentityAssertion<AuthenticationAssertion> {
   public ServerAuthenticationAssertion(AuthenticationAssertion var1, ApplicationContext var2) {
      super(var1, var2);
   }

   @Override
   protected AssertionStatus checkUser(AuthenticationResult var1) {
      User var2 = var1.getUser();
      Goid var3 = var2.getProviderId();
      if (!var3.equals(this.assertion.getIdentityProviderOid())) {
         this.logAndAudit(AssertionMessages.SPECIFICUSER_PROVIDER_MISMATCH, Goid.toString(var3), Goid.toString(this.assertion.getIdentityProviderOid()));
         return AssertionStatus.AUTH_FAILED;
      } else {
         return AssertionStatus.NONE;
      }
   }

   @Override
   protected void processAuthFailure(PolicyEnforcementContext var1, List<Pair<LoginCredentials, AuthenticationException>> var2) {
      ArrayList var3 = new ArrayList();
      ArrayList var4 = new ArrayList();

      for (Pair var6 : var2) {
         var3.add(((LoginCredentials)var6.getKey()).getName());
         var4.add(((AuthenticationException)var6.getValue()).getMessage());
      }

      var1.setVariable(AuthenticationAssertion.LDAP_PROVIDER_ERROR_LOGIN, var3);
      var1.setVariable(AuthenticationAssertion.LDAP_PROVIDER_ERROR_MESSAGE, var4);
   }
}
