59 lines
1.3 KiB
Go
59 lines
1.3 KiB
Go
package store
|
|
|
|
import (
|
|
"crypto/sha1"
|
|
"fmt"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type User struct {
|
|
gorm.Model
|
|
Username string
|
|
Password string
|
|
Email string `gorm:"unique"`
|
|
}
|
|
|
|
func (user *User) GetProjects(db *gorm.DB) []Project {
|
|
var projects []Project
|
|
db.Where(&Project{OwnerId: user.ID}).Find(&projects)
|
|
return projects
|
|
}
|
|
|
|
func (user *User) GetProject(db *gorm.DB, id int) Project {
|
|
var project Project
|
|
db.Where("id = ? AND owner_id = ?", id, user.ID).First(&project)
|
|
return project
|
|
}
|
|
|
|
func (user *User) CreateProject(db *gorm.DB) Project {
|
|
var project Project
|
|
project.OwnerId = user.ID
|
|
db.Create(&project)
|
|
return project
|
|
}
|
|
|
|
func (user *User) ChangeUsername(db *gorm.DB, username string) {
|
|
user.Username = username
|
|
db.Save(&user)
|
|
}
|
|
|
|
func (user *User) ChangeEmail(db *gorm.DB, email string) error {
|
|
user.Email = email
|
|
return db.Save(&user).Error
|
|
}
|
|
|
|
func (user *User) ChangePassword(db *gorm.DB, password string) {
|
|
sha1Sum := sha1.Sum([]byte(password))
|
|
user.Password = fmt.Sprintf("%x", sha1Sum)
|
|
db.Save(&user)
|
|
}
|
|
|
|
func CreateUser(db *gorm.DB, email string, password string, username string) User {
|
|
user := User{}
|
|
user.Username = username
|
|
sha1Hash := sha1.Sum([]byte(password))
|
|
user.Password = fmt.Sprintf("%x", sha1Hash)
|
|
user.Email = email
|
|
db.Create(&user)
|
|
return user
|
|
}
|