NAME
WWW::Suffit::Plugin::ConfigAuth - The Suffit plugin for authentication and authorization providing via configuration
SYNOPSIS
sub
startup {
my
$self
=
shift
->SUPER::startup();
$self
->plugin(
'ConfigAuth'
, {
configsection
=>
'auth'
,
});
# . . .
}
... configuration:
# ConfigAuth configuration
<Auth>
User test:5f4dcc3b5aa765d61d8327deb882cf99:role=Regular%20user
User admin:5f4dcc3b5aa765d61d8327deb882cf99
User foo:bar:status=1
&uid
=2
&name
=user
</Auth>
DESCRIPTION
The Suffit plugin for authentication and authorization providing via configuration
OPTIONS
This plugin supports the following options
configsection
configsection
=>
'auth'
This option sets a section name of the config file for define namespace of configuration directives for this plugin
Default: none (without section)
HELPERS
This plugin provides the following helpers
configauth.init
my
$init
=
$self
->configauth->init;
This method returns the init object (Mojo::JSON::Pointer) that contains data of initialization:
{
error
=>
'...'
,
# Error message
status
=> 500,
# HTTP status code
code
=>
'E7000'
,
# The Suffit error code
}
For example (in your controller):
# Check init status
my
$init
=
$self
->configauth->init;
if
(
my
$err
=
$init
->get(
'/error'
)) {
$self
->reply->error(
$init
->get(
'/status'
),
$init
->get(
'/code'
),
$err
);
return
;
}
configauth.authenticate
my
$auth
=
$self
->configauth->authenticate({
username
=>
$username
,
password
=>
$password
,
loginpage
=>
'login'
,
# -- To login-page!!
expiration
=>
$remember
? SESSION_EXPIRE_MAX : SESSION_EXPIRATION,
realm
=>
"Test zone"
,
});
if
(
my
$err
=
$auth
->get(
'/error'
)) {
if
(
my
$location
=
$auth
->get(
'/location'
)) {
# Redirect
$self
->flash(
message
=>
$err
);
$self
->redirect_to(
$location
);
# 'login' -- To login-page!!
}
elsif
(
$auth
->get(
'/status'
) >= 500) {
# Fatal server errors
$self
->reply->error(
$auth
->get(
'/status'
),
$auth
->get(
'/code'
),
$err
);
}
else
{
# User errors (show on login page)
$self
->stash(
error
=>
$err
);
return
$self
->render;
}
return
;
}
This helper performs authentication backend subprocess and returns result object (Mojo::JSON::Pointer) that contains data structure:
{
error
=>
''
,
# Error message
status
=> 200,
# HTTP status code
code
=>
'E0000'
,
# The Suffit error code
username
=>
$username
,
# User name
referer
=>
$referer
,
# Referer
loginpage
=>
$loginpage
,
# Login page for redirects (location)
location
=>
undef
,
# Location URL for redirects
}
configauth.authorize
my
$auth
=
$self
->configauth->authorize({
referer
=>
$referer
,
username
=>
$username
,
loginpage
=>
'login'
,
# -- To login-page!!
});
if
(
my
$err
=
$auth
->get(
'/error'
)) {
if
(
my
$location
=
$auth
->get(
'/location'
)) {
$self
->flash(
message
=>
$err
);
$self
->redirect_to(
$location
);
# 'login' -- To login-page!!
}
else
{
$self
->reply->error(
$auth
->get(
'/status'
),
$auth
->get(
'/code'
),
$err
);
}
return
;
}
This helper performs authorization backend subprocess and returns result object (Mojo::JSON::Pointer) that contains data structure:
{
error
=>
''
,
# Error message
status
=> 200,
# HTTP status code
code
=>
'E0000'
,
# The Suffit error code
username
=>
$username
,
# User name
referer
=>
$referer
,
# Referer
loginpage
=>
$loginpage
,
# Login page for redirects (location)
location
=>
undef
,
# Location URL for redirects
user
=> {
# User data
address
=>
"127.0.0.1"
,
# User (client) IP address
comment
=>
"No comments"
,
# Comment
=>
'test@example.com'
,
# Email address
email_md5
=>
"a84450...366"
,
# MD5 hash of email address
method
=>
"ANY"
,
# Current method of request
name
=>
"Bob Smith"
,
# Full user name
path
=>
"/"
,
# Current query-path of request
role
=>
"Regular user"
,
# User role
status
=> true,
# User status in JSON::PP::Boolean notation
uid
=> 1,
# User ID
username
=>
$username
,
# User name
},
}
METHODS
Internal methods
register
This method register the plugin and helpers in Mojolicious application
SEE ALSO
Mojolicious, WWW::Suffit::Server
AUTHOR
Serż Minus (Sergey Lepenkov) https://www.serzik.com <abalama@cpan.org>
COPYRIGHT
Copyright (C) 1998-2024 D&D Corporation. All Rights Reserved
LICENSE
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
See LICENSE
file and https://dev.perl.org/licenses/