TTime/backend/internal/handlers/projects/ChangeProjectName.go

44 lines
1.2 KiB
Go
Raw Normal View History

2024-04-17 21:31:47 +02:00
package projects
import (
db "ttime/internal/database"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/log"
"github.com/golang-jwt/jwt/v5"
)
// ChangeProjectName is a handler that changes the name of a project
func ChangeProjectName(c *fiber.Ctx) error {
//check token and get username of current user
user := c.Locals("user").(*jwt.Token)
claims := user.Claims.(jwt.MapClaims)
username := claims["name"].(string)
// Extract the necessary parameters from the request
projectName := c.Params("projectName")
newProjectName := c.Query("newProjectName")
2024-04-17 22:04:23 +02:00
// Check if user is site admin
issiteadmin, err := db.GetDb(c).IsSiteAdmin(username)
2024-04-17 21:31:47 +02:00
if err != nil {
2024-04-17 22:04:23 +02:00
log.Warn("Error checking if siteadmin:", err)
2024-04-17 21:31:47 +02:00
return c.Status(500).SendString(err.Error())
2024-04-17 22:04:23 +02:00
} else if !issiteadmin {
log.Warn("User is not siteadmin")
return c.Status(401).SendString("User is not siteadmin")
2024-04-17 21:31:47 +02:00
}
2024-04-17 22:04:23 +02:00
2024-04-17 21:31:47 +02:00
// Perform the project name change
err = db.GetDb(c).ChangeProjectName(projectName, newProjectName)
if err != nil {
log.Warn("Error changing project name:", err)
return c.Status(500).SendString(err.Error())
}
// Return a success message
return c.Status(200).SendString("Project name changed successfully")
}