From 4215c2c1d9ed55418d93c535734154ad8a805ba3 Mon Sep 17 00:00:00 2001 From: overflowerror Date: Sun, 9 Jan 2022 22:30:48 +0100 Subject: [PATCH] added basic data layer functions for users --- data/users.sh | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 data/users.sh diff --git a/data/users.sh b/data/users.sh new file mode 100644 index 0000000..e73aa58 --- /dev/null +++ b/data/users.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +createSalt() { + head -c 12 /dev/urandom | base64 +} + +hashPassword() { + password="$1" + salt="$2" + echo "$password$salt" | sha512sum | cut -d' ' -f1 +} + +createUser() { + username="$1" + password="$2" + salt="$(createSalt)" + password="$(hashPassword "$password" "$salt")" + echo "INSERT INTO users (username, password, salt) VALUES ( + '$(escape "$username")', + '$(escape "$password")', + '$(escape "$salt")' + )" | execute +} + +loginUser() { + username="$1" + password="$2" + + result="$(echo "SELECT password, salt FROM users WHERE username='$(escape "$username")'" | query)" + hash="$(echo "$result" | getColumns 1)" + salt="$(echo "$result" | getColumns 2)" + + password="$(hashPassword "$password" "$salt")" + + test "$password" = "$hash" + return +}