diff --git a/app/controllers/admins/users_controller.rb b/app/controllers/admins/users_controller.rb index e15e39242..182757db6 100644 --- a/app/controllers/admins/users_controller.rb +++ b/app/controllers/admins/users_controller.rb @@ -73,6 +73,6 @@ class Admins::UsersController < Admins::BaseController def update_params params.require(:user).permit(%i[lastname nickname gender technical_title is_shixun_marker mail phone location location_city school_id department_id admin - password login website_permission]) + password login website_permission business glcc_admin]) end end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 0c134a3bd..38484bedd 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -75,7 +75,7 @@ class ApplicationController < ActionController::Base def admin_or_business? - User.current.admin? || User.current.business? + User.current.admin? || User.current.business? || User.current.glcc_admin? end # 判断用户的邮箱或者手机是否可用 diff --git a/app/helpers/manage_back_helper.rb b/app/helpers/manage_back_helper.rb index ed3f13826..cb320f80f 100644 --- a/app/helpers/manage_back_helper.rb +++ b/app/helpers/manage_back_helper.rb @@ -2,29 +2,33 @@ module ManageBackHelper extend ActiveSupport::Concern def sidebar_item_group(url, text, **opts) - link_opts = url.start_with?('/') ? {} : { 'data-toggle': 'collapse', 'aria-expanded': false } - content = - link_to url, link_opts do - content_tag(:i, '', class: "fa fa-#{opts[:icon]}", 'data-toggle': 'tooltip', 'data-placement': 'right', 'data-boundary': 'window', title: text) + - content_tag(:span, text) - end + if opts[:has_permission] + link_opts = url.start_with?('/') ? {} : { 'data-toggle': 'collapse', 'aria-expanded': false } + content = + link_to url, link_opts do + content_tag(:i, '', class: "fa fa-#{opts[:icon]}", 'data-toggle': 'tooltip', 'data-placement': 'right', 'data-boundary': 'window', title: text) + + content_tag(:span, text) + end - content += - content_tag(:ul, id: url[1..-1], class: 'collapse list-unstyled', "data-parent": '#sidebar') do - yield - end + content += + content_tag(:ul, id: url[1..-1], class: 'collapse list-unstyled', "data-parent": '#sidebar') do + yield + end - raw content + raw content + end end def sidebar_item(url, text, **opts) - content = - link_to url, 'data-controller': opts[:controller] do - content_tag(:i, '', class: "fa fa-#{opts[:icon]} fa-fw", 'data-toggle': 'tooltip', 'data-placement': 'right', 'data-boundary': 'window', title: text) + - content_tag(:span, text) - end + if opts[:has_permission] + content = + link_to url, 'data-controller': opts[:controller] do + content_tag(:i, '', class: "fa fa-#{opts[:icon]} fa-fw", 'data-toggle': 'tooltip', 'data-placement': 'right', 'data-boundary': 'window', title: text) + + content_tag(:span, text) + end - raw content + raw content + end end def admin_sidebar_controller diff --git a/app/models/user.rb b/app/models/user.rb index 9d623f949..327f185d5 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -833,7 +833,7 @@ class User < Owner end def admin_or_business? - admin? || business? + admin? || business? || glcc_admin? end def self.generate_login(prefix) diff --git a/app/services/admins/update_user_service.rb b/app/services/admins/update_user_service.rb index 4dd80b9d0..2d58b000f 100644 --- a/app/services/admins/update_user_service.rb +++ b/app/services/admins/update_user_service.rb @@ -31,7 +31,7 @@ class Admins::UpdateUserService < ApplicationService private def user_attributes - params.slice(*%i[lastname nickname mail phone admin business is_test login + params.slice(*%i[lastname nickname mail phone admin business glcc_admin is_test login professional_certification authentication is_shixun_marker website_permission]) end diff --git a/app/views/admins/shared/_sidebar.html.erb b/app/views/admins/shared/_sidebar.html.erb index f9bf9ae48..c238a3bcc 100644 --- a/app/views/admins/shared/_sidebar.html.erb +++ b/app/views/admins/shared/_sidebar.html.erb @@ -13,85 +13,85 @@ diff --git a/app/views/admins/users/edit.html.erb b/app/views/admins/users/edit.html.erb index be952e7cb..3e7003ddf 100644 --- a/app/views/admins/users/edit.html.erb +++ b/app/views/admins/users/edit.html.erb @@ -89,6 +89,8 @@ <%= f.label :role, label: '角色' %>
<%= 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 :glcc_admin, as: :boolean, label: 'GLCC管理员', wrapper_html: { class: 'ml-3' }, checked_value: 1, unchecked_value: 0 %>
<% end %> diff --git a/db/migrate/20240628023909_add_glcc_admin_field_to_users.rb b/db/migrate/20240628023909_add_glcc_admin_field_to_users.rb new file mode 100644 index 000000000..bef50068a --- /dev/null +++ b/db/migrate/20240628023909_add_glcc_admin_field_to_users.rb @@ -0,0 +1,5 @@ +class AddGlccAdminFieldToUsers < ActiveRecord::Migration[5.2] + def change + add_column :users, :glcc_admin, :boolean, default: false + end +end