sonarqube-badges/store/user.go
2025-03-15 01:49:52 +01:00

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
}