87 lines
2.0 KiB
Go
87 lines
2.0 KiB
Go
package controllers
|
|
|
|
import (
|
|
"InfantrySkillCalculator/models"
|
|
"github.com/gin-gonic/gin"
|
|
"log"
|
|
"session"
|
|
)
|
|
|
|
func CreateUser(username string, hashedPassword string, enabled bool, usedCode string) {
|
|
user := models.User{Username: username, Password: hashedPassword, Enabled: enabled}
|
|
err := models.DB.Create(&user).Error
|
|
if err != nil {
|
|
log.Fatalf("Error while creating user: %v", err)
|
|
}
|
|
|
|
var code models.ActivationCode
|
|
err = models.DB.
|
|
Model(&models.ActivationCode{}).
|
|
Where("code = ?", usedCode).
|
|
First(&code).Error
|
|
if err != nil {
|
|
log.Fatalf("Error while getting activation code: %v", err)
|
|
}
|
|
|
|
code.UsedForUsername = username
|
|
err = models.DB.Save(&code).Error
|
|
if err != nil {
|
|
log.Fatalf("Error while updating activation code: %v", err)
|
|
}
|
|
|
|
user.UserRole = code.UserRole
|
|
err = models.DB.Save(&user).Error
|
|
if err != nil {
|
|
log.Fatalf("Error while updating user role: %v", err)
|
|
}
|
|
|
|
var bf2042 models.Game
|
|
err = models.DB.
|
|
Where("tag = ?", "BF2042").
|
|
First(&bf2042).Error
|
|
if err != nil {
|
|
log.Fatalf("Error while getting game: %v", err)
|
|
}
|
|
userSettings := models.UserSettings{
|
|
Username: username,
|
|
ActiveGameID: bf2042.ID,
|
|
SquadColors: true,
|
|
CalcMedian: false,
|
|
UseCache: true,
|
|
}
|
|
models.DB.Create(&userSettings)
|
|
}
|
|
|
|
func IsUserEnabled(username string) bool {
|
|
var user models.User
|
|
models.DB.Where("username = ?", username).First(&user)
|
|
return user.Enabled
|
|
}
|
|
|
|
func GetUserRole(username string) models.Role {
|
|
var user models.User
|
|
err := models.DB.Where("username = ?", username).First(&user).Error
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
return user.UserRole
|
|
}
|
|
|
|
func GetUserRoleByCtx(c *gin.Context) models.Role {
|
|
username, ok := session.GetUsername(c)
|
|
if !ok {
|
|
return models.ReaderRole
|
|
}
|
|
return GetUserRole(username)
|
|
}
|
|
|
|
func IsUserAdmin(username string) bool {
|
|
var user models.User
|
|
err := models.DB.Where("username = ?", username).First(&user).Error
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
return false
|
|
}
|
|
return user.UserRole == models.AdminRole
|
|
}
|