diff options
| author | xengineering <me@xengineering.eu> | 2026-06-05 22:45:01 +0200 |
|---|---|---|
| committer | xengineering <me@xengineering.eu> | 2026-06-20 17:10:39 +0200 |
| commit | 0143b6e4cb7c31abee7d71a2dbd713abcc98936d (patch) | |
| tree | a0b1aa8c12647a7e92a80a689a1a3ba29f1fad3e /password.go | |
| parent | 3934137fa15737145094ec4607de82e5b3dbf063 (diff) | |
| download | finserv-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.go | 26 |
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 +} |
