| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package model
- import (
- "html"
- "kng_feed_api/database"
- "strings"
- "golang.org/x/crypto/bcrypt"
- "gorm.io/gorm"
- )
- type User struct {
- gorm.Model
- Username string `gorm:"size:225;not null;unique" json:"username"`
- Password string `gorm:"size:225;not null" json:"-"`
- }
- func (user *User) Save() (*User, error) {
- err := database.Database.Create(&user).Error
- if err != nil {
- return &User{}, err
- }
- return user, nil
- }
- func (user *User) BeforeSave(*gorm.DB) error {
- passwordHash, err := bcrypt.GenerateFromPassword([]byte(user.Password), bcrypt.DefaultCost)
- if err != nil {
- return err
- }
- user.Password = string(passwordHash)
- user.Username = html.EscapeString(strings.TrimSpace(user.Username))
- return nil
- }
- func (user *User) ValidatePassword(password string) error {
- return bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(password))
- }
- func FindUserByUsername(username string) (User, error) {
- var user User
- err := database.Database.Where("username=?", username).Find(&user).Error
- if err != nil {
- return User{}, err
- }
- return user, nil
- }
- func FindUserById(id uint) (User, error) {
- var user User
- err := database.Database.Where("ID=?", id).Find(&user).Error
- if err != nil {
- return User{}, err
- }
- return user, nil
- }
|