package helpers import ( "errors" "fmt" "git.readonly.ch/bouzoure/pop-camarades/models" "github.com/gofiber/fiber/v2" "gorm.io/gorm" ) func FirstAccountCheck() (bool, error) { db, err := GetDatabase() if err != nil { return false, err } var user models.User result := db.First(&user, "is_admin = ?", true) if errors.Is(result.Error, gorm.ErrRecordNotFound) { return false, nil } if result.Error != nil { return false, result.Error } if result.RowsAffected < 1 { return false, nil } return true, nil } func FirstAccountCreate() error { db, err := GetDatabase() if err != nil { return err } password, err := HashPassword("password") if err != nil { return err } user := models.User{ Name: "Admin", Email: "admin@invalid.tld", Password: password, IsAdmin: true, } result := db.Create(&user) if result.Error != nil { return result.Error } return nil } func UserExistsAndIsActive(id uint) (bool, error) { db, err := GetDatabase() if err != nil { return false, err } var user models.User result := db.First(&user, "id = ?", id) if errors.Is(result.Error, gorm.ErrRecordNotFound) { return false, nil } if result.Error != nil { return false, result.Error } if result.RowsAffected < 1 { return false, nil } return true, nil } func GetSessionUserId(c *fiber.Ctx) (uint, error) { sess, err := GetSessionStore(c) if err != nil { return 0, err } userid := sess.Get("userid") if userid == nil { return 0, fmt.Errorf("no value for key userid in session") } switch userid.(type) { case uint: default: return 0, fmt.Errorf("userid value is not of type uint as expected") } return userid.(uint), nil }