91 lines
1.5 KiB
Go
91 lines
1.5 KiB
Go
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,
|
|
})
|
|
}
|