summaryrefslogtreecommitdiff
path: root/password.go
diff options
context:
space:
mode:
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
+}