mirror of
https://github.com/Unkn0wnCat/matrix-veles.git
synced 2025-04-29 10:16:49 +02:00
38 lines
752 B
Go
38 lines
752 B
Go
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
|
|
}
|