From d1452228123e6216b803d220246a68e22d77d74a Mon Sep 17 00:00:00 2001 From: Joseph Schorr Date: Thu, 27 Oct 2016 15:31:32 -0400 Subject: [PATCH] Add support for linking to external users in entity search --- avatars/avatars.py | 3 ++ data/model/user.py | 27 ++++++++--- data/users/__init__.py | 25 ++++++++++ data/users/database.py | 12 +++++ data/users/federated.py | 29 +++++++++-- endpoints/api/search.py | 59 +++++++++++++++++++++-- static/js/directives/ui/entity-search.js | 16 +++++- test/data/test.db | Bin 1265664 -> 1265664 bytes 8 files changed, 156 insertions(+), 15 deletions(-) diff --git a/avatars/avatars.py b/avatars/avatars.py index eaf58bc52..51f6605ac 100644 --- a/avatars/avatars.py +++ b/avatars/avatars.py @@ -65,6 +65,9 @@ class BaseAvatar(object): def get_data_for_org(self, org): return self.get_data(org.username, org.email, 'org') + def get_data_for_external_user(self, external_user): + return self.get_data(external_user.username, external_user.email, 'user') + def get_data(self, name, email_or_id, kind='user'): """ Computes and returns the full data block for the avatar: { diff --git a/data/model/user.py b/data/model/user.py index b3d5513f9..a94bc4cb8 100644 --- a/data/model/user.py +++ b/data/model/user.py @@ -499,8 +499,7 @@ def get_matching_user_namespaces(namespace_prefix, username, limit=10): return _basequery.filter_to_repos_for_user(base_query, username).limit(limit) -def get_matching_users(username_prefix, robot_namespace=None, - organization=None): +def get_matching_users(username_prefix, robot_namespace=None, organization=None, limit=20): user_search = _basequery.prefix_search(User.username, username_prefix) direct_user_query = (user_search & (User.organization == False) & (User.robot == False)) @@ -516,23 +515,24 @@ def get_matching_users(username_prefix, robot_namespace=None, if organization: query = (query - .select(User.username, User.email, User.robot, fn.Sum(Team.id)) + .select(User.id, User.username, User.email, User.robot, fn.Sum(Team.id)) .join(TeamMember, JOIN_LEFT_OUTER) .join(Team, JOIN_LEFT_OUTER, on=((Team.id == TeamMember.team) & (Team.organization == organization)))) class MatchingUserResult(object): def __init__(self, *args): - self.username = args[0] - self.email = args[1] - self.robot = args[2] + self.id = args[0] + self.username = args[1] + self.email = args[2] + self.robot = args[3] if organization: self.is_org_member = (args[3] != None) else: self.is_org_member = None - return (MatchingUserResult(*args) for args in query.tuples().limit(10)) + return (MatchingUserResult(*args) for args in query.tuples().limit(limit)) def verify_user(username_or_email, password): @@ -749,3 +749,16 @@ def get_region_locations(user): """ Returns the locations defined as preferred storage for the given user. """ query = UserRegion.select().join(ImageStorageLocation).where(UserRegion.user == user) return set([region.location.name for region in query]) + +def get_federated_logins(user_ids, service_name): + """ Returns all federated logins for the given user ids under the given external service. """ + if not user_ids: + return [] + + return (FederatedLogin + .select() + .join(User) + .switch(FederatedLogin) + .join(LoginService) + .where(FederatedLogin.user << user_ids, + LoginService.name == service_name)) diff --git a/data/users/__init__.py b/data/users/__init__.py index 0cebb1cae..6f61b28f8 100644 --- a/data/users/__init__.py +++ b/data/users/__init__.py @@ -139,6 +139,31 @@ class UserAuthentication(object): return data.get('password', encrypted) + @property + def federated_service(self): + """ Returns the name of the federated service for the auth system. If none, should return None. + """ + return self.state.federated_service + + def query_users(self, query, limit=20): + """ Performs a lookup against the user system for the specified query. The returned tuple + will be of the form (results, federated_login_id, err_msg). If the method is unsupported, + the results portion of the tuple will be None instead of empty list. + + Note that this method can and will return results for users not yet found within the + database; it is the responsibility of the caller to call link_user if they need the + database row for the user system record. + + Results will be in the form of objects's with username and email fields. + """ + return self.state.query_users(query, limit) + + def link_user(self, username_or_email): + """ Returns a tuple containing the database user record linked to the given username/email + and any error that occurred when trying to link the user. + """ + return self.state.link_user(username_or_email) + def confirm_existing_user(self, username, password): """ Verifies that the given password matches to the given DB username. Unlike verify_credentials, this call first translates the DB user via the FederatedLogin table diff --git a/data/users/database.py b/data/users/database.py index e8cb3faad..4edb0f442 100644 --- a/data/users/database.py +++ b/data/users/database.py @@ -1,6 +1,10 @@ from data import model class DatabaseUsers(object): + @property + def federated_service(self): + return None + def verify_credentials(self, username_or_email, password): """ Simply delegate to the model implementation. """ result = model.user.verify_user(username_or_email, password) @@ -16,3 +20,11 @@ class DatabaseUsers(object): def confirm_existing_user(self, username, password): return self.verify_credentials(username, password) + def link_user(self, username_or_email): + """ Never used since all users being added are already, by definition, in the database. """ + return (None, 'Unsupported for this authentication system') + + def query_users(self, query, limit): + """ No need to implement, as we already query for users directly in the database. """ + return (None, '', '') + diff --git a/data/users/federated.py b/data/users/federated.py index e70740917..7ba1f4a80 100644 --- a/data/users/federated.py +++ b/data/users/federated.py @@ -7,7 +7,7 @@ from util.validation import generate_valid_usernames logger = logging.getLogger(__name__) -VerifiedCredentials = namedtuple('VerifiedCredentials', ['username', 'email']) +UserInformation = namedtuple('UserInformation', ['username', 'email', 'id']) class FederatedUsers(object): """ Base class for all federated users systems. """ @@ -15,11 +15,26 @@ class FederatedUsers(object): def __init__(self, federated_service): self._federated_service = federated_service + @property + def federated_service(self): + return self._federated_service + + def get_user(self, username_or_email): + """ Retrieves the user with the given username or email, returning a tuple containing + a UserInformation (if success) and the error message (on failure). + """ + raise NotImplementedError + def verify_credentials(self, username_or_email, password): """ Verifies the given credentials against the backing federated service, returning - a tuple containing a VerifiedCredentials (if success) and the error message (if failed). """ + a tuple containing a UserInformation (on success) and the error message (on failure). + """ raise NotImplementedError + def query_users(self, query, limit=20): + """ If implemented, get_user must be implemented as well. """ + return (None, 'Not supported') + def _get_federated_user(self, username, email): db_user = model.user.verify_federated_login(self._federated_service, username) if not db_user: @@ -34,7 +49,8 @@ class FederatedUsers(object): return (None, 'Unable to pick a username. Please report this to your administrator.') db_user = model.user.create_federated_user(valid_username, email, self._federated_service, - username, set_password_notification=False) + username, + set_password_notification=False) else: # Update the db attributes from the federated service. db_user.email = email @@ -42,6 +58,13 @@ class FederatedUsers(object): return (db_user, None) + def link_user(self, username_or_email): + (credentials, err_msg) = self.get_user(username_or_email) + if credentials is None: + return (None, err_msg) + + return self._get_federated_user(credentials.username, credentials.email) + def verify_and_link_user(self, username_or_email, password): """ Verifies the given credentials and, if valid, creates/links a database user to the associated federated service. diff --git a/endpoints/api/search.py b/endpoints/api/search.py index b11f1b53d..b5d233f3b 100644 --- a/endpoints/api/search.py +++ b/endpoints/api/search.py @@ -1,14 +1,15 @@ """ Conduct searches against all registry context. """ from endpoints.api import (ApiResource, parse_args, query_param, truthy_bool, nickname, resource, - require_scope, path_param) + require_scope, path_param, internal_only, Unauthorized, InvalidRequest, + show_if) from data import model from auth.permissions import (OrganizationMemberPermission, ReadRepositoryPermission, UserAdminPermission, AdministerOrganizationPermission, ReadRepositoryPermission) from auth.auth_context import get_authenticated_user from auth import scopes -from app import avatar +from app import avatar, authentication from operator import itemgetter from stringscore import liquidmetal from util.names import parse_robot_username @@ -16,6 +17,32 @@ from util.names import parse_robot_username import anunidecode # Don't listen to pylint's lies. This import is required. import math +@show_if(authentication.federated_service) # Only enabled for non-DB auth. +@resource('/v1/entities/link/') +@internal_only +class LinkExternalEntity(ApiResource): + """ Resource for linking external entities to internal users. """ + @nickname('linkExternalUser') + def post(self, username): + # Only allowed if there is a logged in user. + if not get_authenticated_user(): + raise Unauthorized() + + # Try to link the user with the given *external* username, to an internal record. + (user, err_msg) = authentication.link_user(username) + if user is None: + raise InvalidRequest(err_msg, payload={'username': username}) + + return { + 'entity': { + 'name': user.username, + 'kind': 'user', + 'is_robot': False, + 'avatar': avatar.get_data_for_user(user) + } + } + + @resource('/v1/entities/') class EntitySearch(ApiResource): """ Resource for searching entities. """ @@ -69,7 +96,22 @@ class EntitySearch(ApiResource): if admin_permission.can(): robot_namespace = namespace_name - users = model.user.get_matching_users(prefix, robot_namespace, organization) + # Lookup users in the database for the prefix query. + users = model.user.get_matching_users(prefix, robot_namespace, organization, limit=10) + + # Lookup users via the user system for the prefix query. We'll filter out any users that + # already exist in the database. + external_users, federated_id, _ = authentication.query_users(prefix, limit=10) + filtered_external_users = [] + if external_users and federated_id is not None: + users = list(users) + user_ids = [user.id for user in users] + + # Filter the users if any are already found via the database. We do so by looking up all + # the found users in the federated user system. + federated_query = model.user.get_federated_logins(user_ids, federated_id) + found = {result.service_ident for result in federated_query} + filtered_external_users = [user for user in external_users if not user.username in found] def entity_team_view(team): result = { @@ -93,11 +135,20 @@ class EntitySearch(ApiResource): return user_json + def external_view(user): + result = { + 'name': user.username, + 'kind': 'external', + 'avatar': avatar.get_data_for_external_user(user) + } + return result + team_data = [entity_team_view(team) for team in teams] user_data = [user_view(user) for user in users] + external_data = [external_view(user) for user in filtered_external_users] return { - 'results': team_data + user_data + org_data + 'results': team_data + user_data + org_data + external_data } diff --git a/static/js/directives/ui/entity-search.js b/static/js/directives/ui/entity-search.js index 4611a81ae..c0be63673 100644 --- a/static/js/directives/ui/entity-search.js +++ b/static/js/directives/ui/entity-search.js @@ -148,6 +148,18 @@ angular.module('quay').directive('entitySearch', function () { }; $scope.setEntityInternal = function(entity, updateTypeahead) { + // If the entity is an external entity, convert it to a known user via an API call. + if (entity.kind == 'external') { + var params = { + 'username': entity.name + }; + + ApiService.linkExternalUser(null, params).then(function(resp) { + $scope.setEntityInternal(resp['entity'], updateTypeahead); + }, ApiService.errorDisplay('Could not link external user')); + return; + } + if (updateTypeahead) { $(input).typeahead('val', $scope.autoClear ? '' : entity.name); } else { @@ -193,7 +205,7 @@ angular.module('quay').directive('entitySearch', function () { var entity = data.results[i]; var found = 'user'; - if (entity.kind == 'user') { + if (entity.kind == 'user' || entity.kind == 'external') { found = entity.is_robot ? 'robot' : 'user'; } else if (entity.kind == 'team') { found = 'team'; @@ -276,6 +288,8 @@ angular.module('quay').directive('entitySearch', function () { template = '
'; if (datum.entity.kind == 'user' && !datum.entity.is_robot) { template += ''; + } else if (datum.entity.kind == 'external') { + template += ''; } else if (datum.entity.kind == 'user' && datum.entity.is_robot) { template += ''; } else if (datum.entity.kind == 'team') { diff --git a/test/data/test.db b/test/data/test.db index 433d9e94903da48a8729f9d5edf8b8907565ee5a..522cb90c547a4065295f32f2fdfae43f8ef2efca 100644 GIT binary patch delta 65919 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 delta 65934 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 Mz-(NyZ)N5G16=oTcK`qY