package eu.dnetlib.openaire.user.migration;

import com.sun.org.apache.xpath.internal.SourceTree;
import com.unboundid.ldap.sdk.*;
import eu.dnetlib.openaire.user.ldap.Joomla15PasswordHash;
import eu.dnetlib.openaire.user.ldap.MUserActionsLDAP;
import eu.dnetlib.openaire.user.ldap.UserActionsLDAP;

import java.sql.SQLException;
import java.util.UUID;

/**
 * Created by sofia on 25/4/2017.
 */
public class Tester {

    public static void main(String[] args) throws LDAPException, SQLException {

        // ldapsearch -x -LLL -h beta.openaire.eu -b cn=admin,dc=openaire,dc=eu
        // ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)

//        String ldapAddress = "beta.openaire.eu";
//        String ldapUsername = "cn=admin,dc=openaire,dc=eu";
//        String ldapPassword = "";
          String ldapUsersDN = "ou=users,dc=openaire,dc=eu";
//        int ldapPort = 389;
//
//        LDAPConnection connection = new LDAPConnection(ldapAddress, ldapPort, ldapUsername, ldapPassword);

        LDAPConnection connection = new LDAPConnection("beta.openaire.eu", 389, "cn=admin,dc=openaire,dc=eu", "");
        System.out.println("Hi");
        String email = "sbaltzi@di.uoa.gr";
        String password = "";

        try {
            System.out.println("checking if user " + email + " entered a correct password when logging in");

            Filter filter = Filter.createEqualityFilter("mail", email);

            SearchRequest searchRequest = new SearchRequest(ldapUsersDN, SearchScope.SUB, filter, "userPassword");
            SearchResult searchResult = connection.search(searchRequest);

            for (SearchResultEntry entry : searchResult.getSearchEntries()) {
                if (Joomla15PasswordHash.check(password, entry.getAttributeValue("userPassword")))
                    System.out.println("true");
            }

            System.out.println("false");
        }
        finally {
            if (connection != null)
                connection.close();
        }
    }
}
