From f57eef4929a21ccf81c7816fded8ef0923c04622 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juanjo=20Baza=CC=81n?= Date: Wed, 4 Nov 2015 13:47:55 +0100 Subject: [PATCH] makes public activity toggleable --- app/controllers/account_controller.rb | 2 +- app/controllers/users_controller.rb | 12 +++- app/views/devise/menu/_login_items.html.erb | 3 + app/views/users/show.html.erb | 28 ++++---- config/locales/en.yml | 2 + config/locales/es.yml | 2 + ...1103194329_add_public_activity_to_users.rb | 5 ++ db/schema.rb | 3 +- spec/features/users_spec.rb | 65 +++++++++++++++++++ 9 files changed, 105 insertions(+), 17 deletions(-) create mode 100644 db/migrate/20151103194329_add_public_activity_to_users.rb diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index 38bd4bfe5..f2a553c38 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -25,7 +25,7 @@ class AccountController < ApplicationController if @account.organization? params.require(:account).permit(:phone_number, :email_on_comment, :email_on_comment_reply, organization_attributes: [:name, :responsible_name]) else - params.require(:account).permit(:username, :email_on_comment, :email_on_comment_reply) + params.require(:account).permit(:username, :public_activity, :email_on_comment, :email_on_comment_reply) end end diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 38c36b7cc..a978cd1ce 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -3,10 +3,8 @@ class UsersController < ApplicationController load_and_authorize_resource - before_action :set_activity_counts, only: :show - def show - load_filtered_activity + load_filtered_activity if valid_access? end private @@ -18,6 +16,7 @@ class UsersController < ApplicationController end def load_filtered_activity + set_activity_counts case params[:filter] when "proposals" then load_proposals when "debates" then load_debates @@ -51,4 +50,11 @@ class UsersController < ApplicationController @comments = Comment.where(user_id: @user.id).includes(:commentable).order(created_at: :desc).page(params[:page]) end + def valid_access? + @user.public_activity || authorized_current_user? + end + + def authorized_current_user? + @authorized_current_user ||= current_user && (current_user == @user || current_user.moderator? || current_user.administrator?) + end end diff --git a/app/views/devise/menu/_login_items.html.erb b/app/views/devise/menu/_login_items.html.erb index 6cd27160d..b0998949f 100644 --- a/app/views/devise/menu/_login_items.html.erb +++ b/app/views/devise/menu/_login_items.html.erb @@ -1,5 +1,8 @@