package controllers import ( "InfantrySkillCalculator/models" "InfantrySkillCalculator/utils" "github.com/gin-gonic/gin" "net/http" "strings" ) // CreateCode POST /code func CreateCode(c *gin.Context) { userRole, ok := c.GetPostForm("user_role") if !ok { c.String(http.StatusBadRequest, "Missing user role") utils.Logger.Error("Missing user role") return } var role models.Role switch userRole { case "ADMIN": role = models.AdminRole case "AUTHOR": role = models.AuthorRole case "READER": role = models.ReaderRole default: c.String(http.StatusInternalServerError, "Invalid user role: "+userRole) utils.Logger.Error("Invalid user role: " + userRole) return } newCode := utils.GenerateActivationCode() newCodeObj := models.ActivationCode{Code: newCode, UserRole: role} if err := models.DB.Create(&newCodeObj).Error; err != nil { c.String(http.StatusInternalServerError, "Failed to create new code: "+err.Error()) utils.Logger.Error("Failed to create new code: " + err.Error()) return } c.String(http.StatusOK, "Activation code for role '"+string(role)+"': "+newCode) utils.Logger.Info("Activation code for role '" + string(role) + "' created: " + newCode[:4] + strings.Repeat("*", 28)) }