|
NAMEDancer2::Plugin::Auth::Extensible::Provider::DBIC - authenticate via the Dancer2::Plugin::DBIC pluginDESCRIPTIONThis class is an authentication provider designed to authenticate users against a database, using Dancer2::Plugin::DBIC to access a database.See Dancer2::Plugin::DBIC for how to configure a database connection appropriately; see the "CONFIGURATION" section below for how to configure this authentication provider with database details. See Dancer2::Plugin::Auth::Extensible for details on how to use the authentication framework. CONFIGURATIONThis provider tries to use sensible defaults, in the same manner as Dancer2::Plugin::Auth::Extensible::Provider::Database, so you may not need to provide much configuration if your database tables look similar to those.The most basic configuration, assuming defaults for all options, and defining a single authentication realm named 'users': plugins: Auth::Extensible: realms: users: provider: 'DBIC' You would still need to have provided suitable database connection details to Dancer2::Plugin::DBIC, of course; see the docs for that plugin for full details, but it could be as simple as, e.g.: plugins: Auth::Extensible: realms: users: provider: 'DBIC' users_resultset: 'User' roles_resultset: Role user_roles_resultset: UserRole DBIC: default: dsn: dbi:mysql:database=mydb;host=localhost schema_class: MyApp::Schema user: user pass: secret A full example showing all options: plugins: Auth::Extensible: realms: users: provider: 'DBIC' # Should get_user_details return an inflated DBIC row # object? Defaults to false which will return a hashref # inflated using DBIx::Class::ResultClass::HashRefInflator # instead. This also affects what `logged_in_user` returns. user_as_object: 1 # Optionally specify the DBIC resultset names if you don't # use the defaults (as shown). These and the column names are the # only settings you might need. The relationships between # these resultsets is automatically introspected by # inspection of the schema. users_resultset: User roles_resultset: Role user_roles_resultset: UserRole # optionally set the column names users_username_column: username users_password_column: password roles_role_column: role # This plugin supports the DPAE record_lastlogin functionality. # Optionally set the column name: users_lastlogin_column: lastlogin # Optionally set columns for user_password functionality in # Dancer2::Plugin::Auth::Extensible users_pwresetcode_column: pw_reset_code users_pwchanged_column: # Time of reset column. No default. # Days after which passwords expire. See logged_in_user_password_expired # functionality in Dancer2::Plugin::Auth::Extensible password_expiry_days: # No default # Optionally set the name of the DBIC schema schema_name: myschema # Optionally set additional conditions when searching for the # user in the database. These are the same format as required # by DBIC, and are passed directly to the DBIC resultset search user_valid_conditions: deleted: 0 account_request: "<": 1 # Optionally specify a key for the user's roles to be returned in. # Roles will be returned as role_name => 1 hashref pairs roles_key: roles # Optionally specify the algorithm when encrypting new passwords encryption_algorithm: SHA-512 # Optional: To validate passwords using a method called # 'check_password' in users_resultset result class # which takes the password to check as a single argument: users_password_check: check_password
DEPRECATED SETTINGS
Specifies the source name that contains the user_roles joining table. This will be camelized to generate the resultset name. The relationship to the user and role source will be introspected from the schema. SUGGESTED SCHEMAIf you use a schema similar to the examples provided here, you should need minimal configuration to get this authentication provider to work for you. The examples given here should be MySQL-compatible; minimal changes should be required to use them with other database engines.user TableYou'll need a table to store user accounts in, of course. A suggestion is something like:CREATE TABLE user ( id int(11) NOT NULL AUTO_INCREMENT, username varchar(32) NOT NULL, password varchar(40) DEFAULT NULL, name varchar(128) DEFAULT NULL, email varchar(255) DEFAULT NULL, deleted tinyint(1) NOT NULL DEFAULT '0', lastlogin datetime DEFAULT NULL, pw_changed datetime DEFAULT NULL, pw_reset_code varchar(255) DEFAULT NULL, PRIMARY KEY (id) ); All columns from the users table will be returned by the "logged_in_user" keyword for your convenience. role TableYou'll need a table to store a list of available groups in.CREATE TABLE role ( id int(11) NOT NULL AUTO_INCREMENT, role varchar(32) NOT NULL, PRIMARY KEY (id) ); user_role TableAlso requred is a table mapping the users to the roles.CREATE TABLE user_role ( user_id int(11) NOT NULL, role_id int(11) NOT NULL, PRIMARY KEY (user_id, role_id), FOREIGN KEY (user_id) REFERENCES user(id), FOREIGN KEY (role_id) REFERENCES role(id) ); SEE ALSODancer2::Plugin::Auth::ExtensibleDancer2::Plugin::DBIC Dancer2::Plugin::Auth::Extensible::Provider::Database AUTHORSAndrew Beverley "<a.beverley@ctrlo.com>"Rewrite for Plugin2: Peter Mottram, "<peter@sysnix.com>" CONTRIBUTORSBen Kaufman (whosgonna)LICENSE AND COPYRIGHTCopyright 2015-2016 Andrew BeverleyThis program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License. See http://dev.perl.org/licenses/ for more information.
Visit the GSP FreeBSD Man Page Interface. |