Add hash-lists filtering, format code, prepare API

This commit is contained in:
Kevin Kandlbinder 2022-02-23 15:12:02 +01:00
parent b81af24e50
commit 1b15b12859
11 changed files with 353 additions and 106 deletions

38
internal/db/model/user.go Normal file
View file

@ -0,0 +1,38 @@
package model
import (
"encoding/base64"
"golang.org/x/crypto/bcrypt"
)
type DBUser struct {
Username string `bson:"username" json:"username"`
HashedPassword string `bson:"password" json:"password"`
Password *string `bson:"-" json:"-"`
}
func (usr *DBUser) HashPassword() error {
if usr.Password == nil {
return nil
}
hash, err := bcrypt.GenerateFromPassword([]byte(*usr.Password), 14)
if err != nil {
return err
}
usr.HashedPassword = base64.StdEncoding.EncodeToString(hash)
return nil
}
func (usr *DBUser) CheckPassword(password string) error {
hash, err := base64.StdEncoding.DecodeString(usr.HashedPassword)
if err != nil {
return err
}
err = bcrypt.CompareHashAndPassword(hash, []byte(password))
return err
}