| 
 
 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. 
 
  |