diff --git a/app/controllers/admins/base_controller.rb b/app/controllers/admins/base_controller.rb index fbfc3fc41..e2882978b 100644 --- a/app/controllers/admins/base_controller.rb +++ b/app/controllers/admins/base_controller.rb @@ -23,10 +23,23 @@ 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_glcc_admin? render_forbidden end + def require_admin + render_forbidden unless User.current.admin? + end + + def require_business + render_forbidden unless admin_or_business? + end + + def require_glcc_admin + render_forbidden unless admin_or_glcc_admin? + end + # 触发after ajax render partial hooks,执行一些因为局部刷新后失效的绑定事件 def rebind_event_if_ajax_render_partial return if request.format.symbol != :js diff --git a/app/controllers/admins/edu_settings_controller.rb b/app/controllers/admins/edu_settings_controller.rb index 9d9334b23..8d9985998 100644 --- a/app/controllers/admins/edu_settings_controller.rb +++ b/app/controllers/admins/edu_settings_controller.rb @@ -1,4 +1,5 @@ class Admins::EduSettingsController < Admins::BaseController + before_action :require_admin before_action :find_setting, only: [:edit,:update, :destroy] def index diff --git a/app/controllers/admins/faqs_controller.rb b/app/controllers/admins/faqs_controller.rb index 250d3d60a..c16cca934 100644 --- a/app/controllers/admins/faqs_controller.rb +++ b/app/controllers/admins/faqs_controller.rb @@ -1,4 +1,5 @@ class Admins::FaqsController < Admins::BaseController + before_action :require_business before_action :find_faq, only: [:edit,:update, :destroy] def index diff --git a/app/controllers/admins/feedbacks_controller.rb b/app/controllers/admins/feedbacks_controller.rb index ff64ae5a1..59515ad2a 100644 --- a/app/controllers/admins/feedbacks_controller.rb +++ b/app/controllers/admins/feedbacks_controller.rb @@ -1,4 +1,5 @@ class Admins::FeedbacksController < Admins::BaseController + before_action :require_business before_action :get_feedback, only: [:new_history, :create_history, :destroy] def index diff --git a/app/controllers/admins/glcc_pr_check_controller.rb b/app/controllers/admins/glcc_pr_check_controller.rb index 1d79ba802..8d6d9dd70 100644 --- a/app/controllers/admins/glcc_pr_check_controller.rb +++ b/app/controllers/admins/glcc_pr_check_controller.rb @@ -1,4 +1,6 @@ class Admins::GlccPrCheckController < Admins::BaseController + before_action :require_glcc_admin + def index params[:sort_by] = params[:sort_by].presence || 'created_on' params[:sort_direction] = params[:sort_direction].presence || 'desc' diff --git a/app/controllers/admins/identity_verifications_controller.rb b/app/controllers/admins/identity_verifications_controller.rb index 1db1a9883..aec9aee61 100644 --- a/app/controllers/admins/identity_verifications_controller.rb +++ b/app/controllers/admins/identity_verifications_controller.rb @@ -1,4 +1,5 @@ class Admins::IdentityVerificationsController < Admins::BaseController + before_action :require_business before_action :finder_identity_verification, except: [:index] def index params[:sort_by] = params[:sort_by].presence || 'created_at' diff --git a/app/controllers/admins/issues_rank_controller.rb b/app/controllers/admins/issues_rank_controller.rb index 79450fbfb..53be77a4d 100644 --- a/app/controllers/admins/issues_rank_controller.rb +++ b/app/controllers/admins/issues_rank_controller.rb @@ -1,4 +1,5 @@ class Admins::IssuesRankController < Admins::BaseController + before_action :require_admin def index @statistics = DailyProjectStatistic.where('date >= ? AND date <= ?', begin_date, end_date) diff --git a/app/controllers/admins/laboratories_controller.rb b/app/controllers/admins/laboratories_controller.rb index 7044b6218..e201372c5 100644 --- a/app/controllers/admins/laboratories_controller.rb +++ b/app/controllers/admins/laboratories_controller.rb @@ -1,4 +1,5 @@ class Admins::LaboratoriesController < Admins::BaseController + before_action :require_admin def index default_sort('id', 'desc') diff --git a/app/controllers/admins/message_templates_controller.rb b/app/controllers/admins/message_templates_controller.rb index abe332ac5..502adbed1 100644 --- a/app/controllers/admins/message_templates_controller.rb +++ b/app/controllers/admins/message_templates_controller.rb @@ -1,4 +1,5 @@ class Admins::MessageTemplatesController < Admins::BaseController + before_action :require_admin before_action :get_template, only: [:edit, :update, :destroy] def index diff --git a/app/controllers/admins/nps_controller.rb b/app/controllers/admins/nps_controller.rb index 8b3d828ff..bfb72f730 100644 --- a/app/controllers/admins/nps_controller.rb +++ b/app/controllers/admins/nps_controller.rb @@ -1,4 +1,5 @@ class Admins::NpsController < Admins::BaseController + before_action :require_business def index @on_off_switch = EduSetting.get("nps-on-off-switch").to_s == 'true' @user_nps = UserNp.joins(:user).order(created_at: :desc) diff --git a/app/controllers/admins/organizations_controller.rb b/app/controllers/admins/organizations_controller.rb index 3d4eac4c6..0b0e60966 100644 --- a/app/controllers/admins/organizations_controller.rb +++ b/app/controllers/admins/organizations_controller.rb @@ -1,5 +1,6 @@ class Admins::OrganizationsController < Admins::BaseController - before_action :finder_org, except: [:index] + before_action :require_admin + before_action :finder_org, except: [:index] def index params[:sort_by] = params[:sort_by].presence || 'created_on' diff --git a/app/controllers/admins/page_themes_controller.rb b/app/controllers/admins/page_themes_controller.rb index 1b2cd8ebe..025fa5106 100644 --- a/app/controllers/admins/page_themes_controller.rb +++ b/app/controllers/admins/page_themes_controller.rb @@ -1,4 +1,5 @@ class Admins::PageThemesController < Admins::BaseController + before_action :require_admin before_action :finder_page_theme, only: [:edit, :update, :destroy] def index diff --git a/app/controllers/admins/project_categories_controller.rb b/app/controllers/admins/project_categories_controller.rb index 72cb833fa..2a518cfa0 100644 --- a/app/controllers/admins/project_categories_controller.rb +++ b/app/controllers/admins/project_categories_controller.rb @@ -1,4 +1,5 @@ class Admins::ProjectCategoriesController < Admins::BaseController + before_action :require_admin before_action :get_category, only: [:edit,:update, :destroy] before_action :validate_names, only: [:create, :update] diff --git a/app/controllers/admins/project_ignores_controller.rb b/app/controllers/admins/project_ignores_controller.rb index 6450f6afc..5153bf23f 100644 --- a/app/controllers/admins/project_ignores_controller.rb +++ b/app/controllers/admins/project_ignores_controller.rb @@ -1,4 +1,5 @@ class Admins::ProjectIgnoresController < Admins::BaseController + before_action :require_admin before_action :set_ignore, only: [:edit,:update, :destroy,:show] # before_action :validate_params, only: [:create, :update] diff --git a/app/controllers/admins/project_languages_controller.rb b/app/controllers/admins/project_languages_controller.rb index 69594eb50..34b787563 100644 --- a/app/controllers/admins/project_languages_controller.rb +++ b/app/controllers/admins/project_languages_controller.rb @@ -1,4 +1,5 @@ class Admins::ProjectLanguagesController < Admins::BaseController + before_action :require_admin before_action :get_language, only: [:edit,:update, :destroy] before_action :validate_names, only: [:create, :update] diff --git a/app/controllers/admins/project_licenses_controller.rb b/app/controllers/admins/project_licenses_controller.rb index 44ae75118..d573d3c23 100644 --- a/app/controllers/admins/project_licenses_controller.rb +++ b/app/controllers/admins/project_licenses_controller.rb @@ -1,4 +1,5 @@ class Admins::ProjectLicensesController < Admins::BaseController + before_action :require_admin before_action :set_license, only: [:edit,:update, :destroy,:show] # before_action :validate_params, only: [:create, :update] diff --git a/app/controllers/admins/projects_controller.rb b/app/controllers/admins/projects_controller.rb index 926ab8a29..fd576b8c8 100644 --- a/app/controllers/admins/projects_controller.rb +++ b/app/controllers/admins/projects_controller.rb @@ -1,4 +1,5 @@ class Admins::ProjectsController < Admins::BaseController + before_action :require_admin before_action :find_project, only: [:edit, :update] def index diff --git a/app/controllers/admins/projects_rank_controller.rb b/app/controllers/admins/projects_rank_controller.rb index 9e7df34f7..55dde85e9 100644 --- a/app/controllers/admins/projects_rank_controller.rb +++ b/app/controllers/admins/projects_rank_controller.rb @@ -1,4 +1,6 @@ class Admins::ProjectsRankController < Admins::BaseController + before_action :require_admin + def index @statistics = DailyProjectStatistic.where("date >= ? AND date <= ?", begin_date, end_date) @statistics = @statistics.group(:project_id).select("project_id, diff --git a/app/controllers/admins/reversed_keywords_controller.rb b/app/controllers/admins/reversed_keywords_controller.rb index 8a8442f72..0184c542d 100644 --- a/app/controllers/admins/reversed_keywords_controller.rb +++ b/app/controllers/admins/reversed_keywords_controller.rb @@ -1,4 +1,5 @@ class Admins::ReversedKeywordsController < Admins::BaseController + before_action :require_admin before_action :get_keyword, only: [:edit,:update, :destroy] # before_action :validate_identifer, only: [:create, :update] diff --git a/app/controllers/admins/site_pages_controller.rb b/app/controllers/admins/site_pages_controller.rb index 306c91627..24b605247 100644 --- a/app/controllers/admins/site_pages_controller.rb +++ b/app/controllers/admins/site_pages_controller.rb @@ -1,4 +1,5 @@ class Admins::SitePagesController < Admins::BaseController + before_action :require_admin before_action :finder_site_page, except: [:index] def index diff --git a/app/controllers/admins/sites_controller.rb b/app/controllers/admins/sites_controller.rb index f3da4ccf2..56252b1c4 100644 --- a/app/controllers/admins/sites_controller.rb +++ b/app/controllers/admins/sites_controller.rb @@ -1,4 +1,5 @@ class Admins::SitesController < Admins::BaseController + before_action :require_admin before_action :find_site, only: [:edit,:update, :destroy] def index diff --git a/app/controllers/admins/system_notifications_controller.rb b/app/controllers/admins/system_notifications_controller.rb index 33f3f20f1..1127b81fe 100644 --- a/app/controllers/admins/system_notifications_controller.rb +++ b/app/controllers/admins/system_notifications_controller.rb @@ -1,4 +1,5 @@ class Admins::SystemNotificationsController < Admins::BaseController + before_action :require_business before_action :get_notification, only: [:history, :edit,:update, :destroy] # before_action :validate_identifer, only: [:create, :update] diff --git a/app/controllers/admins/topic/activity_forums_controller.rb b/app/controllers/admins/topic/activity_forums_controller.rb index b027dc003..76a14027f 100644 --- a/app/controllers/admins/topic/activity_forums_controller.rb +++ b/app/controllers/admins/topic/activity_forums_controller.rb @@ -1,4 +1,5 @@ class Admins::Topic::ActivityForumsController < Admins::Topic::BaseController + before_action :require_business before_action :find_activity_forum, only: [:edit, :update, :destroy] def index diff --git a/app/controllers/admins/topic/banners_controller.rb b/app/controllers/admins/topic/banners_controller.rb index c0350e355..66596792a 100644 --- a/app/controllers/admins/topic/banners_controller.rb +++ b/app/controllers/admins/topic/banners_controller.rb @@ -1,4 +1,5 @@ class Admins::Topic::BannersController < Admins::Topic::BaseController + before_action :require_business before_action :find_banner, only: [:edit, :update, :destroy] def index diff --git a/app/controllers/admins/topic/cards_controller.rb b/app/controllers/admins/topic/cards_controller.rb index 732f17e5b..ce14f192b 100644 --- a/app/controllers/admins/topic/cards_controller.rb +++ b/app/controllers/admins/topic/cards_controller.rb @@ -1,4 +1,5 @@ class Admins::Topic::CardsController < Admins::Topic::BaseController + before_action :require_business before_action :find_card, only: [:edit, :update, :destroy] def index diff --git a/app/controllers/admins/topic/cooperators_controller.rb b/app/controllers/admins/topic/cooperators_controller.rb index a1a700cbc..354188132 100644 --- a/app/controllers/admins/topic/cooperators_controller.rb +++ b/app/controllers/admins/topic/cooperators_controller.rb @@ -1,4 +1,5 @@ class Admins::Topic::CooperatorsController < Admins::Topic::BaseController + before_action :require_business before_action :find_cooperator, only: [:edit, :update, :destroy] def index diff --git a/app/controllers/admins/topic/excellent_projects_controller.rb b/app/controllers/admins/topic/excellent_projects_controller.rb index b60dac54c..3f8f3006b 100644 --- a/app/controllers/admins/topic/excellent_projects_controller.rb +++ b/app/controllers/admins/topic/excellent_projects_controller.rb @@ -1,4 +1,5 @@ class Admins::Topic::ExcellentProjectsController < Admins::Topic::BaseController + before_action :require_business before_action :find_excellent_project, only: [:edit, :update, :destroy] def index diff --git a/app/controllers/admins/topic/experience_forums_controller.rb b/app/controllers/admins/topic/experience_forums_controller.rb index 420670c1b..59b4e20e6 100644 --- a/app/controllers/admins/topic/experience_forums_controller.rb +++ b/app/controllers/admins/topic/experience_forums_controller.rb @@ -1,4 +1,5 @@ class Admins::Topic::ExperienceForumsController < Admins::Topic::BaseController + before_action :require_business before_action :find_experience_forum, only: [:edit, :update, :destroy] def index diff --git a/app/controllers/admins/topic/glcc_news_controller.rb b/app/controllers/admins/topic/glcc_news_controller.rb index 3c1769e5f..6252b6d91 100644 --- a/app/controllers/admins/topic/glcc_news_controller.rb +++ b/app/controllers/admins/topic/glcc_news_controller.rb @@ -1,4 +1,5 @@ class Admins::Topic::GlccNewsController < Admins::Topic::BaseController + before_action :require_glcc_admin before_action :find_glcc, only: [:edit, :update, :destroy] def index diff --git a/app/controllers/admins/topic/pinned_forums_controller.rb b/app/controllers/admins/topic/pinned_forums_controller.rb index ac5bf69a7..50577ea95 100644 --- a/app/controllers/admins/topic/pinned_forums_controller.rb +++ b/app/controllers/admins/topic/pinned_forums_controller.rb @@ -1,4 +1,5 @@ class Admins::Topic::PinnedForumsController < Admins::Topic::BaseController + before_action :require_business before_action :find_pinned_forum, only: [:edit, :update, :destroy] def index diff --git a/app/controllers/admins/users_controller.rb b/app/controllers/admins/users_controller.rb index 182757db6..e544cfb8e 100644 --- a/app/controllers/admins/users_controller.rb +++ b/app/controllers/admins/users_controller.rb @@ -1,4 +1,5 @@ class Admins::UsersController < Admins::BaseController + before_action :require_admin before_action :finder_user, except: [:index] def index diff --git a/app/controllers/admins/users_rank_controller.rb b/app/controllers/admins/users_rank_controller.rb index 2c7a62ae5..24407257c 100644 --- a/app/controllers/admins/users_rank_controller.rb +++ b/app/controllers/admins/users_rank_controller.rb @@ -1,4 +1,5 @@ class Admins::UsersRankController < Admins::BaseController + before_action :require_admin def index @rank_date = rank_date diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 38484bedd..6957922d4 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -75,7 +75,11 @@ class ApplicationController < ActionController::Base def admin_or_business? - User.current.admin? || User.current.business? || User.current.glcc_admin? + User.current.admin? || User.current.business? + end + + def admin_or_glcc_admin? + User.current.admin? || User.current.glcc_admin? end # 判断用户的邮箱或者手机是否可用 @@ -195,6 +199,10 @@ class ApplicationController < ActionController::Base normal_status(403, "") unless admin_or_business? end + def require_glcc_admin + normal_status(403, "") unless admin_or_glcc_admin? + end + # 前端会捕捉401,弹登录弹框 # 未授权的捕捉407,弹试用申请弹框 def require_login diff --git a/app/models/user.rb b/app/models/user.rb index 327f185d5..933300c70 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -833,7 +833,11 @@ class User < Owner end def admin_or_business? - admin? || business? || glcc_admin? + admin? || business? + end + + def admin_or_glcc_admin? + admin? || glcc_admin? end def self.generate_login(prefix)