From 72f25ebc24b534f268249f75337ce4a35ca07921 Mon Sep 17 00:00:00 2001 From: anke1460 Date: Fri, 20 Mar 2020 11:58:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9F=A5=E7=9C=8B=E5=90=8E?= =?UTF-8?q?=E5=8F=B0=E8=A7=92=E8=89=B2=EF=BC=8C=E9=99=90=E5=88=B6=E8=BF=90?= =?UTF-8?q?=E8=90=A5=E5=8F=AF=E4=BF=AE=E6=94=B9=E7=AE=A1=E7=90=86=E5=91=98?= =?UTF-8?q?=E8=A7=92=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/admins/base_controller.rb | 2 +- app/controllers/admins/users_controller.rb | 2 +- app/services/admins/update_user_service.rb | 8 ++++++-- app/views/admins/users/edit.html.erb | 1 + db/migrate/20200320032312_add_admin_visitable_to_user.rb | 5 +++++ 5 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 db/migrate/20200320032312_add_admin_visitable_to_user.rb diff --git a/app/controllers/admins/base_controller.rb b/app/controllers/admins/base_controller.rb index 0451b77d1..271e73746 100644 --- a/app/controllers/admins/base_controller.rb +++ b/app/controllers/admins/base_controller.rb @@ -21,7 +21,7 @@ class Admins::BaseController < ApplicationController def require_admin! return if current_user.blank? || !current_user.logged? - return if current_user.admin_or_business? + return if current_user.admin_or_business? || current_user.admin_visitable? render_forbidden end diff --git a/app/controllers/admins/users_controller.rb b/app/controllers/admins/users_controller.rb index b9a07ba1e..79fd02526 100644 --- a/app/controllers/admins/users_controller.rb +++ b/app/controllers/admins/users_controller.rb @@ -63,6 +63,6 @@ class Admins::UsersController < Admins::BaseController def update_params params.require(:user).permit(%i[lastname nickname gender identity technical_title student_id is_shixun_marker mail phone location location_city school_id department_id admin business is_test - password professional_certification authentication]) + password professional_certification authentication admin_visitable]) end end \ No newline at end of file diff --git a/app/services/admins/update_user_service.rb b/app/services/admins/update_user_service.rb index 6b1c0c857..3aaebb7b1 100644 --- a/app/services/admins/update_user_service.rb +++ b/app/services/admins/update_user_service.rb @@ -9,6 +9,7 @@ class Admins::UpdateUserService < ApplicationService end def call + user.assign_attributes(user_attributes) user.mail = params[:mail].to_s.presence user.phone = params[:phone].to_s.presence @@ -36,8 +37,11 @@ class Admins::UpdateUserService < ApplicationService private def user_attributes - params.slice(*%i[lastname nickname mail phone admin business is_test - professional_certification authentication is_shixun_marker]) + allow_attributes = %i[lastname nickname mail phone business is_test + professional_certification authentication is_shixun_marker admin_visitable] + + allow_attributes.push(:admin) if user.admin? + params.slice(*allow_attributes) end def user_extension_attributes diff --git a/app/views/admins/users/edit.html.erb b/app/views/admins/users/edit.html.erb index b1a8cbba1..0c6c19be7 100644 --- a/app/views/admins/users/edit.html.erb +++ b/app/views/admins/users/edit.html.erb @@ -111,6 +111,7 @@ <%= f.input :admin, as: :boolean, label: '管理员', checked_value: 1, unchecked_value: 0 %> <%= f.input :business, as: :boolean, label: '运营人员', wrapper_html: { class: 'ml-3' }, checked_value: 1, unchecked_value: 0 %> <%= f.input :is_test, as: :boolean, label: '测试账号', wrapper_html: { class: 'ml-3' }, checked_value: 1, unchecked_value: 0 %> + <%= f.input :admin_visitable, as: :boolean, label: '允许查看后台', wrapper_html: { class: 'ml-3' }, checked_value: 1, unchecked_value: 0 %> <% end %> diff --git a/db/migrate/20200320032312_add_admin_visitable_to_user.rb b/db/migrate/20200320032312_add_admin_visitable_to_user.rb new file mode 100644 index 000000000..43a67c788 --- /dev/null +++ b/db/migrate/20200320032312_add_admin_visitable_to_user.rb @@ -0,0 +1,5 @@ +class AddAdminVisitableToUser < ActiveRecord::Migration[5.2] + def change + add_column :users, :admin_visitable, :boolean, default: false + end +end