orbit4-5/app/controllers/admin/authorizations_controller.rb

80 lines
2.3 KiB
Ruby
Raw Normal View History

class Admin::AuthorizationsController < OrbitAdminController
layout "back_end"
def index
@module_apps ||= ModuleApp.any_of({authorizable: true}).order_by([:title, :asc])
if @module_apps && @module_apps.include?(@module_app)
if @type
case @type
when 'category_authorization'
if (@module_app.categorizable || @module_app.categories.present?)
@objects = @module_app.categories rescue nil
else
@error = t(:no_category)
end
else
@objects = @klass.all
end
unless @objects.blank?
@object ||= @objects.first
@authorizations = Authorization.category_authorized_users(@object.id)
else
@error = t(:no_data)
end
else
@authorizations = Authorization.module_authorized_users(@module_app.id)
end
elsif @module_apps
@module_app = @module_apps.first
else
redirect_to :root
end
end
def add_users
users = User.find(params[:user_ids]) rescue nil
unless users.nil?
authorization = get_or_create_authorization
add_users_to_auth(authorization, users)
end
@users = authorization.authorized_users
render 'admin/authorizations/reload_users'
end
def modal_select
existing_users = User.find(params[:ids]) rescue []
roles = Role.all
if @type
@object_id = @object.id if @object
@sorted_users = roles.inject({}) do |users, role|
users[role] = role.users.where(admin: false) - existing_users - @module_app.managers
users
end
else
@sorted_users = roles.inject({}) do |users, role|
users[role] = role.users.where(admin: false) - existing_users
users
end
end
end
private
def admin_or_manager
@override_can_use = true
setup_vars
authenticate_user!
current_user.is_manager?(@module_app) unless current_user.is_admin?
end
def setup_vars
@module_app = ModuleApp.find_by(key: params[:module]) if params[:module]
@type = params[:type].underscore if params[:type]
if @type
@klass = @type.gsub('_authorization', '').gsub('_approval', '').classify.constantize rescue nil
@object = @klass.find(params[:id]) rescue nil
end
end
end