Pregunta

(Negación: Soy muy nuevo a los rieles)

Este plugin parece que va a ser un gran ajuste para mi aplicación, pero estoy teniendo dificultades para conseguir que funcione. Lo estoy usando con authlogic, me no estoy seguro de si ese es el problema, pero parece que ésta sea.

Cuando intento un acceso a una página que mi rol de administrador debe tener acceso a la I conseguir esto:

Processing CompaniesController#show (for 127.0.0.1 at 2010-02-12
23:26:44) [GET]
Parameters: {"action"=>"show", "id"=>"1", "controller"=>"companies",
"battalion_id"=>"1"}
User Load (0.000681)   SELECT * FROM "users" WHERE ("users"."id" =
'147') LIMIT 1
User Update (0.000622)   UPDATE "users" SET "perishable_token" =
'tUyTl1eZDQSJwp_PFw7c', "last_request_at" = '2010-02-13 05:26:44',
"updated_at" = '2010-02-13 05:26:44' WHERE "id" = 147
Role Load (0.000334)   SELECT * FROM "roles" WHERE ("roles".user_id
= 147)
Permission denied: No matching rules found for show for #<User id:
147, user_type: nil, login: "lauren_roth", name: "Lauren
Rothlisberger", email: "laurenrothlisber...@gmail.com",
crypted_password:
"d835a2cdf15ef449d0980e706fd86d7a9a7a0a23d0d79d6f18f...",
 password_salt: "_Qz_z8eZOhKHcsPsBsoP", created_at: "2010-02-12
 16:37:53", updated_at: "2010-02-13 05:26:44", old_remember_token: nil,
 old_remember_token_expires_at: nil, old_activation_code: nil,
 activated_at: nil, old_password_reset_code: nil, enabled: true,
 identity_url: nil, invitation_id: nil, invitation_limit: nil,
 position: "Admin", battalion_id: nil, company_id: nil, soldier_id:
 nil, login_count: 68, failed_login_count: 0, last_request_at:
 "2010-02-13 05:26:44", current_login_at: "2010-02-13 05:20:59",
 last_login_at: "2010-02-13 05:19:57", current_login_ip: "127.0.0.1",
 last_login_ip: "127.0.0.1", persistence_token:
 "28fc9b60853045cd4e43a001b4258940a7e8f9ac50b08df6a6d...",
 single_access_token: "bKgYvuRtLqauufljZDoV", perishable_token:
 "tUyTl1eZDQSJwp_PFw7c", active: true, platoon_id: nil> (roles
 [:Admin], privileges [:show], context :companies).
 Filter chain halted as [:filter_access_filter] rendered_or_redirected.
 Completed in 27ms (View: 1, DB: 0 3 queries) | 403 Forbidden [http://
 localhost/battalions/1/companies/1]

Tengo esto en mi modelo de usuario      role_symbols def        (Papeles || []) {mapa |. R | r.name.to_sym}      final

Sin embargo, no parece estar llamando eso. I piensan que puede ser el corazón del problema, pero también me pregunto si tiene algo que ver con los user_sessions?

También esto es lo que mi application_controller se ve así:

 helper_method :current_user_session, :current_user
 filter_parameter_logging :password, :password_confirmation

  before_filter :set_current_user
  protected
  def set_current_user
    Authorization.current_user = current_user
  end

  def current_user_session
    return @current_user_session if defined? (@current_user_session)
    @current_user_session = UserSession.find
  end

  def current_user
    return @current_user if defined?(@current_user)
    @current_user = current_user_session && current_user_session.record
  end

  def store_location
    session[:return_to] = request.request_uri
  end

  def redirect_back_or_default(default)
    redirect_to(session[:return_to] || default)
    session[:return_to] = nil
  end


Here is my authorization_rules.rb

Lo hice en mayúscula la administración para reflejar que:

authorization do
   role :guest do
    has_permission_on :user_sessions, :to => [:create, :update]
   end

   role :Admin do
     has_permission_on :companies, :to => [:index, :show]
   end
 end 

Si usted tiene alguna idea que sería de gran aprecio. Gracias.

¿Fue útil?

Solución

Al parecer, la aplicación carga las reglas de la tabla funciones correctamente, pero no cargue el archivo de configuración / authorization_rules.rb correctamente. Por favor, compruebe el archivo, su nombre y la sintaxis utilizada.

Trate de usar los privilegios en authorization_rules.rb ; de esta manera:

privileges do
  privilege :manage, :includes => [:create, :read, :update, :delete]
  privilege :read, :includes => [:index, :show]
  privilege :create, :includes => :new
  privilege :update, :includes => :edit
  privilege :delete, :includes => :destroy
end

Y qué pasa con el controlador de Empresas?


Buena suerte.

Otros consejos

  

Lo hice en mayúscula la administración para reflejar que

¿Qué quiere decir con eso? El rol de administrador debe ser capitalizada en el archivo authorization_rules.rb como el método role_symbols parece estar funcionando y está regresando [:Admin] como una matriz de funciones de usuario. Se puede ver que en el registro:

  

(roles [:Admin], privileges [:show], context :companies)

Esto significa que el usuario actual tiene los roles especificados, pero necesita al menos uno de los privilegios de la lista para acceder al contexto / recurso. Por lo que su authorization_rules.rb tiene que tener un papel :Admin capitalizado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top