summaryrefslogtreecommitdiff
path: root/password.go
diff options
context:
space:
mode:
authorxengineering <me@xengineering.eu>2026-06-05 22:45:01 +0200
committerxengineering <me@xengineering.eu>2026-06-20 17:10:39 +0200
commit0143b6e4cb7c31abee7d71a2dbd713abcc98936d (patch)
treea0b1aa8c12647a7e92a80a689a1a3ba29f1fad3e /password.go
parent3934137fa15737145094ec4607de82e5b3dbf063 (diff)
downloadfinserv-0143b6e4cb7c31abee7d71a2dbd713abcc98936d.tar
finserv-0143b6e4cb7c31abee7d71a2dbd713abcc98936d.tar.zst
finserv-0143b6e4cb7c31abee7d71a2dbd713abcc98936d.zip
Add Register()
This function creates a new user and sets the username and bcrypt-hashed password.
Diffstat (limited to 'password.go')
-rw-r--r--password.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/password.go b/password.go
new file mode 100644
index 0000000..ae11968
--- /dev/null
+++ b/password.go
@@ -0,0 +1,26 @@
+package main
+
+import (
+ "database/sql"
+
+ "golang.org/x/crypto/bcrypt"
+ _ "github.com/mattn/go-sqlite3"
+)
+
+const (
+ bcryptCost = 12
+)
+
+func Register(db *sql.DB, username, password string) error {
+ hash, err := bcrypt.GenerateFromPassword([]byte(password), bcryptCost)
+ if err != nil {
+ return err
+ }
+
+ err = Transaction(db, func(tx *sql.Tx) error {
+ _, err := tx.Exec(`INSERT INTO users (username, password_bcrypt) VALUES(?, ?);`, username, hash)
+ return err
+ })
+
+ return err
+}