Module: Arrow::AppletAuthentication
- Included in:
- AccessControls
- Defined in:
- lib/arrow/appletmixins.rb
Overview
A collection of functions for abstracting authentication and authorization away from Arrow::Applets. Applets which include this module should provide implementations of at least the #get_authenticated_user method, and may provide implementations of other methods to tailor the authentication for their particular applet.
Customization API
- [#get_authenticated_user]
-
Override this method to provide the particulars of your authentication system. The method is given the Arrow::Transaction object that wraps the incoming request, and should return whatever kind of “user” object they wish to use. The only requirement for a user object as far as this mixin is concerned is that it must have a #to_s method, so even a simple username in a String will suffice. If no authorization is possible, return nil, which will cause the #login_action to be invoked.
- [#user_is_authorized]
-
Override this method to provide authorization checks of an authenticated user (the one returned from #get_authenticated_user) against the incoming request. If the user is authorized to run the action, return
true
, else returnfalse
. Failed authorization will cause the #deny_access_action to be invoked. - [#login_action]
-
Override this method if you wish to customize the login process. By default, this returns a response that prompts the client using Basic HTTP authentication.
- [#logout_action]
-
Override this method if you wish to customize the logout process. By default, this declines the request, which will tell Apache to try to handle the request itself.
- [#deny_access_action]
-
Override this method if you wish to customize what happens when the client sends a request for a resource they are not authorized to interact with. By default, this method returns a simple HTTP FORBIDDEN response.
VCS Id
$Id$
Authors
-
Michael Granger <[email protected]>
:include: LICENSE
–
Please see the file LICENSE in the top-level directory for licensing details.
Instance Method Summary collapse
-
#deny_access_action(txn, *args) ⇒ Object
Default AppletAuthentication API: provides a hook for applets which have some actions which require authorization to run; override this to provide a “Forbidden” page.
-
#login_action(txn, *args) ⇒ Object
Default AppletAuthentication API: provides login functionality for actions that require authorization; override this to provide a login form.
-
#logout_action(txn, *args) ⇒ Object
Default AppletAuthentication API: provides login functionality for actions that require authorization; override this to customize the logout process.
Instance Method Details
#deny_access_action(txn, *args) ⇒ Object
Default AppletAuthentication API: provides a hook for applets which have some actions which require authorization to run; override this to provide a “Forbidden” page. By default, this just returns an HTTP FORBIDDEN response.
83 84 85 86 87 |
# File 'lib/arrow/appletmixins.rb', line 83 def deny_access_action( txn, *args ) self.log.error "Unauthorized request for %s" % [ txn.uri ] txn.status = Apache::FORBIDDEN return "access denied" end |
#login_action(txn, *args) ⇒ Object
Default AppletAuthentication API: provides login functionality for actions that require authorization; override this to provide a login form. By default, this just returns an HTTP UNAUTHORIZED response.
63 64 65 66 67 68 |
# File 'lib/arrow/appletmixins.rb', line 63 def login_action( txn, *args ) self.log.info "Prompting the client for authentication" # :TODO: This really needs to set the WWW-Authenticate header... txn.status = Apache::HTTP_UNAUTHORIZED return "this resource requires authentication" end |
#logout_action(txn, *args) ⇒ Object
Default AppletAuthentication API: provides login functionality for actions that require authorization; override this to customize the logout process. By default, this just returns nil
, which will decline the request.
74 75 76 77 |
# File 'lib/arrow/appletmixins.rb', line 74 def logout_action( txn, *args ) self.log.info "No logout action provided, passing the request off to the server" return Apache::DECLINED end |