lib/authlogic/session/params.rb in authlogic-3.4.6 vs lib/authlogic/session/params.rb in authlogic-3.5.0
- old
+ new
@@ -1,26 +1,31 @@
module Authlogic
module Session
- # This module is responsible for authenticating the user via params, which ultimately allows the user to log in using a URL like the following:
+ # This module is responsible for authenticating the user via params, which ultimately
+ # allows the user to log in using a URL like the following:
#
# https://www.domain.com?user_credentials=4LiXF7FiGUppIPubBPey
#
- # Notice the token in the URL, this is a single access token. A single access token is used for single access only, it is not persisted. Meaning the user
- # provides it, Authlogic grants them access, and that's it. If they want access again they need to provide the token again. Authlogic will
- # *NEVER* try to persist the session after authenticating through this method.
+ # Notice the token in the URL, this is a single access token. A single access token is
+ # used for single access only, it is not persisted. Meaning the user provides it,
+ # Authlogic grants them access, and that's it. If they want access again they need to
+ # provide the token again. Authlogic will *NEVER* try to persist the session after
+ # authenticating through this method.
#
- # For added security, this token is *ONLY* allowed for RSS and ATOM requests. You can change this with the configuration. You can also define if
- # it is allowed dynamically by defining a single_access_allowed? method in your controller. For example:
+ # For added security, this token is *ONLY* allowed for RSS and ATOM requests. You can
+ # change this with the configuration. You can also define if it is allowed dynamically
+ # by defining a single_access_allowed? method in your controller. For example:
#
# class UsersController < ApplicationController
# private
# def single_access_allowed?
# action_name == "index"
# end
#
- # Also, by default, this token is permanent. Meaning if the user changes their password, this token will remain the same. It will only change
- # when it is explicitly reset.
+ # Also, by default, this token is permanent. Meaning if the user changes their
+ # password, this token will remain the same. It will only change when it is explicitly
+ # reset.
#
# You can modify all of this behavior with the Config sub module.
module Params
def self.included(klass)
klass.class_eval do
@@ -28,74 +33,84 @@
include InstanceMethods
attr_accessor :single_access
persist :persist_by_params
end
end
-
+
# Configuration for the params / single access feature.
module Config
- # Works exactly like cookie_key, but for params. So a user can login via params just like a cookie or a session. Your URL would look like:
+ # Works exactly like cookie_key, but for params. So a user can login via
+ # params just like a cookie or a session. Your URL would look like:
#
# http://www.domain.com?user_credentials=my_single_access_key
#
- # You can change the "user_credentials" key above with this configuration option. Keep in mind, just like cookie_key, if you supply an id
- # the id will be appended to the front. Check out cookie_key for more details. Also checkout the "Single Access / Private Feeds Access" section in the README.
+ # You can change the "user_credentials" key above with this
+ # configuration option. Keep in mind, just like cookie_key, if you
+ # supply an id the id will be appended to the front. Check out
+ # cookie_key for more details. Also checkout the "Single Access /
+ # Private Feeds Access" section in the README.
#
# * <tt>Default:</tt> cookie_key
# * <tt>Accepts:</tt> String
def params_key(value = nil)
rw_config(:params_key, value, cookie_key)
end
alias_method :params_key=, :params_key
-
- # Authentication is allowed via a single access token, but maybe this is something you don't want for your application as a whole. Maybe this is
- # something you only want for specific request types. Specify a list of allowed request types and single access authentication will only be
+
+ # Authentication is allowed via a single access token, but maybe this is
+ # something you don't want for your application as a whole. Maybe this
+ # is something you only want for specific request types. Specify a list
+ # of allowed request types and single access authentication will only be
# allowed for the ones you specify.
#
# * <tt>Default:</tt> ["application/rss+xml", "application/atom+xml"]
- # * <tt>Accepts:</tt> String of a request type, or :all or :any to allow single access authentication for any and all request types
+ # * <tt>Accepts:</tt> String of a request type, or :all or :any to
+ # allow single access authentication for any and all request types
def single_access_allowed_request_types(value = nil)
rw_config(:single_access_allowed_request_types, value, ["application/rss+xml", "application/atom+xml"])
end
alias_method :single_access_allowed_request_types=, :single_access_allowed_request_types
end
-
- # The methods available for an Authlogic::Session::Base object that make up the params / single access feature.
+
+ # The methods available for an Authlogic::Session::Base object that make
+ # up the params / single access feature.
module InstanceMethods
private
+
def persist_by_params
return false if !params_enabled?
self.unauthorized_record = search_for_record("find_by_single_access_token", params_credentials)
self.single_access = valid?
end
-
+
def params_enabled?
return false if !params_credentials || !klass.column_names.include?("single_access_token")
return controller.single_access_allowed? if controller.responds_to_single_access_allowed?
-
+
case single_access_allowed_request_types
when Array
- single_access_allowed_request_types.include?(controller.request_content_type) || single_access_allowed_request_types.include?(:all)
+ single_access_allowed_request_types.include?(controller.request_content_type) ||
+ single_access_allowed_request_types.include?(:all)
else
[:all, :any].include?(single_access_allowed_request_types)
end
end
-
+
def params_key
build_key(self.class.params_key)
end
-
+
def single_access?
single_access == true
end
-
+
def single_access_allowed_request_types
self.class.single_access_allowed_request_types
end
-
+
def params_credentials
controller.params[params_key]
end
end
end
end
-end
\ No newline at end of file
+end