PromoteToPm handler
This commit is contained in:
parent
9cca8edd9d
commit
61a2d1ce0c
4 changed files with 97 additions and 588 deletions
51
backend/internal/handlers/projects/PromoteToPm.go
Normal file
51
backend/internal/handlers/projects/PromoteToPm.go
Normal file
|
@ -0,0 +1,51 @@
|
|||
package projects
|
||||
|
||||
import (
|
||||
db "ttime/internal/database"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/gofiber/fiber/v2/log"
|
||||
"github.com/golang-jwt/jwt/v5"
|
||||
)
|
||||
|
||||
// @Summary Promote to project manager
|
||||
// @Description Promote a user to project manager
|
||||
// @Tags Auth
|
||||
// @Security JWT
|
||||
// @Accept plain
|
||||
// @Produce plain
|
||||
// @Param projectName path string true "Project name"
|
||||
// @Param userName query string true "User name"
|
||||
// @Failure 500 {string} string "Internal server error"
|
||||
// @Failure 403 {string} string "Forbidden"
|
||||
// @Router /promote/{projectName} [put]
|
||||
//
|
||||
// Login logs in a user and returns a JWT token
|
||||
// Promote to project manager
|
||||
func PromoteToPm(c *fiber.Ctx) error {
|
||||
user := c.Locals("user").(*jwt.Token)
|
||||
claims := user.Claims.(jwt.MapClaims)
|
||||
pm_name := claims["name"].(string)
|
||||
|
||||
project := c.Params("projectName")
|
||||
new_pm_name := c.Query("userName")
|
||||
|
||||
// Check if the user is a project manager
|
||||
isPM, err := db.GetDb(c).IsProjectManager(pm_name, project)
|
||||
if err != nil {
|
||||
log.Info("Error checking if user is project manager:", err)
|
||||
return c.Status(500).SendString(err.Error())
|
||||
}
|
||||
|
||||
if !isPM {
|
||||
log.Info("User: ", pm_name, " is not a project manager in project: ", project)
|
||||
return c.Status(403).SendString("User is not a project manager")
|
||||
}
|
||||
|
||||
// Add the user to the project with the specified role
|
||||
err = db.GetDb(c).ChangeUserRole(new_pm_name, project, "project_manager")
|
||||
|
||||
// Return success message
|
||||
log.Info("User : ", new_pm_name, " promoted to project manager in project: ", project)
|
||||
return c.SendStatus(fiber.StatusOK)
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue