Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # login that worked but fails now with error : Salt must be exactly 16 octets long at lib/PearlBee/Password.pm line 24.
- # this is inside Authentification.pm
- sub generate_hash {
- return -1 if @_ < 1 || @_ > 2;
- my $password = shift;
- my $salt = decode_base64(shift);
- my $hashref = {};
- $salt = rand_bits(128) unless $salt;
- my $bcrypt = Digest->new('Bcrypt');
- $bcrypt->cost(12);
- $bcrypt->salt($salt);
- $bcrypt->add($password);
- $hashref->{hash} = $bcrypt->hexdigest;
- $hashref->{salt} = encode_base64($salt);
- return $hashref;
- }
- # in the route for the above validation :
- my $password_hash = generate_hash($password, $user->{salt}) if $user;
- warn $password_hash->{hash};
- #warn $user->validate($password->{});
- if ( $user && $user->password eq $password_hash->{hash} ) {
- my $user_obj->{is_admin} = $user->is_admin;
- $user_obj->{role} = $user->role;
- $user_obj->{id} = $user->id;
- $user_obj->{username} = $user->username;
- session user => $user_obj;
- session user_id => $user->id;
- redirect('/dashboard');
- }
- else {
- template 'login', { warning => "Login failed for the provided username/password pair." }, { layout => 'admin' };
- }
- };
- # new sub which fails
- # this is inside User.pm
- sub validate {
- my ($self, $password) = @_;
- my $hashed = crypt( $password, $self->password );
- return $self->password eq $hashed;
- }
- #inside the route
- post '/login' => sub {
- my $password = params->{password};
- my $username = params->{username};
- my $user = resultset("User")->search({
- username => $username,
- -or => [
- status => 'activated',
- status => 'deactivated'
- ]
- })->first;
- if ( $user and $user->validate($password) ) {
- my $user_obj->{is_admin} = $user->is_admin;
- $user_obj->{role} = $user->role;
- $user_obj->{id} = $user->id;
- $user_obj->{username} = $user->username;
- session user => $user_obj;
- session user_id => $user->id;
- redirect('/dashboard');
- }
- else {
- template 'login', { warning => "Login failed for the provided username/password pair." }, { layout => 'admin' };
- }
- };
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement