package controllers import ( "api/globals" "api/models" "api/services" "fmt" "github.com/gofiber/fiber/v2" ) func GetUsers(c *fiber.Ctx) error { var users []models.SystemUser globals.DB.Find(&users) return c.JSON(users) } func GetGroups(c *fiber.Ctx) error { var groups []models.SystemGroup globals.DB.Find(&groups) return c.JSON(groups) } func CreateUser(c *fiber.Ctx) error { var body map[string]interface{} if err := c.BodyParser(&body); err != nil { return fiber.ErrBadRequest } email := body["email"].(string) user := services.GetUserByEmail(email) if user.ID == 0 { fmt.Println("inexistent user") } return c.JSON(user) } func Login(c *fiber.Ctx) error { var body map[string]interface{} var channel models.Channel var channels []models.Channel if err := c.BodyParser(&body); err != nil { return fiber.ErrBadRequest } channelname := body["channel"].(string) password := body["password"].(string) result := globals.DB.Where("name LIKE ?", channelname+"%").Find(&channels) if result.RowsAffected == 0 { return fiber.ErrNotFound } matchFound := false for _, ch := range channels { if ch.TransmissionKey == password { channel = ch matchFound = true break } } if !matchFound { return fiber.ErrUnauthorized } customer := models.Customer{} globals.DB.First(&customer, channel.CustomerID) token, err := services.GenerateJWT(channel) if err != nil { return fiber.ErrInternalServerError } return c.JSON(fiber.Map{ "token": token, "customer": customer, }) }