From 72b295259ed8565e166a7f2a466ca33d183f6108 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Fri, 30 May 2014 18:22:59 +0300 Subject: Show only personal projects on profile page Signed-off-by: Dmitriy Zaporozhets --- app/controllers/users_controller.rb | 4 +++- app/views/users/_projects.html.haml | 2 +- app/views/users/show.html.haml | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 9461174b950..2d227ae2017 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -4,10 +4,12 @@ class UsersController < ApplicationController def show @user = User.find_by_username!(params[:username]) - @projects = @user.authorized_projects.accessible_to(current_user) + @projects = Project.personal(@user).accessible_to(current_user) + if !current_user && @projects.empty? return authenticate_user! end + @groups = @user.groups.accessible_to(current_user) @events = @user.recent_events.where(project_id: @projects.pluck(:id)).limit(20) @title = @user.name diff --git a/app/views/users/_projects.html.haml b/app/views/users/_projects.html.haml index 2d97c4545b9..bcaec4a27e7 100644 --- a/app/views/users/_projects.html.haml +++ b/app/views/users/_projects.html.haml @@ -1,5 +1,5 @@ .panel.panel-default - .panel-heading Projects + .panel-heading Personal projects %ul.well-list - @projects.each do |project| %li diff --git a/app/views/users/show.html.haml b/app/views/users/show.html.haml index edcaf3acf98..948b59fead1 100644 --- a/app/views/users/show.html.haml +++ b/app/views/users/show.html.haml @@ -20,4 +20,5 @@ = render @events .col-md-4 = render 'profile', user: @user - = render 'projects' + - if @projects.present? + = render 'projects' -- cgit v1.2.3 From e9de569458b55b43a0d09dceef07c3c5d583af24 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Mon, 2 Jun 2014 13:43:07 +0300 Subject: Fix tests for user page Signed-off-by: Dmitriy Zaporozhets --- app/controllers/users_controller.rb | 2 +- app/models/user.rb | 4 ++++ features/steps/shared/project.rb | 12 ++++++------ features/user.feature | 22 +++++++++++----------- 4 files changed, 22 insertions(+), 18 deletions(-) diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 2d227ae2017..d42c2db9e5f 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -6,7 +6,7 @@ class UsersController < ApplicationController @user = User.find_by_username!(params[:username]) @projects = Project.personal(@user).accessible_to(current_user) - if !current_user && @projects.empty? + unless current_user || @user.public_profile? return authenticate_user! end diff --git a/app/models/user.rb b/app/models/user.rb index f1b6139745e..0fbc9284dd8 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -478,4 +478,8 @@ class User < ActiveRecord::Base def generate_tmp_oauth_email self.email = "temp-email-for-oauth-#{username}@gitlab.localhost" end + + def public_profile? + authorized_projects.public_only.any? + end end diff --git a/features/steps/shared/project.rb b/features/steps/shared/project.rb index f8cb753b78f..40362fee0bc 100644 --- a/features/steps/shared/project.rb +++ b/features/steps/shared/project.rb @@ -102,24 +102,24 @@ module SharedProject page.should_not have_content "Community" end - step '"John Doe" is authorized to private project "Enterprise"' do + step '"John Doe" owns private project "Enterprise"' do user = user_exists("John Doe", username: "john_doe") project = Project.find_by(name: "Enterprise") - project ||= create(:project, name: "Enterprise", namespace: user.namespace) + project ||= create(:empty_project, name: "Enterprise", namespace: user.namespace) project.team << [user, :master] end - step '"John Doe" is authorized to internal project "Internal"' do + step '"John Doe" owns internal project "Internal"' do user = user_exists("John Doe", username: "john_doe") project = Project.find_by(name: "Internal") - project ||= create :project, :internal, name: 'Internal' + project ||= create :empty_project, :internal, name: 'Internal', namespace: user.namespace project.team << [user, :master] end - step '"John Doe" is authorized to public project "Community"' do + step '"John Doe" owns public project "Community"' do user = user_exists("John Doe", username: "john_doe") project = Project.find_by(name: "Community") - project ||= create :project, :public, name: 'Community' + project ||= create :empty_project, :public, name: 'Community', namespace: user.namespace project.team << [user, :master] end end diff --git a/features/user.feature b/features/user.feature index d4198c08de9..a2167935fd2 100644 --- a/features/user.feature +++ b/features/user.feature @@ -1,13 +1,13 @@ Feature: User Background: Given User "John Doe" exists - And "John Doe" is authorized to private project "Enterprise" + And "John Doe" owns private project "Enterprise" # Signed out - Scenario: I visit user "John Doe" page while not signed in when he is authorized to a public project - Given "John Doe" is authorized to internal project "Internal" - And "John Doe" is authorized to public project "Community" + Scenario: I visit user "John Doe" page while not signed in when he owns a public project + Given "John Doe" owns internal project "Internal" + And "John Doe" owns public project "Community" When I visit user "John Doe" page Then I should see user "John Doe" page And I should not see project "Enterprise" @@ -15,15 +15,15 @@ Feature: User And I should see project "Community" Scenario: I visit user "John Doe" page while not signed in when he is not authorized to a public project - Given "John Doe" is authorized to internal project "Internal" + Given "John Doe" owns internal project "Internal" When I visit user "John Doe" page Then I should be redirected to sign in page # Signed in as someone else - Scenario: I visit user "John Doe" page while signed in as someone else when he is authorized to a public project - Given "John Doe" is authorized to public project "Community" - And "John Doe" is authorized to internal project "Internal" + Scenario: I visit user "John Doe" page while signed in as someone else when he owns a public project + Given "John Doe" owns public project "Community" + And "John Doe" owns internal project "Internal" And I sign in as a user When I visit user "John Doe" page Then I should see user "John Doe" page @@ -32,7 +32,7 @@ Feature: User And I should see project "Community" Scenario: I visit user "John Doe" page while signed in as someone else when he is not authorized to a public project - Given "John Doe" is authorized to internal project "Internal" + Given "John Doe" owns internal project "Internal" And I sign in as a user When I visit user "John Doe" page Then I should see user "John Doe" page @@ -51,8 +51,8 @@ Feature: User # Signed in as the user himself Scenario: I visit user "John Doe" page while signed in as "John Doe" when he has a public project - Given "John Doe" is authorized to internal project "Internal" - And "John Doe" is authorized to public project "Community" + Given "John Doe" owns internal project "Internal" + And "John Doe" owns public project "Community" And I sign in as "John Doe" When I visit user "John Doe" page Then I should see user "John Doe" page -- cgit v1.2.3