ldap search
This commit is contained in:
		
							parent
							
								
									c6508fd516
								
							
						
					
					
						commit
						589ae3e3a8
					
				| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
from flask import Blueprint, request, jsonify
 | 
			
		||||
from geruecht import BAR, db
 | 
			
		||||
from geruecht import BAR, db, ldapController as ldap
 | 
			
		||||
from geruecht.routes import verifyAccessToken
 | 
			
		||||
from geruecht.model.user import User
 | 
			
		||||
from datetime import datetime
 | 
			
		||||
| 
						 | 
				
			
			@ -90,26 +90,18 @@ def _getUsers():
 | 
			
		|||
        return jsonify(retVal)
 | 
			
		||||
    return jsonify({"error": "permission denied"}), 401
 | 
			
		||||
 | 
			
		||||
@baruser.route("/barGetUser", methods=['POST'])
 | 
			
		||||
def _getUser():
 | 
			
		||||
    """ Get specified User
 | 
			
		||||
 | 
			
		||||
        This function returns the user with posted userID and them amount and credit.
 | 
			
		||||
 | 
			
		||||
        Returns:
 | 
			
		||||
            JSON-File with userID, amount and credit
 | 
			
		||||
            or ERROR 401 Permission Denied
 | 
			
		||||
    """
 | 
			
		||||
@baruser.route("/search", methods=['POST'])
 | 
			
		||||
def _search():
 | 
			
		||||
    token = request.headers.get("Token")
 | 
			
		||||
    print(token)
 | 
			
		||||
    accToken = verifyAccessToken(token, BAR)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    if accToken is not None:
 | 
			
		||||
        data = request.get_json()
 | 
			
		||||
        userID = data['userId']
 | 
			
		||||
 | 
			
		||||
        user = User.query.filter_by(userID=userID)
 | 
			
		||||
        month = user.getGeruecht().getMonth()
 | 
			
		||||
        searchString = data['searchString']
 | 
			
		||||
 | 
			
		||||
        return jsonify({"userId": user.userID, "amount": month[1], "credit": month[0]})
 | 
			
		||||
        retVal = ldap.searchUser(searchString)
 | 
			
		||||
 | 
			
		||||
        return jsonify(retVal)
 | 
			
		||||
    return jsonify({"error": "permission denied"}), 401
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -50,6 +50,39 @@ class LDAPController(metaclass=Singleton):
 | 
			
		|||
            elif data == 'bar':
 | 
			
		||||
                return BAR
 | 
			
		||||
 | 
			
		||||
    def __isUserInList(self, list, username):
 | 
			
		||||
        help_list = []
 | 
			
		||||
        for user in list:
 | 
			
		||||
            help_list.append(user[1]['cn'][0].decode('utf-8'))
 | 
			
		||||
        if username in help_list:
 | 
			
		||||
            return True
 | 
			
		||||
        return False
 | 
			
		||||
 | 
			
		||||
    def searchUser(self, searchString):
 | 
			
		||||
        self.connect()
 | 
			
		||||
 | 
			
		||||
        name = searchString.split(" ")
 | 
			
		||||
        name_result = []
 | 
			
		||||
 | 
			
		||||
        if len(name) == 1:
 | 
			
		||||
            name_result[0] = self.client.search_s('ou=user,{}'.format(self.dn), ldap.SCOPE_SUBTREE, 'givenName={}'.format(name[0]), ['cn', 'givenName', 'sn'])
 | 
			
		||||
            name_result[1] = self.client.search_s('ou=user,{}'.format(self.dn), ldap.SCOPE_SUBTREE, 'sn={}'.format(name[0]),['cn', 'givenName', 'sn'])
 | 
			
		||||
        else:
 | 
			
		||||
            name_result[2] = self.client.search_s('ou=user,{}'.format(self.dn), ldap.SCOPE_SUBTREE,
 | 
			
		||||
                                              'givenName={}'.format(name[0]), ['cn', 'givenName', 'sn'])
 | 
			
		||||
            name_result[3] = self.client.search_s('ou=user,{}'.format(self.dn), ldap.SCOPE_SUBTREE, 'sn={}'.format(name[0]),
 | 
			
		||||
                                             ['cn', 'givenName', 'sn'])
 | 
			
		||||
        retVal = []
 | 
			
		||||
 | 
			
		||||
        for user in name_result:
 | 
			
		||||
            username = user[1]['cn'][0].decode('utf-8')
 | 
			
		||||
            if not self.__isUserInList(retVal, username):
 | 
			
		||||
                firstname = user[1]['givenName'][0].decode('utf-8')
 | 
			
		||||
                lastname = user[1]['givenName'][0].decode('utf-8')
 | 
			
		||||
                retVal.append({username: username, firstname: firstname, lastname: lastname})
 | 
			
		||||
 | 
			
		||||
        return retVal
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    a = LDAPController()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue