delete base user log data and movw mw to common pj

This commit is contained in:
Pavel 2024-06-07 17:44:09 +03:00
parent 0576d3d45f
commit 314186e921
8 changed files with 35 additions and 131 deletions

4
go.mod

@ -14,11 +14,11 @@ require (
github.com/stretchr/testify v1.8.4
github.com/twmb/franz-go v1.15.4
go.mongodb.org/mongo-driver v1.13.1
go.uber.org/zap v1.26.0
go.uber.org/zap v1.27.0
google.golang.org/genproto/googleapis/api v0.0.0-20240116215550-a9fa1716bcac
google.golang.org/grpc v1.60.1
google.golang.org/protobuf v1.32.0
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240202120244-c4ef330cfe5d
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240607142502-8257e6c4aa5a
)
require (

3
go.sum

@ -161,6 +161,7 @@ go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI=
go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo=
go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so=
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
@ -287,5 +288,7 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240202120244-c4ef330cfe5d h1:gbaDt35HMDqOK84WYmDIlXMI7rstUcRqNttaT6Kx1do=
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240202120244-c4ef330cfe5d/go.mod h1:lTmpjry+8evVkXWbEC+WMOELcFkRD1lFMc7J09mOndM=
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240607142502-8257e6c4aa5a h1:dGW8ErUVdwGJBq6uc5AHYn6Yt10CDNkMIpV+yrDDTLs=
penahub.gitlab.yandexcloud.net/backend/penahub_common v0.0.0-20240607142502-8257e6c4aa5a/go.mod h1:+bPxq2wfW5S1gd+83vZYmHm33AE7nEBfznWS8AM1TKE=
penahub.gitlab.yandexcloud.net/external/trashlog.git v0.1.2-0.20240523172059-9bbe8a9faa31 h1:WlRVJnzU0sti+qBq/JTCgFPU0RoxIqGHu7hzDirxE2k=
penahub.gitlab.yandexcloud.net/external/trashlog.git v0.1.2-0.20240523172059-9bbe8a9faa31/go.mod h1:3ml0dAGT8U8RhpevKBfRgG6yKZum8EI2uJxAb2WCIy4=

@ -9,7 +9,7 @@ import (
"fmt"
"github.com/gofiber/fiber/v2"
"go.uber.org/zap"
"strings"
"penahub.gitlab.yandexcloud.net/backend/penahub_common/log_mw"
)
type Deps struct {
@ -31,7 +31,7 @@ func NewPromoCodeController(deps Deps) *PromoCodeController {
func (p *PromoCodeController) CreatePromoCode(c *fiber.Ctx) error {
userID := middleware.ExtractUserID(c)
hlogger := middleware.ExtractLogger(c)
hlogger := log_mw.ExtractLogger(c)
var req models.PromoCode
if err := c.BodyParser(&req); err != nil {
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "Invalid request payload"})
@ -79,10 +79,6 @@ func (p *PromoCodeController) CreatePromoCode(c *fiber.Ctx) error {
}
hlogger.Emit(models.InfoPromocodeCreated{
CtxUserIP: c.IP(),
CtxUserPort: c.Port(),
KeyDomain: strings.Join(c.Subdomains(), "/"),
KeyPath: c.Path(),
CtxID: createdPromoCode.ID.String(),
CtxUserID: userID,
KeyType: keyType,
@ -98,7 +94,7 @@ func (p *PromoCodeController) CreatePromoCode(c *fiber.Ctx) error {
func (p *PromoCodeController) EditPromoCode(c *fiber.Ctx) error {
userID := middleware.ExtractUserID(c)
hlogger := middleware.ExtractLogger(c)
hlogger := log_mw.ExtractLogger(c)
var req models.ReqEditPromoCode
if err := c.BodyParser(&req); err != nil {
@ -147,10 +143,6 @@ func (p *PromoCodeController) EditPromoCode(c *fiber.Ctx) error {
}
hlogger.Emit(models.InfoPromocodeUpdated{
CtxUserIP: c.IP(),
CtxUserPort: c.Port(),
KeyDomain: strings.Join(c.Subdomains(), "/"),
KeyPath: c.Path(),
CtxID: editedPromoCode.ID.String(),
CtxUserID: userID,
KeyType: keyType,
@ -184,7 +176,7 @@ func (p *PromoCodeController) GetList(c *fiber.Ctx) error {
func (p *PromoCodeController) Activate(c *fiber.Ctx) error {
userID := middleware.ExtractUserID(c)
hlogger := middleware.ExtractLogger(c)
hlogger := log_mw.ExtractLogger(c)
fmt.Println("SKER1", userID)
if userID == "" {
return c.Status(fiber.StatusUnauthorized).JSON(fiber.Map{"error": "failed to get jwt payload"})
@ -212,20 +204,13 @@ func (p *PromoCodeController) Activate(c *fiber.Ctx) error {
return c.Status(fiber.StatusForbidden).JSON(fiber.Map{"error": "PromoCode already activated"})
case errors.Is(err, repository.ErrPromoCodeExpired):
hlogger.Emit(models.InfoPromocodeDeadlined{
CtxUserIP: c.IP(),
CtxUserPort: c.Port(),
KeyDomain: strings.Join(c.Subdomains(), "/"),
KeyPath: c.Path(),
CtxID: promocode.ID.String(),
CtxID: promocode.ID.String(),
})
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": err.Error()})
case errors.Is(err, repository.ErrPromoCodeExhausted):
hlogger.Emit(models.InfoPromocodeExhausted{
CtxUserIP: c.IP(),
CtxUserPort: c.Port(),
KeyDomain: strings.Join(c.Subdomains(), "/"),
KeyPath: c.Path(),
CtxID: promocode.ID.String(),
CtxID: promocode.ID.String(),
})
return c.Status(fiber.StatusBadRequest).JSON(fiber.Map{"error": "PromoCode exhausted"})
default:
@ -235,20 +220,12 @@ func (p *PromoCodeController) Activate(c *fiber.Ctx) error {
if req.Codeword != "" {
hlogger.Emit(models.InfoPromocodeActivated{
CtxUserIP: c.IP(),
CtxUserPort: c.Port(),
KeyDomain: strings.Join(c.Subdomains(), "/"),
KeyPath: c.Path(),
CtxID: promocode.ID.String(),
CtxUserID: userID,
CtxCode: req.Codeword,
CtxID: promocode.ID.String(),
CtxUserID: userID,
CtxCode: req.Codeword,
})
} else if req.FastLink != "" {
hlogger.Emit(models.InfoFastlinkActivated{
CtxUserIP: c.IP(),
CtxUserPort: c.Port(),
KeyDomain: strings.Join(c.Subdomains(), "/"),
KeyPath: c.Path(),
CtxID: promocode.ID.String(),
CtxUserID: userID,
CtxPromocodeID: req.FastLink,
@ -260,7 +237,7 @@ func (p *PromoCodeController) Activate(c *fiber.Ctx) error {
func (p *PromoCodeController) Delete(c *fiber.Ctx) error {
userID := middleware.ExtractUserID(c)
hlogger := middleware.ExtractLogger(c)
hlogger := log_mw.ExtractLogger(c)
promoCodeID := c.Params("promocodeID")
if promoCodeID == "" {
@ -279,12 +256,8 @@ func (p *PromoCodeController) Delete(c *fiber.Ctx) error {
}
hlogger.Emit(models.InfoPromocodeDeleted{
CtxUserIP: c.IP(),
CtxUserPort: c.Port(),
KeyDomain: strings.Join(c.Subdomains(), "/"),
KeyPath: c.Path(),
CtxID: promoCodeID,
CtxUserID: userID,
CtxID: promoCodeID,
CtxUserID: userID,
})
return c.SendStatus(fiber.StatusOK)
@ -292,7 +265,7 @@ func (p *PromoCodeController) Delete(c *fiber.Ctx) error {
func (p *PromoCodeController) CreateFastLink(c *fiber.Ctx) error {
userID := middleware.ExtractUserID(c)
hlogger := middleware.ExtractLogger(c)
hlogger := log_mw.ExtractLogger(c)
var req struct {
PromoCodeID string `json:"id"`
@ -317,10 +290,6 @@ func (p *PromoCodeController) CreateFastLink(c *fiber.Ctx) error {
}
hlogger.Emit(models.InfoFastlinkCreated{
CtxUserIP: c.IP(),
CtxUserPort: c.Port(),
KeyDomain: strings.Join(c.Subdomains(), "/"),
KeyPath: c.Path(),
CtxID: fastLink,
CtxPromocodeID: req.PromoCodeID,
CtxUserID: userID,

@ -4,13 +4,12 @@ import (
"codeword/internal/models"
"codeword/internal/repository"
"codeword/internal/services"
"codeword/internal/utils/middleware"
"encoding/base64"
"errors"
"fmt"
"github.com/gofiber/fiber/v2"
"go.uber.org/zap"
"strings"
"penahub.gitlab.yandexcloud.net/backend/penahub_common/log_mw"
"time"
)
@ -56,7 +55,7 @@ func (r *RecoveryController) HandlePingDB(c *fiber.Ctx) error {
}
func (r *RecoveryController) HandleRecoveryRequest(c *fiber.Ctx) error {
hlogger := middleware.ExtractLogger(c)
hlogger := log_mw.ExtractLogger(c)
var req models.RecoveryRequest
if err := c.BodyParser(&req); err != nil {
r.logger.Error("Failed to parse recovery request", zap.Error(err))
@ -115,10 +114,6 @@ func (r *RecoveryController) HandleRecoveryRequest(c *fiber.Ctx) error {
}
hlogger.Emit(models.InfoPasswordRestorationRequested{
CtxUserIP: c.IP(),
CtxUserPort: c.Port(),
KeyDomain: strings.Join(c.Subdomains(), "/"),
KeyPath: c.Path(),
CtxID: id,
CtxUserID: user.ID.Hex(),
CtxReturnURL: r.recoveryURL + signWithID,
@ -129,7 +124,7 @@ func (r *RecoveryController) HandleRecoveryRequest(c *fiber.Ctx) error {
}
func (r *RecoveryController) HandleRecoveryLink(c *fiber.Ctx) error {
hlogger := middleware.ExtractLogger(c)
hlogger := log_mw.ExtractLogger(c)
sign := c.Params("sign")
record, err := r.service.GetRecoveryRecord(c.Context(), sign)
@ -167,12 +162,8 @@ func (r *RecoveryController) HandleRecoveryLink(c *fiber.Ctx) error {
})
hlogger.Emit(models.InfoPasswordRestored{
CtxUserIP: c.IP(),
CtxUserPort: c.Port(),
KeyDomain: strings.Join(c.Subdomains(), "/"),
KeyPath: c.Path(),
CtxID: record.ID.String(),
CtxUserID: record.UserID,
CtxID: record.ID.String(),
CtxUserID: record.UserID,
})
return c.Redirect(record.SignUrl + "?auth=" + tokens["accessToken"])

@ -12,4 +12,3 @@ type RefreshResponse struct {
const AuthJWTDecodedUserIDKey = "userID"
const AuthJWTDecodedAccessTokenKey = "access-token"
const LoggerKey = "logger"

@ -19,10 +19,6 @@ type AllFields struct {
}
type InfoPromocodeCreated struct {
CtxUserIP string
CtxUserPort string
KeyDomain string
KeyPath string
CtxID string //айдишник созданного промокода
CtxUserID string //айдишник юзера из токена
KeyType string //привилегия или скидка. или и то и другое, смотря что заполнено
@ -33,27 +29,15 @@ type InfoPromocodeCreated struct {
CtxCode string
}
type InfoFastlinkCreated struct {
CtxUserIP string
CtxUserPort string
KeyDomain string
KeyPath string
CtxID string //айдишник созданного промокода
CtxPromocodeID string //айдишник созданного промокода
CtxUserID string //айдишник юзера из токена
}
type InfoPromocodeDeleted struct {
CtxUserIP string
CtxUserPort string
KeyDomain string
KeyPath string
CtxID string //айдишник созданного промокода
CtxUserID string //айдишник юзера из токена
CtxID string //айдишник созданного промокода
CtxUserID string //айдишник юзера из токена
}
type InfoPromocodeUpdated struct {
CtxUserIP string
CtxUserPort string
KeyDomain string
KeyPath string
CtxID string //айдишник промокода
CtxUserID string //айдишник юзера из токена
KeyType string //привилегия или скидка. или и то и другое, смотря что заполнено
@ -64,52 +48,28 @@ type InfoPromocodeUpdated struct {
CtxCode string
}
type InfoPromocodeActivated struct {
CtxUserIP string
CtxUserPort string
KeyDomain string
KeyPath string
CtxID string //айдишник промокода
CtxUserID string //айдишник юзера из токена
CtxCode string
CtxID string //айдишник промокода
CtxUserID string //айдишник юзера из токена
CtxCode string
}
type InfoFastlinkActivated struct {
CtxUserIP string
CtxUserPort string
KeyDomain string
KeyPath string
CtxID string //айдишник промокода
CtxUserID string //айдишник юзера из токена
CtxPromocodeID string //айдишник созданного промокода
}
type InfoPromocodeExhausted struct {
CtxUserIP string
CtxUserPort string
KeyDomain string
KeyPath string
CtxID string //айдишник промокода
CtxID string //айдишник промокода
}
type InfoPromocodeDeadlined struct {
CtxUserIP string
CtxUserPort string
KeyDomain string
KeyPath string
CtxID string //айдишник промокода
CtxID string //айдишник промокода
}
type InfoPasswordRestorationRequested struct {
CtxUserIP string
CtxUserPort string
KeyDomain string
KeyPath string
CtxID string //айдишник промокода
CtxUserID string //айдишник юзера из токена
CtxReturnURL string // ссылка на восстановление пароля
CtxEmail string
}
type InfoPasswordRestored struct {
CtxUserIP string
CtxUserPort string
KeyDomain string
KeyPath string
CtxID string //айдишник промокода
CtxUserID string //айдишник юзера из токена
CtxID string //айдишник промокода
CtxUserID string //айдишник юзера из токена
}

@ -7,6 +7,7 @@ import (
"github.com/gofiber/fiber/v2"
"github.com/themakers/hlog"
"go.uber.org/zap"
"penahub.gitlab.yandexcloud.net/backend/penahub_common/log_mw"
)
type ServerConfig struct {
@ -24,7 +25,7 @@ type Server struct {
func NewServer(config ServerConfig) *Server {
app := fiber.New()
app.Use(middleware.ContextLogger(config.Hlogger))
app.Use(log_mw.ContextLogger(config.Hlogger))
app.Use("/promocode", middleware.NewAuthenticator(config.JWT))
s := &Server{
Logger: config.Logger,

@ -1,19 +0,0 @@
package middleware
import (
"codeword/internal/models"
"github.com/gofiber/fiber/v2"
"github.com/themakers/hlog"
)
func ContextLogger(logger hlog.Logger) fiber.Handler {
return func(c *fiber.Ctx) error {
c.Locals(models.LoggerKey, logger)
return c.Next()
}
}
func ExtractLogger(c *fiber.Ctx) hlog.Logger {
logger := c.Context().UserValue(models.LoggerKey).(hlog.Logger)
return logger
}