Mojolicious-Plugin-ContextAuth
view release on metacpan or search on metacpan
lib/Mojolicious/Plugin/ContextAuth/DB/User.pm view on Meta::CPAN
my $error;
try {
$self->dbh->db->insert( corbac_users => \%params);
}
catch {
$self->error( 'Invalid parameter' );
$error = $_;
};
return if $error;
my $user = $self->load( $params{user_id} );
return $user;
}
sub delete ($self, $id = $self->user_id) {
$self->error('');
if ( !$id ) {
$self->error( "Need user id" );
return;
}
if ( ref $id ) {
$self->error( "Invalid user id" );
return;
}
my $error;
my $result;
try {
my $tx = $self->dbh->db->begin;
$self->dbh->db->delete(
corbac_user_sessions => { user_id => $id },
);
$self->dbh->db->delete(
corbac_user_context_roles => { user_id => $id }
);
$result = $self->dbh->db->delete(
corbac_users => {
user_id => $id,
}
);
$tx->commit;
}
catch {
$self->error( "Cannot delete user: " . $_ );
$error = 1;
};
return if $error;
return $result->rows;
}
sub update ($self, @params) {
$self->error('');
my $id = @params % 2 ? shift @params : $self->user_id;
my %to_update = @params;
if ( length $to_update{username} > 255 || length $to_update{username} < 3 ) {
$self->error( 'Invalid parameter' );
return;
}
delete $to_update{user_id};
_crypt( \%to_update ) if exists $to_update{user_password};
my $result;
my $error;
try {
$result = $self->dbh->db->update(
corbac_users => \%to_update,
{ user_id => $id }
);
}
catch {
$self->error( 'Invalid parameter' );
$error = $_;
};
return if $error;
if ( !$result->rows ) {
$self->error( 'No user updated' );
return;
}
return $self->load( $id );
}
sub _crypt ( $params ) {
my $cost = 12;
my $settings = '$2a' . sprintf '$%02i', $cost;
$params->{user_password} = Crypt::Eksblowfish::Bcrypt::bcrypt(
$params->{user_password},
$settings . '$' . Crypt::Eksblowfish::Bcrypt::en_base64(Crypt::URandom::urandom(16)),
);
}
sub add_session ( $self, $session_id ) {
$self->error('');
$self->dbh->db->insert( corbac_user_sessions => {
user_id => $self->user_id,
session_id => $session_id,
session_started => time,
});
return 1;
}
sub search ($self, %params) {
( run in 0.630 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )