diff --git a/go-backend/internal/controllers/car_controller.go b/go-backend/internal/controllers/car_controller.go new file mode 100644 index 0000000..5e01b36 --- /dev/null +++ b/go-backend/internal/controllers/car_controller.go @@ -0,0 +1,118 @@ +package controllers + +import ( + "GoMembership/internal/constants" + "GoMembership/internal/models" + "GoMembership/internal/services" + "GoMembership/internal/utils" + "GoMembership/pkg/errors" + "GoMembership/pkg/logger" + "fmt" + "net/http" + + "github.com/gin-gonic/gin" +) + +type CarController struct { + S services.CarServiceInterface + UserService services.UserServiceInterface +} + +func (cr *CarController) Create(c *gin.Context) { + requestUser, err := cr.UserService.FromContext(c) + if err != nil { + utils.RespondWithError(c, err, "Error extracting user from context in Create car handler", http.StatusBadRequest, errors.Responses.Fields.User, errors.Responses.Keys.NoAuthToken) + return + } + if !requestUser.HasPrivilege(constants.Priviliges.Create) { + utils.RespondWithError(c, errors.ErrNotAuthorized, fmt.Sprintf("Not allowed to create a car. RoleID(%v)