|
NAMEDancer2::Plugin::Auth::Extensible::Provider::DBIC - authenticate via the Dancer2::Plugin::DBIC plugin DESCRIPTIONThis 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::Extensible Dancer2::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 Beverley This 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.
|