I believe this can mark the tasks about fixing the deref issues with auth completed. Will test in production to find out!
135 lines
3.6 KiB
Go
135 lines
3.6 KiB
Go
package handlers
|
|
|
|
import (
|
|
"fmt"
|
|
"net/http"
|
|
"strconv"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
domain "github.com/haydenhargreaves/Potion/internal/domain/server"
|
|
)
|
|
|
|
func EngagementViewRecipe(ctx *gin.Context) {
|
|
deps := ctx.MustGet("deps").(*domain.InjectedDependencies)
|
|
recipeId, _ := strconv.Atoi(ctx.Param("id"))
|
|
|
|
// Ensure user is logged in with a valid account
|
|
user := deps.UserService.GetAuthenicatedUser(ctx)
|
|
if user == nil {
|
|
// Log (stale) user out
|
|
domain.SetCookie(ctx, "jwt_token", "", -1)
|
|
domain.SetCookie(ctx, "search-filters", "", -1)
|
|
}
|
|
|
|
if !domain.IsLoggedIn(ctx) || user == nil {
|
|
if _, err := deps.EngagementService.ViewRecipe(recipeId); err != nil {
|
|
ctx.JSON(http.StatusInternalServerError, gin.H{
|
|
"status": http.StatusInternalServerError,
|
|
"message": err.Error(),
|
|
})
|
|
} else {
|
|
ctx.Header("HX-Redirect", fmt.Sprintf(domain.WEB_RECIPE, recipeId))
|
|
ctx.Status(http.StatusOK)
|
|
}
|
|
return
|
|
}
|
|
|
|
// We caught nil already, we can assume the user exists
|
|
if _, err := deps.EngagementService.UserViewRecipe(user.Id, recipeId); err != nil {
|
|
ctx.JSON(http.StatusInternalServerError, gin.H{
|
|
"status": http.StatusInternalServerError,
|
|
"message": err.Error(),
|
|
})
|
|
} else {
|
|
ctx.Header("HX-Redirect", fmt.Sprintf(domain.WEB_RECIPE, recipeId))
|
|
ctx.Status(http.StatusOK)
|
|
}
|
|
}
|
|
|
|
func EngagementShareRecipe(ctx *gin.Context) {
|
|
deps := ctx.MustGet("deps").(*domain.InjectedDependencies)
|
|
recipeId, _ := strconv.Atoi(ctx.Param("id"))
|
|
|
|
// Ensure user is logged in with a valid account
|
|
user := deps.UserService.GetAuthenicatedUser(ctx)
|
|
if user == nil {
|
|
// Log (stale) user out
|
|
domain.SetCookie(ctx, "jwt_token", "", -1)
|
|
domain.SetCookie(ctx, "search-filters", "", -1)
|
|
}
|
|
|
|
if !domain.IsLoggedIn(ctx) || user == nil {
|
|
if _, err := deps.EngagementService.ShareRecipe(recipeId); err != nil {
|
|
ctx.JSON(http.StatusInternalServerError, gin.H{
|
|
"status": http.StatusInternalServerError,
|
|
"message": err.Error(),
|
|
})
|
|
} else {
|
|
ctx.Status(http.StatusNoContent)
|
|
}
|
|
return
|
|
}
|
|
|
|
if _, err := deps.EngagementService.UserShareRecipe(user.Id, recipeId); err != nil {
|
|
ctx.JSON(http.StatusInternalServerError, gin.H{
|
|
"status": http.StatusInternalServerError,
|
|
"message": err.Error(),
|
|
})
|
|
} else {
|
|
ctx.Status(http.StatusNoContent)
|
|
}
|
|
}
|
|
|
|
func EngagementFavoriteRecipe(ctx *gin.Context) {
|
|
deps := ctx.MustGet("deps").(*domain.InjectedDependencies)
|
|
|
|
// Ensure user is logged in with a valid account
|
|
user := deps.UserService.GetAuthenicatedUser(ctx)
|
|
if user == nil {
|
|
// Log (stale) user out
|
|
domain.SetCookie(ctx, "jwt_token", "", -1)
|
|
domain.SetCookie(ctx, "search-filters", "", -1)
|
|
}
|
|
|
|
if !domain.IsLoggedIn(ctx) || user == nil {
|
|
ctx.Header("HX-Redirect", domain.WEB_LOGIN)
|
|
ctx.Status(http.StatusOK)
|
|
return
|
|
}
|
|
|
|
id := ctx.Param("id")
|
|
recipeId, _ := strconv.Atoi(id)
|
|
|
|
if _, err := deps.EngagementService.UserFavoriteRecipe(user.Id, recipeId); err != nil {
|
|
ctx.JSON(http.StatusInternalServerError, gin.H{
|
|
"status": http.StatusInternalServerError,
|
|
"message": err.Error(),
|
|
})
|
|
} else {
|
|
ctx.Status(http.StatusNoContent)
|
|
}
|
|
}
|
|
|
|
func EngagementMakeRecipe(ctx *gin.Context) {
|
|
deps := ctx.MustGet("deps").(*domain.InjectedDependencies)
|
|
|
|
if !domain.IsLoggedIn(ctx) {
|
|
ctx.Header("HX-Redirect", domain.WEB_LOGIN)
|
|
ctx.Status(http.StatusOK)
|
|
return
|
|
}
|
|
|
|
id := ctx.Param("id")
|
|
recipeId, _ := strconv.Atoi(id)
|
|
userId := ctx.MustGet("userId").(int)
|
|
|
|
if _, err := deps.EngagementService.UserMakeRecipe(userId, recipeId); err != nil {
|
|
ctx.JSON(http.StatusInternalServerError, gin.H{
|
|
"status": http.StatusInternalServerError,
|
|
"message": err.Error(),
|
|
})
|
|
} else {
|
|
ctx.Status(http.StatusNoContent)
|
|
}
|
|
}
|