Authlogic Validacja zalogowanego usera

Witajcie,

[code]class Foo < ActiveRecord::Base
validates :gender_limit

def gender_limit
errors.add(:gender, “Spotkanie tylko dla kobiet”) unless current_user.male == true # Tu nie dziala current_user

end
end[/code]

No i nie powinien działać. current_user to dostęp do sesji do której z modelu nie ma dostępu.

[code]# zakladajac ze masz cos w stylu klasy Meeting

@meeting.access_granted?(current_user)

def access_granted?(user)

dostep tak czy nie

end[/code]

ja mam coś podobnego tak zrobione

[code=ruby]class CostamController < ApplicationController
before_filter {|c| c.require_account_type [:lala, :zzz]}

class ApplicationController < ActionController::Base

def require_account_type(types)
unless types.include?(current_user.account_type.to_sym)
flash[:notice] = t(“users.account_types.not_allowed”)
redirect_to root_url and return
end
end[/code]

[quote=Artur79]ja mam coś podobnego tak zrobione

[code=ruby]class CostamController < ApplicationController
before_filter {|c| c.require_account_type [:lala, :zzz]}

class ApplicationController < ActionController::Base

def require_account_type(types)
unless types.include?(current_user.account_type.to_sym)
flash[:notice] = t(“users.account_types.not_allowed”)
redirect_to root_url and return
end
end[/code]
[/quote]
Przecież można tutaj zaimplementować chociażby CanCana.


Wracając do problemu autora tematu - Twój błąd nie ma większego związku z Authlogic, praktycznie każdy inny gem do uwierzytelniania zachowałby się tak samo. Po prostu current_user to u Ciebie najprawdopodobniej metoda kontrolera, do której model nie ma dostępu (wspomniał o tym Seban).

Jeśli nadal omawianym modelem byłoby owe Meeting, to powinieneś wykorzystać tutaj relację habtm (spotkanie ma wielu uczestników, ale także użytkownik uczestniczy w wielu spotkaniach), najlepiej through - wtedy dodatkowy model (przez który powiążesz model User i Meeting) będzie miał dostęp do obu modelów. Bez problemu da się wtedy zweryfikować, czy użytkownik to kobieta.

Dobrze myślę? :wink:

rav: racja, rozważałem cancana i inne pluginy do autoryzacji (najprostszy jaki widziałem to chyba http://github.com/nakajima/roleful) , ale używam tego tylko w kilku miejscach i w bardzo prosty sposób, zaledwie 3 role, wiec stwierdziłem że narazie coś takiego wystarczy