def get(self, query, limit): apiResponse = ApiResponse() icons.updateImages() icons_found = icons.searchImages(query, limit) apiResponse.setError(False if (len(icons_found)) else True) apiResponse.setMessage( str(len(icons_found)) + " images found for your query" if ( len(icons_found)) else "No image found for that query") apiResponse.setDetails(icons_found) return apiResponse.getResponse()
def updateLDAPUser(user: User): """ Based on user's username. Checks for any change in user database details from its LDAP details. Updates any change in the database. """ response = ApiResponse() search_filter = "(&(uid={})(objectClass=inetOrgPerson))".format(user.username) try: ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER) connection = ldap.initialize(LDAP_ENDPOINT) connection.protocol_version = ldap.VERSION3 connection.simple_bind_s(LDAP_ADMIN_DN, LDAP_ADMIN_PASSWORD) ldap_user = connection.search_s(LDAP_USERS_DN, ldap.SCOPE_SUBTREE, search_filter) if len(ldap_user): ldap_user_details = { "first_name": ldap_user[0][1]["givenName"][0].decode('utf-8'), "last_name": ldap_user[0][1]["sn"][0].decode('utf-8') } user_details = { "first_name": user.first_name, "last_name": user.last_name } response.setSuccess() if ldap_user_details != user_details: user.first_name = ldap_user_details["first_name"] user.last_name = ldap_user_details["last_name"] user.updated_at = datetime.datetime.utcnow() if database.save_changes(user) is False: logger.info("User {} was updated from {} to {}".format( user.username, json.dumps(user_details), json.dumps(ldap_user_details) )) response.setError() response.setMessage("An error occured while persisting data to the database") except ldap.LDAPError as e: logger.debug("[AuthService.updateLDAPUser] Can't perform LDAP search") logger.debug(e) return response