Project

General

Profile

1
package eu.dnetlib.openaire.user.ldap;
2

    
3
import com.unboundid.ldap.sdk.*;
4
import eu.dnetlib.openaire.user.LDAPUser;
5
import eu.dnetlib.openaire.user.MigrationUser;
6
import eu.dnetlib.openaire.user.Role;
7
import eu.dnetlib.openaire.user.dao.RoleDAO;
8
import eu.dnetlib.openaire.user.dao.SQLMigrationUserDAO;
9
import eu.dnetlib.openaire.user.store.LDAPConnector;
10
import eu.dnetlib.openaire.user.user.UserProfileIS;
11

    
12
import java.sql.SQLException;
13

    
14
/**
15
 * Created by sofia on 7/11/2016.
16
 */
17
public class MUserActionsLDAP
18
{
19
    public static boolean authenticate(String cn, String password) throws LDAPException
20
    {
21
        LDAPConnection connection = LDAPConnector.v().getConnection();
22
        String usersDN = LDAPConnector.v().getUsersDN();
23

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

    
27
            Filter filter = Filter.createEqualityFilter("cn", cn);
28

    
29
            SearchRequest searchRequest = new SearchRequest(usersDN, SearchScope.SUB, filter, "userPassword");
30
            SearchResult searchResult = connection.search(searchRequest);
31

    
32
            for (SearchResultEntry entry : searchResult.getSearchEntries()) {
33
                if (Joomla15PasswordHash.check(password, entry.getAttributeValue("userPassword")))
34
                    return true;
35
            }
36

    
37
            return false;
38
        }
39
        finally {
40
            if (connection != null)
41
                connection.close();
42
        }
43
    }
44

    
45
    public static boolean usernameExists(String username) throws LDAPException
46
    {
47
        LDAPConnection connection = LDAPConnector.v().getConnection();
48
        String usersDN = LDAPConnector.v().getUsersDN();
49

    
50
        try {
51
            System.out.println("checking if username " + username + " exists");
52

    
53
            Filter filter = Filter.createEqualityFilter("cn", username);
54

    
55
            SearchRequest searchRequest = new SearchRequest(usersDN, SearchScope.SUB, filter, "cn");
56
            SearchResult searchResult = connection.search(searchRequest);
57

    
58
            if (!searchResult.getSearchEntries().isEmpty()) {
59
                return true;
60
            }
61

    
62
            return false;
63
        }
64
        finally {
65
            if (connection != null)
66
                connection.close();
67
        }
68
    }
69

    
70
    public static boolean authenticateUser(String email, String password) throws LDAPException
71
    {
72
        LDAPConnection connection = LDAPConnector.v().getConnection();
73
        String usersDN = LDAPConnector.v().getUsersDN();
74

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

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

    
80
            SearchRequest searchRequest = new SearchRequest(usersDN, SearchScope.SUB, filter, "userPassword");
81
            SearchResult searchResult = connection.search(searchRequest);
82

    
83
            for (SearchResultEntry entry : searchResult.getSearchEntries()) {
84
                if (Joomla15PasswordHash.check(password, entry.getAttributeValue("userPassword")))
85
                    return true;
86
            }
87

    
88
            return false;
89
        }
90
        finally {
91
            if (connection != null)
92
                connection.close();
93
        }
94
    }
95

    
96
    public static String getRole(String email, String password) throws LDAPException, SQLException {
97

    
98
        boolean authenticated = authenticateUser(email, password);
99

    
100
        if (authenticated)
101
        {
102
            SQLMigrationUserDAO muDAO = new SQLMigrationUserDAO();
103
            MigrationUser mUser = new MigrationUser();
104
            mUser = muDAO.fetchByEmail(email);
105
            RoleDAO roleDAO = new RoleDAO();
106
            Role role = roleDAO.fetchById(mUser.getRoleId());
107
            return role.getRole();
108
        }
109
        return null;
110
    }
111

    
112
    public static LDAPUser getUser(String username) throws LDAPException {
113

    
114
        LDAPConnection connection = LDAPConnector.v().getConnection();
115
        String usersDN = LDAPConnector.v().getUsersDN();
116

    
117
        try {
118

    
119
            System.out.println("getting user " + username + " from ldap");
120

    
121
            Filter filter = Filter.create("cn=*");
122
            SearchRequest searchRequest =
123
                    new SearchRequest(usersDN, SearchScope.SUB, filter, "mail", "displayName", "cn");
124

    
125
            SearchResult searchResult = connection.search(searchRequest);
126
            LDAPUser user = new LDAPUser();
127

    
128
            for (SearchResultEntry entry : searchResult.getSearchEntries()) {
129
                user.setCn(entry.getAttributeValue("cn"));
130
                user.setEmail(entry.getAttributeValue("mail"));
131
                user.setDisplayName(entry.getAttributeValue("displayName"));
132
            }
133
            return user;
134

    
135
        } finally {
136
            if (connection != null)
137
                connection.close();
138
        }
139
    }
140
}
(2-2/4)