Noosfero/noosfero

View on GitHub
app/controllers/admin/environment_role_manager_controller.rb

Summary

Maintainability
A
30 mins
Test Coverage
class EnvironmentRoleManagerController < AdminController
  protect "manage_environment_roles", :environment

  def index
    @admins = Person.where("role_assignments.resource_type = ?", "Environment").includes(:role_assignments)
  end

  def change_roles
    @admin = Person.find(params[:id])
    @roles = Role.all.select { |r| r.has_kind?(:environment) }
  end

  def update_roles
    @roles = params[:roles] ? Role.find(params[:roles]) : []
    @person = Person.find(params[:person])
    if @person.define_roles(@roles, environment)
      session[:notice] = _("Roles successfully updated")
    else
      session[:notice] = _("Couldn't change the roles")
    end
    redirect_to action: :index
  end

  def change_role
    @roles = Role.all.select { |r| r.has_kind?(:environment) }
    @admin = Person.find(params[:id])
    @associations = @admin.find_roles(environment)
  end

  def add_role
    @person = Person.find(params[:person])
    @role = Role.find(params[:role])
    if environment.affiliate(@person, @role)
      redirect_to action: "index"
    else
      @admin = Person.find(params[:person])
      @roles = Role.all.select { |r| r.has_kind?(:environment) }
      render action: "affiliate"
    end
  end

  def remove_role
    @association = RoleAssignment.find(params[:id])
    if @association.destroy
      session[:notice] = _("Member succefully unassociated")
    else
      session[:notice] = _("Failed to unassociate member")
    end
    redirect_to aciton: "index"
  end

  def unassociate
    @association = RoleAssignment.find(params[:id])
    if @association.destroy
      session[:notice] = _("Member succefully unassociated")
    else
      session[:notice] = _("Failed to unassociate member")
    end
    redirect_to aciton: "index"
  end

  def make_admin
    @people = Person.all
    @roles = Role.all.select { |r| r.has_kind?(:environment) }
  end
end