30 lines
924 B
Raku
30 lines
924 B
Raku
use v6;
|
|
use DBIish;
|
|
|
|
multi connect_db(:$dbname, :$host, :$user, :$pass) {
|
|
my $db = DBIish.connect("mysql",host => $host, database =>$dbname, user =>$user, password =>$pass, :RaiseError)
|
|
or die "ERROR: {DBIish.errstr}.";
|
|
$db;
|
|
}
|
|
|
|
multi create_user(:$db, :$user, :$pass) {
|
|
#https://stackoverflow.com/questions/53365101/converting-pack-to-perl6
|
|
my $salt = Buf.new((^256).roll(16));
|
|
my $sth = $db.prepare(q:to/STATEMENT/);
|
|
INSERT IGNORE INTO users (username, pass_salt, pass_md5)
|
|
VALUES (?, ?, unhex(md5(concat(pass_salt, ?))))
|
|
STATEMENT
|
|
$sth.execute($user,$salt,$pass);
|
|
$sth.insert-id or Any;
|
|
}
|
|
|
|
multi authenticate_user (:$db, :$user, :$pass) {
|
|
my $sth = $db.prepare(q:to/STATEMENT/);
|
|
SELECT userid FROM users WHERE
|
|
username=? AND pass_md5=unhex(md5(concat(pass_salt, ?)))
|
|
STATEMENT
|
|
$sth.execute($user,$pass);
|
|
my $userid = $sth.fetch;
|
|
$userid[0] or Any;
|
|
}
|