blob: ad52ab41fae4cab09b5dd1acb137485d8cb9a755 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
use v6.d.PREVIEW; use Digest::MD5; use experimental :pack; class Ultramarine::Model::Users { has %!accounts; submethod BUILD(:%!accounts) {} multi method authenticate(:$user!,:$password! is copy) { $password ~~ s[^enc\:(.+)$] = pack('H*',$/[0]).decode('UTF-8'); return (%!accounts{$user} && %!accounts{$user} eq $password); } multi method authenticate(:$user!,:$token!,:$salt!) { return unless my $password = %!accounts{$user}; my $expected_token = Digest::MD5.md5_hex( $password ~ $salt ); return $token eq $expected_token; } }
|