NAME
Dancer2::Plugin::Auth::Extensible::Role::Provider - base role for authentication providers
DESCRIPTION
Base Moo::Role for authentication providers.
Also provides secure password matching which automatically handles crypted passwords via Crypt::SaltedHash.
ATTRIBUTES
plugin
The calling Dancer2::Plugin::Auth::Extensible object.
Required.
disable_roles
Defaults to the value of "disable_roles" in Dancer2::Plugin::Auth::Extensible.
encryption_algorithm
The encryption_algorithm used by "encrypt_password".
Defaults to 'SHA-512';
METHODS
match_password $given, $correct
Matches $given password with the $correct one.
encrypt_password $password
Encrypts password $password with "encryption_algorithm" and returns the encrypted password.
METHODS IMPLEMENTED BY PROVIDER
The following methods must be implemented by the consuming provider class.
required methods
authenticate_user $username, $password
If either of
$usernameor$passwordare undefined then die.Return true on success.
optional methods
The following methods are optional and extend the functionality of the provider.
get_user_details $username
Die if
$usernameis undefined. Otherwise return a user object (if appropriate) or a hash reference of user details.get_user_roles $username
Die if
$usernameis undefined. Otherwise return an array reference of user roles.create_user %user
Create user with fields specified in
%user.Method should croak if
usernamekey is empty or undefined. If a user with the specified username already exists then we would normally expect the method to die though this is of course dependent on the backend in use.The new user should be returned.
get_user_by_code $code
Try to find a user which has
pw_reset_codefield set to$code.Returns the user on success.
set_user_details $username, %update
Update user with
$usernameaccording to%update.Passing an empty or undefined
$usernameshould cause the method to die.The update user should be returned.
set_user_password $username, $password
Set the password for the user specified by
$usernameto <$password> encrypted using "encrypt_password" or via whatever other method is appropriate for the backend.password_expired $user
The
$usershould be as returned from "get_user_details". The method checks whether the user's password has expired and returns 1 if it has and 0 if it has not.