use warnings;
use strict;
package User;
use Digest::SHA1 qw(sha1_hex);
use Abstract::Meta::Class ':all';
has '$.id';
has '$.name';
has '$.password' => (
on_change => sub {
my ($self, $attribute, $scope, $value_ref) = @_;
$$value_ref = sha1_hex($$value_ref);
$self;
}
);
has '$.email' => (
on_change => sub {
my ($self, $attribute, $scope, $value_ref) = @_;
die "invalid email format:" . $$value_ref
unless $$value_ref =~ m/^<?[^@<>]+@[^@.<>]+(?:\.[^@.<>]+)+>?$/;
$self;
}
);
has '$.address';
has '%.roles' ;
sub is_valid_password {
my ($self, $password) = @_;
!! ($self->password eq sha1_hex($password));
}
##################
my $user = User->new(id => 1, name => 'Scott', email => 'scott@email.com', password => '1234567');
if($user->is_valid_password('1234567')) {
#do some stuff
}