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 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 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( 'active' => 1, 'id' => 1, 'role' => 'Admin', ), Data::Login::Role->new( 'active' => 1, 'id' => 2, 'role' => 'User', ), Data::Login::Role->new( 'active' => 0, 'id' => 3, 'role' => 'Bad', ), ], '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 { $_->active ? ' - '.$_->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 AUTHOR Michal Josef Špaček LICENSE AND COPYRIGHT © 2023-2024 Michal Josef Špaček BSD 2-Clause License VERSION 0.03