42 lines
1.2 KiB
Go
42 lines
1.2 KiB
Go
package users
|
|
|
|
import (
|
|
db "ttime/internal/database"
|
|
"ttime/internal/types"
|
|
|
|
"github.com/gofiber/fiber/v2"
|
|
"github.com/gofiber/fiber/v2/log"
|
|
)
|
|
|
|
// @Summary PromoteToAdmin
|
|
// @Description promote chosen user to admin
|
|
// @Tags User
|
|
// @Accept json
|
|
// @Produce plain
|
|
// @Param NewUser body types.NewUser true "user info"
|
|
// @Success 200 {json} json "Successfully promoted user"
|
|
// @Failure 400 {string} string "Bad request"
|
|
// @Failure 401 {string} string "Unauthorized"
|
|
// @Failure 500 {string} string "Internal server error"
|
|
// @Router /promoteToAdmin [post]
|
|
func PromoteToAdmin(c *fiber.Ctx) error {
|
|
// Extract the username from the request body
|
|
var newUser types.NewUser
|
|
if err := c.BodyParser(&newUser); err != nil {
|
|
return c.Status(400).SendString("Bad request")
|
|
}
|
|
username := newUser.Username
|
|
|
|
log.Info("Promoting user to admin:", username) // Debug print
|
|
|
|
// Promote the user to a site admin in the database
|
|
if err := db.GetDb(c).PromoteToAdmin(username); err != nil {
|
|
log.Info("Error promoting user to admin:", err) // Debug print
|
|
return c.Status(500).SendString(err.Error())
|
|
}
|
|
|
|
log.Info("User promoted to admin successfully:", username) // Debug print
|
|
|
|
// Return a success message
|
|
return c.SendStatus(fiber.StatusOK)
|
|
}
|