Frage

(Disclaimer: Ich bin sehr neu auf Schienen)

Dieses Plugin sieht aus wie es wird ein großer fit für meine app, aber ich bin eine harte Zeit, es zu arbeiten bekommen. Ich benutze es mit authlogic, I bin ich nicht sicher, ob das das Problem ist, aber es scheint, wie es sein kann.

Wenn ich versuche, eine Zugriffs eine Seite, dass meine Admin-Rolle Zugriff auf I haben sollte erhalten diese:

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]

Ich habe dies in meinem User-Modell      def role_symbols        (Rollen || []) Karte {| r. | r.name.to_sym}      Ende

Aber es scheint nicht, dass Aufruf zu werden. I denken das kann das sein Kern des Problems, aber ich frage mich auch, ob es etwas zu tun hat, mit den user_sessions?

Auch das ist, was mein application_controller aussieht:

 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

Ich habe den Admin nutzen, das zu reflektieren:

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 

Wenn Sie irgendwelche Ideen haben würde ich es sehr schätzen. Vielen Dank.

War es hilfreich?

Lösung

Anscheinend ist die Anwendung lädt die Regeln der Tabelle Rollen richtig, aber nicht belastet die config / authorization_rules.rb Datei korrekt. Bitte überprüfen Sie die Datei, seinen Namen und die Syntax verwendet wird.

Versuchen Sie, die Berechtigungen verwenden in authorization_rules.rb ; wie folgt aus:

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

Und was ist mit den Firmen-Controller?


Viel Glück.

Andere Tipps

  

habe ich das Admin nutzen zu reflektieren, dass

Was meinst du damit? Die Admin-Rolle sollte in der authorization_rules.rb Datei aktiviert sein, da die role_symbols Methode scheint zu funktionieren und ist [:Admin] als ein Array von Benutzerrollen zurück. Sie können, dass im Protokoll finden Sie unter:

  

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

Das bedeutet, dass der aktuelle Benutzer die Rollen festgelegt hat, muss aber mindestens eine der aufgeführten Berechtigungen für den Zugriff der Kontext / Ressource. So Ihre authorization_rules.rb hat eine aktivierte Rolle :Admin haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top