From 6a3b3f916eee0d757bd52a690bc398fe01a1dc9c Mon Sep 17 00:00:00 2001 From: dakkar Date: Sat, 16 Dec 2017 18:00:36 +0000 Subject: users model --- lib/Ultramarine/Model/Users.pm6 | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 lib/Ultramarine/Model/Users.pm6 (limited to 'lib') diff --git a/lib/Ultramarine/Model/Users.pm6 b/lib/Ultramarine/Model/Users.pm6 new file mode 100644 index 0000000..ad52ab4 --- /dev/null +++ b/lib/Ultramarine/Model/Users.pm6 @@ -0,0 +1,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; + } +} -- cgit v1.2.3