NAME
Data::Login - Data object for login.
SYNOPSIS
use Data::Login;
my $obj = Data::Login->new(%params);
my $hash_type = $obj->hash_type;
my $id = $obj->id;
my $login_name = $obj->login_name;
my $password_hash = $obj->password_hash;
my $roles_ar = $obj->roles;
my $valid_from = $obj->valid_from;
my $valid_to = $obj->valid_to;
DESCRIPTION
The intention of this module is to store information about the user logins. User logins are active only within a certain time range, and we need a mechanism to transition to others.
A real-world example is a database table that follows the same format as this data object, with multiple records being valid at different times, e.g. for transfering of Digest from obsolete version to new. Or planning of access to system from concrete date.
METHODS
new
my $obj = Data::Login->new(%params);
Constructor.
hash_type
Hash type object. Possible value is Data::HashType object. Parameter is required. Default value is undef.
id
Id of record. Id could be number. It's optional. Default value is undef.
login_name
Login name. Maximal length of value is 50 characters. It's required.
password_hash
Password hash. Maximal length of value is 128 characters. It's required.
roles
Login roles list. Possible value is reference to array with Data::Login::Role objects. Parameter is optional. Default value is [].
valid_from
Date and time of start of use. Must be a DateTime object. It's required.
valid_to
Date and time of end of use. An undefined value means it is in use. Must be a DateTime object. It's optional.
Returns instance of object.
hash_type
my $hash_type = $obj->hash_type;
Get hash type.
Returns 0/1.
id
my $id = $obj->id;
Get hash type record id.
Returns number.
login_name
my $login_name = $obj->login_name;
Get login name.
Returns string.
password_hash
my $password_hash = $obj->password_hash;;
Get password hash.
Returns string.
roles
my $roles_ar = $obj->roles;
Get roles.
Returns reference to array with Data::Login::Role objects.
valid_from
my $valid_from = $obj->valid_from;
Get date and time of start of use.
Returns DateTime object.
valid_to
my $valid_to = $obj->valid_to;
Get date and time of end of use.
Returns DateTime object or undef.
ERRORS
new():
Parameter 'hash_type' is required.
Parameter 'hash_type' must be a 'Data::HashType' object.
Value: %s
Reference: %s
Parameter 'id' must be a natural number.
Value: %s
Parameter 'login_name' has length greater than '50'.
Value: %s
Parameter 'login_name' is required.
Parameter 'password_hash' has length greater than '128'.
Value: %s
Parameter 'password_hash' is required.
Parameter 'roles' must be a array.
Value: %s
Reference: %s
Parameter 'valid_from' is required.
Parameter 'valid_from' must be a 'DateTime' object.
Value: %s
Reference: %s
Parameter 'valid_to' must be a 'DateTime' object.
Value: %s
Reference: %s
Parameter 'valid_to' must be older than 'valid_from' parameter.
Value: %s
Valid from: %s
Roles isn't 'Data::Login::Role' object.
Value: %s
Reference: %s
EXAMPLE
use strict;
use warnings;
use Data::HashType;
use Data::Login;
use Data::Login::Role;
use Data::Random::Utils qw(is_valid);
use DateTime;
my $obj = Data::Login->new(
'hash_type' => Data::HashType->new(
'id' => 1,
'name' => 'SHA-512',
'valid_from' => DateTime->new(
'day' => 1,
'month' => 1,
'year' => 2024,
),
),
'id' => 2,
'login_name' => 'michal.josef.spacek',
'password_hash' => '24ea354ebd9198257b8837fd334ac91663bf52c05658eae3c9e6ad0c87c659c62e43a2e1e5a1e573962da69c523bf1f680c70aedd748cd2b71a6d3dbe42ae972',
'roles' => [
Data::Login::Role->new(
'id' => 1,
'role' => 'Admin',
'valid_from' => DateTime->new(
'day' => 1,
'month' => 1,
'year' => 2024,
),
),
Data::Login::Role->new(
'id' => 2,
'role' => 'User',
'valid_from' => DateTime->new(
'day' => 1,
'month' => 1,
'year' => 2024,
),
),
Data::Login::Role->new(
'id' => 3,
'role' => 'Bad',
'valid_from' => DateTime->new(
'day' => 1,
'month' => 1,
'year' => 2024,
),
'valid_to' => DateTime->new(
'day' => 1,
'month' => 2,
'year' => 2024,
),
),
],
'valid_from' => DateTime->new(
'day' => 1,
'month' => 1,
'year' => 2024,
),
);
# Print out.
print 'Hash type: '.$obj->hash_type->name."\n";
print 'Id: '.$obj->id."\n";
print 'Login name: '.$obj->login_name."\n";
print 'Password hash: '.$obj->password_hash."\n";
print "Active roles:\n";
print join "\n", map { is_valid($_) ? ' - '.$_->role : () } @{$obj->roles};
print "\n";
print 'Valid from: '.$obj->valid_from->ymd."\n";
# Output:
# Hash type: SHA-512
# Id: 2
# Login name: michal.josef.spacek
# Password hash: 24ea354ebd9198257b8837fd334ac91663bf52c05658eae3c9e6ad0c87c659c62e43a2e1e5a1e573962da69c523bf1f680c70aedd748cd2b71a6d3dbe42ae972
# Active roles:
# - Admin
# - User
# Valid from: 2024-01-01
DEPENDENCIES
DateTime, Error::Pure, Mo, Mo::utils.
REPOSITORY
https://github.com/michal-josef-spacek/Data-Login
AUTHOR
Michal Josef Špaček mailto:skim@cpan.org
LICENSE AND COPYRIGHT
© 2023-2024 Michal Josef Špaček
BSD 2-Clause License
VERSION
0.04