diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index 07e3d14..b94b72b 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -2088,6 +2088,23 @@ def get_project(session, name, user=None, namespace=None): model.Project.is_fork == False ) + if private is False: + query = query.filter( + model.Project.private == False + ) + elif isinstance(private, basestring): + user2 = aliased(model.User) + query = query.filter( + sqlalchemy.or_( + model.Project.private == False, + sqlalchemy.and_( + model.Project.private == True, + model.Project.user_id == user2.id, + user2.user == private, + ) + ) + ) + return query.first() diff --git a/pagure/ui/repo.py b/pagure/ui/repo.py index cc71402..4567e2a 100644 --- a/pagure/ui/repo.py +++ b/pagure/ui/repo.py @@ -79,6 +79,20 @@ def view_repo(repo, username=None, namespace=None): repo_db = flask.g.repo repo_obj = flask.g.repo_obj + if authenticated(): + private = flask.g.fas_user.username + else: + private = False + + repo = pagure.lib.get_project(SESSION, repo, user=username, private=private) + + if repo is None: + flask.abort(404, 'Project not found') + + reponame = pagure.get_repo_path(repo) + + repo_obj = pygit2.Repository(reponame) + if not repo_obj.is_empty and not repo_obj.head_is_unborn: head = repo_obj.head.shorthand else: @@ -140,10 +154,15 @@ def view_repo(repo, username=None, namespace=None): @APP.route('/fork////branch/') def view_repo_branch(repo, branchname, username=None, namespace=None): ''' Returns the list of branches in the repo. ''' + if authenticated(): + private = flask.g.fas_user.username + else: + private = False repo = flask.g.repo repo_obj = flask.g.repo_obj + if branchname not in repo_obj.listall_branches(): flask.abort(404, 'Branch not found')