diff --git a/pagure/__init__.py b/pagure/__init__.py index 511e09a..c67a703 100644 --- a/pagure/__init__.py +++ b/pagure/__init__.py @@ -374,6 +374,16 @@ def is_repo_user(repo_obj): ) or (user in usergrps) +def get_authorized_project(session, repo, user=None): + """ Return the projects for which the logged in user is authorize to view. """ + repo = pagure.lib.get_project(session, repo, user) + + if repo and repo.private and not is_repo_admin(repo): + return None + + return repo + + def generate_user_key_files(): """ Regenerate the key files used by gitolite. """ diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index ca699e6..0237880 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -2097,13 +2097,7 @@ def get_project(session, name, user=None, namespace=None): model.Project.is_fork == False ) - project = query.first() - - if project and is_repo_admin: - if project.private and not is_repo_admin(project): - return None - - return project + return query.first() def search_issues( diff --git a/pagure/ui/repo.py b/pagure/ui/repo.py index 64a02be..2846362 100644 --- a/pagure/ui/repo.py +++ b/pagure/ui/repo.py @@ -49,9 +49,10 @@ import pagure.lib.plugins import pagure.forms import pagure import pagure.ui.plugins -from pagure import (APP, SESSION, LOG, __get_file_in_tree, login_required, - admin_session_timedout) from pagure.lib import encoding_utils +from pagure import (APP, SESSION, LOG, __get_file_in_tree, login_required, + is_repo_admin, admin_session_timedout, authenticated, + get_authorized_project) @APP.route('/.git')