diff --git a/app/controllers/admin/administrators_controller.rb b/app/controllers/admin/administrators_controller.rb new file mode 100644 index 000000000..938a7570d --- /dev/null +++ b/app/controllers/admin/administrators_controller.rb @@ -0,0 +1,37 @@ +class Admin::AdministratorsController < Admin::BaseController + load_and_authorize_resource + + def index + @administrators = @administrators.page(params[:page]) + end + + def search + @user = User.find_by(email: params[:email]) + + respond_to do |format| + if @user + @administrator = Administrator.find_or_initialize_by(user: @user) + format.js + else + format.js { render "user_not_found" } + end + end + end + + def create + @administrator.user_id = params[:user_id] + @administrator.save + + redirect_to admin_administrators_path + end + + def destroy + if current_user.id == @administrator.user_id + flash[:error] = I18n.t("admin.administrators.administrator.restricted_removal") + else + @administrator.destroy + end + + redirect_to admin_administrators_path + end +end diff --git a/app/helpers/admin_helper.rb b/app/helpers/admin_helper.rb index 3f0d4db4b..8ca439a1c 100644 --- a/app/helpers/admin_helper.rb +++ b/app/helpers/admin_helper.rb @@ -29,7 +29,7 @@ module AdminHelper end def menu_profiles? - ["organizations", "officials", "moderators", "valuators", "managers"].include? controller_name + ["administrators", "organizations", "officials", "moderators", "valuators", "managers"].include? controller_name end def menu_banners? diff --git a/app/models/abilities/administrator.rb b/app/models/abilities/administrator.rb index 8df52e6eb..f2fe7aed9 100644 --- a/app/models/abilities/administrator.rb +++ b/app/models/abilities/administrator.rb @@ -34,6 +34,7 @@ module Abilities can :comment_as_administrator, [Debate, Comment, Proposal, Poll::Question, Budget::Investment] + can [:search, :create, :index, :destroy], ::Administrator can [:search, :create, :index, :destroy], ::Moderator can [:search, :create, :index, :summary], ::Valuator can [:search, :create, :index, :destroy], ::Manager diff --git a/app/views/admin/_menu.html.erb b/app/views/admin/_menu.html.erb index 43c53df36..3499cd345 100644 --- a/app/views/admin/_menu.html.erb +++ b/app/views/admin/_menu.html.erb @@ -95,6 +95,10 @@ <%= t("admin.menu.title_profiles") %>