updating rest-api
This commit is contained in:
@@ -42,8 +42,8 @@ func createEvent(context *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
event.ID = 1
|
||||
event.UserID = 1
|
||||
userId := context.GetInt64("userId")
|
||||
event.UserID = userId
|
||||
|
||||
err = event.Save()
|
||||
|
||||
@@ -61,13 +61,19 @@ func updateEvent(context *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
_, err = models.GetEventByID(eventId)
|
||||
userId := context.GetInt64("userId")
|
||||
event, err := models.GetEventByID(eventId)
|
||||
|
||||
if err != nil {
|
||||
context.JSON(http.StatusInternalServerError, gin.H{"message": "Could not fetch the event."})
|
||||
return
|
||||
}
|
||||
|
||||
if event.UserID != userId {
|
||||
context.JSON(http.StatusUnauthorized, gin.H{"message": "Not authorized to update event"})
|
||||
return
|
||||
}
|
||||
|
||||
var updatedEvent models.Event
|
||||
err = context.ShouldBindJSON(&updatedEvent)
|
||||
|
||||
@@ -92,6 +98,7 @@ func deleteEvent(context *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
userId := context.GetInt64("userId")
|
||||
event, err := models.GetEventByID(eventId)
|
||||
|
||||
if err != nil {
|
||||
@@ -99,6 +106,11 @@ func deleteEvent(context *gin.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
if event.UserID != userId {
|
||||
context.JSON(http.StatusUnauthorized, gin.H{"message": "Not authorized to delete event"})
|
||||
return
|
||||
}
|
||||
|
||||
err = event.Delete()
|
||||
|
||||
if err != nil {
|
||||
|
||||
51
rest-api/routes/register.go
Normal file
51
rest-api/routes/register.go
Normal file
@@ -0,0 +1,51 @@
|
||||
package routes
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"example.com/rest-api/models"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func registerForEvent(context *gin.Context) {
|
||||
userId := context.GetInt64("userId")
|
||||
eventId, err := strconv.ParseInt(context.Param("id"), 10, 64)
|
||||
if err != nil {
|
||||
context.JSON(http.StatusBadRequest, gin.H{"message": "Could not parse event id."})
|
||||
return
|
||||
}
|
||||
|
||||
event, err := models.GetEventByID(eventId)
|
||||
|
||||
if err != nil {
|
||||
context.JSON(http.StatusInternalServerError, gin.H{"message": "Could not fetch event."})
|
||||
return
|
||||
}
|
||||
|
||||
err = event.Register(userId)
|
||||
|
||||
if err != nil {
|
||||
context.JSON(http.StatusInternalServerError, gin.H{"message": "Could not register user for event"})
|
||||
return
|
||||
}
|
||||
|
||||
context.JSON(http.StatusCreated, gin.H{"message": "Registered!"})
|
||||
}
|
||||
|
||||
func cancelRegistration(context *gin.Context) {
|
||||
userId := context.GetInt64("userId")
|
||||
eventId, err := strconv.ParseInt(context.Param("id"), 10, 64)
|
||||
|
||||
var event models.Event
|
||||
event.ID = eventId
|
||||
|
||||
err = event.CancelRegistration(userId)
|
||||
|
||||
if err != nil {
|
||||
context.JSON(http.StatusInternalServerError, gin.H{"message": "Could not cancel registration"})
|
||||
return
|
||||
}
|
||||
|
||||
context.JSON(http.StatusOK, gin.H{"message": "Cancelled!"})
|
||||
}
|
||||
@@ -1,12 +1,22 @@
|
||||
package routes
|
||||
|
||||
import "github.com/gin-gonic/gin"
|
||||
import (
|
||||
"example.com/rest-api/middlewares"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
func RegisterRoutes(server *gin.Engine) {
|
||||
server.GET("/events", getEvents)
|
||||
server.GET("/events/:id", getEvent)
|
||||
server.POST("/events", createEvent)
|
||||
server.PUT("/events/:id", updateEvent)
|
||||
server.DELETE("/events/:id", deleteEvent)
|
||||
|
||||
authenticated := server.Group("/")
|
||||
authenticated.Use(middlewares.Authenticate)
|
||||
authenticated.POST("/events", createEvent)
|
||||
authenticated.PUT("/events/:id", updateEvent)
|
||||
authenticated.DELETE("/events/:id", deleteEvent)
|
||||
authenticated.POST("/events/:id/register", registerForEvent)
|
||||
authenticated.DELETE("/events/:id/register", cancelRegistration)
|
||||
|
||||
server.POST("/signup", signup)
|
||||
server.POST("/login", login)
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"net/http"
|
||||
|
||||
"example.com/rest-api/models"
|
||||
"example.com/rest-api/utils"
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
@@ -26,3 +27,29 @@ func signup(context *gin.Context) {
|
||||
|
||||
context.JSON(http.StatusCreated, gin.H{"message": "User created successfully"})
|
||||
}
|
||||
|
||||
func login(context *gin.Context) {
|
||||
var user models.User
|
||||
|
||||
err := context.ShouldBindJSON(&user)
|
||||
|
||||
if err != nil {
|
||||
context.JSON(http.StatusBadRequest, gin.H{"message": "Could not parse request data."})
|
||||
return
|
||||
}
|
||||
|
||||
err = user.ValidateCredentials()
|
||||
|
||||
if err != nil {
|
||||
context.JSON(http.StatusUnauthorized, gin.H{"message": "Could not authenticate user."})
|
||||
}
|
||||
|
||||
token, err := utils.GenerateToken(user.Email, user.ID)
|
||||
|
||||
if err != nil {
|
||||
context.JSON(http.StatusInternalServerError, gin.H{"message": "Could not authenticate user."})
|
||||
return
|
||||
}
|
||||
|
||||
context.JSON(http.StatusOK, gin.H{"message": "Login successful!", "token": token})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user