33 lines
766 B
Go
33 lines
766 B
Go
|
package models
|
||
|
|
||
|
import (
|
||
|
"golang.org/x/crypto/bcrypt"
|
||
|
"gorm.io/gorm"
|
||
|
)
|
||
|
|
||
|
type User struct {
|
||
|
gorm.Model
|
||
|
ID uint64 `json:"ID" gorm:"primaryKey"`
|
||
|
Name string `json:"name" gorm:"not null"`
|
||
|
Username string `json:"username" gorm:"unique; not null"`
|
||
|
Email string `json:"email" gorm:"unique;not null"`
|
||
|
Password string `json:"password" gorm:"not null"`
|
||
|
}
|
||
|
|
||
|
func (user *User) HashPassword(password string) error {
|
||
|
bytes, err := bcrypt.GenerateFromPassword([]byte(password), 14)
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
user.Password = string(bytes)
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (user *User) CheckPassword(providedPassword string) error {
|
||
|
err := bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(providedPassword))
|
||
|
if err != nil {
|
||
|
return err
|
||
|
}
|
||
|
return nil
|
||
|
}
|