Wrapper for the ever-present "user" in your application. It wraps around an arbitrary instance and worries about authentication and storing information about the user in the session.
In order to not interfere with the wrapped instance/model we start our methods with an underscore.
Patches and suggestions are highly appreciated.
@return [true false] whether the current user is logged in. @api internal @see Ramaze::Helper::User#logged_in? @author manveru
# File lib/ramaze/helper/user.rb, line 224 def _logged_in? !!_user end
@param [Hash] creds this hash will be stored in the session on
successful login
@return [Ramaze::Helper::User::Wrapper] wrapped return value from
model or callback
@see Ramaze::Helper::User#user_login @author manveru
# File lib/ramaze/helper/user.rb, line 183 def _login(creds = nil) if creds if @_user = _would_login?(creds) Current.session.resid! self._persistence = {:credentials => creds} end elsif persistence = self._persistence @_user = _would_login?(persistence[:credentials]) end end
@api internal @see Ramaze::Helper::User#user_logout @author manveru
# File lib/ramaze/helper/user.rb, line 215 def _logout (_persistence || {}).clear Current.request.env['ramaze.helper.user'] = nil end
# File lib/ramaze/helper/user.rb, line 232 def _persistence Current.session[:USER] end
# File lib/ramaze/helper/user.rb, line 228 def _persistence=(obj) Current.session[:USER] = obj end
The callback should return an instance of the user, otherwise it should answer with nil.
This will not actually login, just check whether the credentials would result in a user.
# File lib/ramaze/helper/user.rb, line 199 def _would_login?(creds) return unless creds if c = @_callback c.call(creds) elsif _model.respond_to?(:authenticate) _model.authenticate(creds) else Log.warn("Helper::User has no callback and there is no %p::authenticate" % _model) nil end end
Generated with the Darkfish Rdoc Generator 2.