Skip to content

Commit

Permalink
Merge pull request #66 from CharisWorks/finalize
Browse files Browse the repository at this point in the history
最終アップデート
  • Loading branch information
WhatACotton authored Mar 17, 2024
2 parents 375b6f3 + cf746ed commit 1dcb9c1
Show file tree
Hide file tree
Showing 41 changed files with 726 additions and 223 deletions.
12 changes: 8 additions & 4 deletions handler/cart.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package handler

import (
"log"
"net/http"

"github.com/charisworks/charisworks-backend/internal/cart"
Expand All @@ -16,25 +17,28 @@ func (h *Handler) SetupRoutesForCart(firebaseApp validation.IFirebaseApp, cartRe
{
CartRouter.Use(userMiddleware(userRequests))
{
CartRouter.GET("/", func(ctx *gin.Context) {
CartRouter.GET("", func(ctx *gin.Context) {
userId := ctx.GetString("userId")
Cart, _ := cartRequests.Get(userId)
ctx.JSON(http.StatusOK, gin.H{"items": Cart})
})
CartRouter.POST("/", func(ctx *gin.Context) {
CartRouter.POST("", func(ctx *gin.Context) {
userId := ctx.GetString("userId")

cartRequestPayload, err := utils.GetPayloadFromBody(ctx, &cart.CartRequestPayload{})
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
}
err = cartRequests.Register(userId, *cartRequestPayload)
log.Print(cartRequestPayload)
err = cartRequests.Register(userId, cartRequestPayload)
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
}
ctx.JSON(http.StatusOK, "Item was successfully registered")
})
CartRouter.DELETE("/", func(ctx *gin.Context) {
CartRouter.DELETE("", func(ctx *gin.Context) {
userId := ctx.GetString("userId")
itemId, err := utils.GetQuery("itemId", ctx)
if err != nil {
Expand Down
3 changes: 1 addition & 2 deletions handler/items.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@ func (h *Handler) SetupRoutesForItem(itemRequests items.IRequests) {
ctx.JSON(200, Overview)
})

itemGroup.GET("/", func(ctx *gin.Context) {

itemGroup.GET("", func(ctx *gin.Context) {
PreviewList, totalElements, err := itemRequests.GetSearchPreviewList(ctx)
if err != nil {
utils.ReturnErrorResponse(ctx, err)
Expand Down
115 changes: 65 additions & 50 deletions handler/manufacturer.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package handler

import (
"log"
"net/http"

"github.com/charisworks/charisworks-backend/internal/manufacturer"
Expand All @@ -14,57 +15,71 @@ func (h *Handler) SetupRoutesForManufacturer(firebaseApp validation.IFirebaseApp
UserRouter := h.Router.Group("/api/products")
UserRouter.Use(firebaseMiddleware(firebaseApp))
{
UserRouter.Use((userMiddleware(userRequests)))
UserRouter.Use(manufacturerMiddleware())
UserRouter.Use(userMiddleware(userRequests))
{
UserRouter.POST("/", func(ctx *gin.Context) {
payload, err := utils.GetPayloadFromBody(ctx, &manufacturer.RegisterPayload{})
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
}
userId := ctx.GetString("userId")
err = manufacturerRequests.Register(*payload, userId, utils.GenerateRandomString())
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
}
ctx.JSON(http.StatusOK, "Item was successfuly registered")
})
UserRouter.PATCH("/:item_id", func(ctx *gin.Context) {
payload, err := utils.GetPayloadFromBody(ctx, &manufacturer.UpdatePayload{})
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
}
userId := ctx.GetString("userId")
itemId, err := utils.GetParams("item_id", ctx)
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
}
err = manufacturerRequests.Update(*payload, userId, *itemId)
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
}
ctx.JSON(http.StatusOK, "Item was successfuly updated")
})
UserRouter.DELETE("/:item_id", func(ctx *gin.Context) {
itemId, err := utils.GetParams("item_id", ctx)
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
}
userId := ctx.GetString(string(userId))
err = manufacturerRequests.Delete(*itemId, userId)
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
}
ctx.JSON(http.StatusOK, "Item was successfuly deleted")
})
}
UserRouter.Use(manufacturerMiddleware())
{
UserRouter.POST("/", func(ctx *gin.Context) {
payload, err := utils.GetPayloadFromBody(ctx, &manufacturer.RegisterPayload{})
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
}
userId := ctx.GetString("userId")
user, exist := ctx.Get(string(user))
if !exist {
err := &utils.InternalError{Message: utils.InternalErrorIncident}
utils.ReturnErrorResponse(ctx, err)
return
}
if user.(users.User).UserProfile.DisplayName == "" || user.(users.User).UserProfile.Description == "" {
err := &utils.InternalError{Message: utils.InternalErrorAccountIsNotSatisfied}
utils.ReturnErrorResponse(ctx, err)
return
}
log.Print(payload)
err = manufacturerRequests.Register(payload, userId, utils.GenerateRandomString())
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
}
ctx.JSON(http.StatusOK, "Item was successfuly registered")
})
UserRouter.PATCH("/:item_id", func(ctx *gin.Context) {
payload, err := utils.GetPayloadFromBody(ctx, &manufacturer.UpdatePayload{})
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
}
userId := ctx.GetString("userId")
itemId, err := utils.GetParams("item_id", ctx)
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
}
err = manufacturerRequests.Update(payload, userId, *itemId)
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
}
ctx.JSON(http.StatusOK, "Item was successfuly updated")
})
UserRouter.DELETE("/:item_id", func(ctx *gin.Context) {
itemId, err := utils.GetParams("item_id", ctx)
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
}
userId := ctx.GetString(string(userId))
err = manufacturerRequests.Delete(*itemId, userId)
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
}
ctx.JSON(http.StatusOK, "Item was successfuly deleted")
})
}

}
}
}
5 changes: 1 addition & 4 deletions handler/middleware.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func userMiddleware(UserRequests users.IRequests) gin.HandlerFunc {
userId := ctx.GetString(string(userId))
User, err := UserRequests.Get(userId)
if err != nil {
if err.Error() == string(utils.InternalErrorNotFound) {
if err.Error() == string(utils.InternalErrorNotFound) && User.UserId == "" {
log.Print("creating user for DB")
err := UserRequests.Create(userId)
if err != nil {
Expand All @@ -55,8 +55,6 @@ func userMiddleware(UserRequests users.IRequests) gin.HandlerFunc {
utils.AbortContextWithError(ctx, err)
return
}
utils.AbortContextWithError(ctx, err)
return
}

ctx.Set(string(user), User)
Expand Down Expand Up @@ -123,7 +121,6 @@ func webhookMiddleware() gin.HandlerFunc {
// Pass the request body and Stripe-Signature header to ConstructEvent, along with the webhook signing key
// You can find your endpoint's secret in your webhook settings
endpointSecret := os.Getenv("STRIPE_KEY")
log.Print(string(body), "ctx:", ctx.Request.Header)
event, err := webhook.ConstructEvent(body, ctx.Request.Header.Get("Stripe-Signature"), endpointSecret)
if err != nil {
fmt.Fprintf(os.Stderr, "Error verifying webhook signature: %v\n", err)
Expand Down
15 changes: 14 additions & 1 deletion handler/stripe.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,24 @@ func (h *Handler) SetupRoutesForStripe(firebaseApp validation.IFirebaseApp, User
stripe.Key = "sk_test_51Nj1urA3bJzqElthGP4F3QjdR0SKk77E4pGHrsBAQEHia6lasXyujFOKXDyrodAxaE6PH6u2kNCVSdC5dBIRh82u00XqHQIZjM"
StripeRouter := h.Router.Group("/api")
StripeRouter.Use(firebaseMiddleware(firebaseApp))
StripeRouter.Use(userMiddleware(UserRequests))
{
StripeRouter.GET("/buy", func(ctx *gin.Context) {
// レスポンスの処理
userId := ctx.GetString("userId")
email := ctx.GetString("UserEmail")
user, exist := ctx.Get(string(user))
if !exist {
err := &utils.InternalError{Message: utils.InternalErrorIncident}
utils.ReturnErrorResponse(ctx, err)
return
}
if user.(users.User).UserAddress.Address1 == "" {
err := &utils.InternalError{Message: utils.InternalErrorAddressIsNotRegistered}
utils.ReturnErrorResponse(ctx, err)
return
}

ClientSecret, _, err := transactionRequests.Purchase(userId, email)
if err != nil {
utils.ReturnErrorResponse(ctx, err)
Expand Down Expand Up @@ -68,7 +81,7 @@ func (h *Handler) SetupRoutesForStripe(firebaseApp validation.IFirebaseApp, User
ctx.JSON(utils.Code(utils.InternalMessage(err.Error())), gin.H{"message": err.Error()})
return
}
URL, err := stripeRequests.GetRegisterLink(email, *user.(*users.User))
URL, err := stripeRequests.GetRegisterLink(email, user.(users.User))
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
Expand Down
6 changes: 3 additions & 3 deletions handler/user.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ func (h *Handler) SetupRoutesForUser(firebaseApp validation.IFirebaseApp, UserRe
return
}
userId := ctx.GetString("userId")
err = UserRequests.ProfileUpdate(userId, *profile)
err = UserRequests.ProfileUpdate(userId, profile)
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
Expand All @@ -53,7 +53,7 @@ func (h *Handler) SetupRoutesForUser(firebaseApp validation.IFirebaseApp, UserRe
return
}
userId := ctx.GetString("userId")
err = UserRequests.AddressRegister(userId, *payload)
err = UserRequests.AddressRegister(userId, payload)
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
Expand All @@ -66,7 +66,7 @@ func (h *Handler) SetupRoutesForUser(firebaseApp validation.IFirebaseApp, UserRe
return
}
userId := ctx.GetString("userId")
err = UserRequests.AddressUpdate(userId, *payload)
err = UserRequests.AddressUpdate(userId, payload)
if err != nil {
utils.ReturnErrorResponse(ctx, err)
return
Expand Down
19 changes: 2 additions & 17 deletions handler/webhooks.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ func (h *Handler) SetupRoutesForWebhook(webhookRequests transaction.IWebhook, ap
{
UserRouter.POST("", func(ctx *gin.Context) {
event := ctx.MustGet(string(stripeEvent)).(stripe.Event)
// Handle the checkout.session.completed event
if event.Type == "checkout.session.completed" {

if event.Type == "payment_intent.succeeded" {
var sessions stripe.CheckoutSession
err := json.Unmarshal(event.Data.Raw, &sessions)
if err != nil {
Expand All @@ -39,21 +39,6 @@ func (h *Handler) SetupRoutesForWebhook(webhookRequests transaction.IWebhook, ap
admin.SendPurchasedEmail(transactionDetails, app)

}
if event.Type == "checkout.session.cancelled" {
var sessions stripe.CheckoutSession
json.Unmarshal(event.Data.Raw, &sessions)
log.Print(sessions.ID)

webhookRequests.PurchaseCanceled(sessions.ID)

}
if event.Type == "checkout.session.failed" {
var sessions stripe.CheckoutSession
json.Unmarshal(event.Data.Raw, &sessions)
log.Print(sessions.ID)
webhookRequests.PurchaseFail(sessions.ID)

}
})
}
}
8 changes: 6 additions & 2 deletions internal/admin/intercepter.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import (
"github.com/charisworks/charisworks-backend/validation"
grpc_auth "github.com/grpc-ecosystem/go-grpc-middleware/auth"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)

func AuthUnaryServerInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (interface{}, error) {
Expand All @@ -20,11 +22,13 @@ func AuthUnaryServerInterceptor(ctx context.Context, req interface{}, info *grpc
return nil, err
}
fApp := validation.FirebaseApp{App: app.App}
userId, _, _, err := fApp.Verify(ctx, idToken)
_, email, _, err := fApp.Verify(ctx, idToken)
if err != nil {
return nil, err
}
if userId != "cowatanabe26@gmail.com" {
if email != "cowatanabe26@gmail.com" {
log.Printf("request rejected: %v\n", email)
err := status.Errorf(codes.Unauthenticated, "Unauthorized")
return nil, err
}
log.Printf("idToken: %v\n", idToken)
Expand Down
10 changes: 5 additions & 5 deletions internal/admin/mail.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
)

func SendPurchasedEmail(transactionDetails transaction.TransactionDetails, firebaseApp validation.IFirebaseApp) {
data, err := os.ReadFile("../auth_address.json")
data, err := os.ReadFile("./auth_address.json")
if err != nil {
log.Fatalf("JSONファイルの読み込みに失敗しました:%v", err)
return
Expand Down Expand Up @@ -78,7 +78,7 @@ func SendPurchasedEmail(transactionDetails transaction.TransactionDetails, fireb
送料: %v円
合計金額: %v 円
購入日時: %v
`, 350, transactionDetails.TotalPrice+350, utils.ConvertToJST(transactionDetails.TransactionAt))
`, 400, transactionDetails.TotalPrice+400, utils.ConvertToJST(transactionDetails.TransactionAt))
body += fmt.Sprintf(`
--------------------------
Expand Down Expand Up @@ -158,7 +158,7 @@ CharisWorks
}

func SendShippedEmail(transactionDetails transaction.TransactionDetails) {
data, err := os.ReadFile("../auth_address.json")
data, err := os.ReadFile("./auth_address.json")
if err != nil {
log.Fatalf("JSONファイルの読み込みに失敗しました:%v", err)
return
Expand Down Expand Up @@ -253,7 +253,7 @@ CharisWorks
}

func SendPrivilegedEmail(userId string, firebaseApp validation.IFirebaseApp) {
data, err := os.ReadFile("../auth_address.json")
data, err := os.ReadFile("./auth_address.json")
if err != nil {
log.Fatalf("JSONファイルの読み込みに失敗しました:%v", err)
return
Expand Down Expand Up @@ -292,7 +292,7 @@ func SendPrivilegedEmail(userId string, firebaseApp validation.IFirebaseApp) {
}

func SendEmail(to string, subject string, body string) error {
data, err := os.ReadFile("../email_credentials.json")
data, err := os.ReadFile("./email_credentials.json")
if err != nil {
log.Fatalf("JSONファイルの読み込みに失敗しました:%v", err)
return err
Expand Down
Loading

0 comments on commit 1dcb9c1

Please sign in to comment.