42 lines
1.2 KiB
Go
42 lines
1.2 KiB
Go
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")
|
|
|
|
// Check if user is project manager
|
|
ismanager, err := db.GetDb(c).IsProjectManager(username, projectName)
|
|
if err != nil {
|
|
log.Warn("Error checking if projectmanager:", err)
|
|
return c.Status(500).SendString(err.Error())
|
|
} else if !ismanager {
|
|
log.Warn("User is not projectmanager")
|
|
return c.Status(401).SendString("User is not projectmanager")
|
|
}
|
|
|
|
// 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")
|
|
}
|