Browse Source

feat: Adjusting directory structure

chris 2 years ago
parent
commit
9f631edbfb

+ 2 - 2
cmd/server/wire.go

@@ -6,11 +6,11 @@ package main
 import (
 	"github.com/gin-gonic/gin"
 	"github.com/go-nunu/nunu-layout-advanced/internal/handler"
-	"github.com/go-nunu/nunu-layout-advanced/internal/middleware"
 	"github.com/go-nunu/nunu-layout-advanced/internal/repository"
 	"github.com/go-nunu/nunu-layout-advanced/internal/server"
 	"github.com/go-nunu/nunu-layout-advanced/internal/service"
 	"github.com/go-nunu/nunu-layout-advanced/pkg/helper/sid"
+	"github.com/go-nunu/nunu-layout-advanced/pkg/jwt"
 	"github.com/go-nunu/nunu-layout-advanced/pkg/log"
 	"github.com/google/wire"
 	"github.com/spf13/viper"
@@ -40,6 +40,6 @@ func newApp(*viper.Viper, *log.Logger) (*gin.Engine, func(), error) {
 		HandlerSet,
 		server.NewServerHTTP,
 		sid.NewSid,
-		middleware.NewJwt,
+		jwt.NewJwt,
 	))
 }

+ 4 - 4
cmd/server/wire_gen.go

@@ -9,11 +9,11 @@ package main
 import (
 	"github.com/gin-gonic/gin"
 	"github.com/go-nunu/nunu-layout-advanced/internal/handler"
-	"github.com/go-nunu/nunu-layout-advanced/internal/middleware"
 	"github.com/go-nunu/nunu-layout-advanced/internal/repository"
 	"github.com/go-nunu/nunu-layout-advanced/internal/server"
 	"github.com/go-nunu/nunu-layout-advanced/internal/service"
 	"github.com/go-nunu/nunu-layout-advanced/pkg/helper/sid"
+	"github.com/go-nunu/nunu-layout-advanced/pkg/jwt"
 	"github.com/go-nunu/nunu-layout-advanced/pkg/log"
 	"github.com/google/wire"
 	"github.com/spf13/viper"
@@ -22,17 +22,17 @@ import (
 // Injectors from wire.go:
 
 func newApp(viperViper *viper.Viper, logger *log.Logger) (*gin.Engine, func(), error) {
-	jwt := middleware.NewJwt(viperViper)
+	jwtJWT := jwt.NewJwt(viperViper)
 	handlerHandler := handler.NewHandler(logger)
 	sidSid := sid.NewSid()
-	serviceService := service.NewService(logger, sidSid, jwt)
+	serviceService := service.NewService(logger, sidSid, jwtJWT)
 	db := repository.NewDB(viperViper)
 	client := repository.NewRedis(viperViper)
 	repositoryRepository := repository.NewRepository(db, client, logger)
 	userRepository := repository.NewUserRepository(repositoryRepository)
 	userService := service.NewUserService(serviceService, userRepository)
 	userHandler := handler.NewUserHandler(handlerHandler, userService)
-	engine := server.NewServerHTTP(logger, jwt, userHandler)
+	engine := server.NewServerHTTP(logger, jwtJWT, userHandler)
 	return engine, func() {
 	}, nil
 }

+ 2 - 2
internal/handler/handler.go

@@ -2,7 +2,7 @@ package handler
 
 import (
 	"github.com/gin-gonic/gin"
-	"github.com/go-nunu/nunu-layout-advanced/internal/middleware"
+	"github.com/go-nunu/nunu-layout-advanced/pkg/jwt"
 	"github.com/go-nunu/nunu-layout-advanced/pkg/log"
 )
 
@@ -20,5 +20,5 @@ func GetUserIdFromCtx(ctx *gin.Context) string {
 	if !exists {
 		return ""
 	}
-	return v.(*middleware.MyCustomClaims).UserId
+	return v.(*jwt.MyCustomClaims).UserId
 }

+ 1 - 1
internal/handler/user.go

@@ -2,7 +2,7 @@ package handler
 
 import (
 	"github.com/gin-gonic/gin"
-	"github.com/go-nunu/nunu-layout-advanced/internal/request"
+	"github.com/go-nunu/nunu-layout-advanced/internal/pkg/request"
 	"github.com/go-nunu/nunu-layout-advanced/internal/service"
 	"github.com/go-nunu/nunu-layout-advanced/pkg/helper/resp"
 	"github.com/pkg/errors"

+ 0 - 0
internal/middleware/cors.go → internal/pkg/middleware/cors.go


+ 5 - 58
internal/middleware/jwt.go → internal/pkg/middleware/jwt.go

@@ -1,68 +1,15 @@
 package middleware
 
 import (
-	"net/http"
-	"regexp"
-	"time"
-
 	"github.com/gin-gonic/gin"
 	"github.com/go-nunu/nunu-layout-advanced/pkg/helper/resp"
+	"github.com/go-nunu/nunu-layout-advanced/pkg/jwt"
 	"github.com/go-nunu/nunu-layout-advanced/pkg/log"
-	"github.com/golang-jwt/jwt/v5"
-	"github.com/spf13/viper"
 	"go.uber.org/zap"
+	"net/http"
 )
 
-type JWT struct {
-	key []byte
-}
-
-type MyCustomClaims struct {
-	UserId string
-	jwt.RegisteredClaims
-}
-
-func NewJwt(conf *viper.Viper) *JWT {
-	return &JWT{key: []byte(conf.GetString("security.jwt.key"))}
-}
-
-func (j *JWT) GenToken(userId string, expiresAt time.Time) (string, error) {
-	token := jwt.NewWithClaims(jwt.SigningMethodHS256, MyCustomClaims{
-		UserId: userId,
-		RegisteredClaims: jwt.RegisteredClaims{
-			ExpiresAt: jwt.NewNumericDate(expiresAt),
-			IssuedAt:  jwt.NewNumericDate(time.Now()),
-			NotBefore: jwt.NewNumericDate(time.Now()),
-			Issuer:    "",
-			Subject:   "",
-			ID:        "",
-			Audience:  []string{},
-		},
-	})
-
-	// Sign and get the complete encoded token as a string using the key
-	tokenString, err := token.SignedString(j.key)
-	if err != nil {
-		return "", err
-	}
-	return tokenString, nil
-}
-
-func (j *JWT) ParseToken(tokenString string) (*MyCustomClaims, error) {
-	re := regexp.MustCompile(`(?i)Bearer `)
-	tokenString = re.ReplaceAllString(tokenString, "")
-	token, err := jwt.ParseWithClaims(tokenString, &MyCustomClaims{}, func(token *jwt.Token) (interface{}, error) {
-		return j.key, nil
-	})
-
-	if claims, ok := token.Claims.(*MyCustomClaims); ok && token.Valid {
-		return claims, nil
-	} else {
-		return nil, err
-	}
-}
-
-func StrictAuth(j *JWT, logger *log.Logger) gin.HandlerFunc {
+func StrictAuth(j *jwt.JWT, logger *log.Logger) gin.HandlerFunc {
 	return func(ctx *gin.Context) {
 		tokenString := ctx.Request.Header.Get("Authorization")
 		if tokenString == "" {
@@ -92,7 +39,7 @@ func StrictAuth(j *JWT, logger *log.Logger) gin.HandlerFunc {
 	}
 }
 
-func NoStrictAuth(j *JWT, logger *log.Logger) gin.HandlerFunc {
+func NoStrictAuth(j *jwt.JWT, logger *log.Logger) gin.HandlerFunc {
 	return func(ctx *gin.Context) {
 		tokenString := ctx.Request.Header.Get("Authorization")
 		if tokenString == "" {
@@ -119,6 +66,6 @@ func NoStrictAuth(j *JWT, logger *log.Logger) gin.HandlerFunc {
 }
 
 func recoveryLoggerFunc(ctx *gin.Context, logger *log.Logger) {
-	userInfo := ctx.MustGet("claims").(*MyCustomClaims)
+	userInfo := ctx.MustGet("claims").(*jwt.MyCustomClaims)
 	logger.NewContext(ctx, zap.String("UserId", userInfo.UserId))
 }

+ 0 - 0
internal/middleware/log.go → internal/pkg/middleware/log.go


+ 0 - 0
internal/middleware/sign.go → internal/pkg/middleware/sign.go


+ 13 - 0
internal/pkg/proto/user.proto

@@ -0,0 +1,13 @@
+syntax = "proto3";
+package user;
+option go_package = "github.com/go-nunu/nunu-layout-advanced/internal/pkg/proto;proto";
+
+// protoc --go_out=paths=source_relative:. api/v1/chat.proto
+
+message ReqGetUserInfo{
+  string Uid = 1;
+}
+message RespGetUserInfo{
+  int32 Code = 1;
+  string Msg = 2;
+}

+ 0 - 0
internal/request/user.go → internal/pkg/request/user.go


+ 3 - 2
internal/server/http.go

@@ -3,14 +3,15 @@ package server
 import (
 	"github.com/gin-gonic/gin"
 	"github.com/go-nunu/nunu-layout-advanced/internal/handler"
-	"github.com/go-nunu/nunu-layout-advanced/internal/middleware"
+	"github.com/go-nunu/nunu-layout-advanced/internal/pkg/middleware"
 	"github.com/go-nunu/nunu-layout-advanced/pkg/helper/resp"
+	"github.com/go-nunu/nunu-layout-advanced/pkg/jwt"
 	"github.com/go-nunu/nunu-layout-advanced/pkg/log"
 )
 
 func NewServerHTTP(
 	logger *log.Logger,
-	jwt *middleware.JWT,
+	jwt *jwt.JWT,
 	userHandler handler.UserHandler,
 ) *gin.Engine {
 	gin.SetMode(gin.ReleaseMode)

+ 3 - 3
internal/service/service.go

@@ -1,18 +1,18 @@
 package service
 
 import (
-	"github.com/go-nunu/nunu-layout-advanced/internal/middleware"
 	"github.com/go-nunu/nunu-layout-advanced/pkg/helper/sid"
+	"github.com/go-nunu/nunu-layout-advanced/pkg/jwt"
 	"github.com/go-nunu/nunu-layout-advanced/pkg/log"
 )
 
 type Service struct {
 	logger *log.Logger
 	sid    *sid.Sid
-	jwt    *middleware.JWT
+	jwt    *jwt.JWT
 }
 
-func NewService(logger *log.Logger, sid *sid.Sid, jwt *middleware.JWT) *Service {
+func NewService(logger *log.Logger, sid *sid.Sid, jwt *jwt.JWT) *Service {
 	return &Service{
 		logger: logger,
 		sid:    sid,

+ 1 - 1
internal/service/user.go

@@ -3,8 +3,8 @@ package service
 import (
 	"context"
 	"github.com/go-nunu/nunu-layout-advanced/internal/model"
+	"github.com/go-nunu/nunu-layout-advanced/internal/pkg/request"
 	"github.com/go-nunu/nunu-layout-advanced/internal/repository"
-	"github.com/go-nunu/nunu-layout-advanced/internal/request"
 	"github.com/pkg/errors"
 	"golang.org/x/crypto/bcrypt"
 	"time"

+ 58 - 0
pkg/jwt/jwt.go

@@ -0,0 +1,58 @@
+package jwt
+
+import (
+	"regexp"
+	"time"
+
+	"github.com/golang-jwt/jwt/v5"
+	"github.com/spf13/viper"
+)
+
+type JWT struct {
+	key []byte
+}
+
+type MyCustomClaims struct {
+	UserId string
+	jwt.RegisteredClaims
+}
+
+func NewJwt(conf *viper.Viper) *JWT {
+	return &JWT{key: []byte(conf.GetString("security.jwt.key"))}
+}
+
+func (j *JWT) GenToken(userId string, expiresAt time.Time) (string, error) {
+	token := jwt.NewWithClaims(jwt.SigningMethodHS256, MyCustomClaims{
+		UserId: userId,
+		RegisteredClaims: jwt.RegisteredClaims{
+			ExpiresAt: jwt.NewNumericDate(expiresAt),
+			IssuedAt:  jwt.NewNumericDate(time.Now()),
+			NotBefore: jwt.NewNumericDate(time.Now()),
+			Issuer:    "",
+			Subject:   "",
+			ID:        "",
+			Audience:  []string{},
+		},
+	})
+
+	// Sign and get the complete encoded token as a string using the key
+	tokenString, err := token.SignedString(j.key)
+	if err != nil {
+		return "", err
+	}
+	return tokenString, nil
+}
+
+func (j *JWT) ParseToken(tokenString string) (*MyCustomClaims, error) {
+	re := regexp.MustCompile(`(?i)Bearer `)
+	tokenString = re.ReplaceAllString(tokenString, "")
+	token, err := jwt.ParseWithClaims(tokenString, &MyCustomClaims{}, func(token *jwt.Token) (interface{}, error) {
+		return j.key, nil
+	})
+
+	if claims, ok := token.Claims.(*MyCustomClaims); ok && token.Valid {
+		return claims, nil
+	} else {
+		return nil, err
+	}
+}

+ 1 - 1
test/mocks/service/user.go

@@ -9,7 +9,7 @@ import (
 	reflect "reflect"
 
 	model "github.com/go-nunu/nunu-layout-advanced/internal/model"
-	request "github.com/go-nunu/nunu-layout-advanced/internal/request"
+	request "github.com/go-nunu/nunu-layout-advanced/internal/pkg/request"
 	gomock "github.com/golang/mock/gomock"
 )
 

+ 5 - 4
test/server/handler/user_test.go

@@ -5,7 +5,9 @@ import (
 	"encoding/json"
 	"fmt"
 	"github.com/go-nunu/nunu-layout-advanced/internal/handler"
-	"github.com/go-nunu/nunu-layout-advanced/internal/request"
+	"github.com/go-nunu/nunu-layout-advanced/internal/pkg/middleware"
+	"github.com/go-nunu/nunu-layout-advanced/internal/pkg/request"
+	jwt2 "github.com/go-nunu/nunu-layout-advanced/pkg/jwt"
 	"github.com/go-nunu/nunu-layout-advanced/test/mocks/service"
 
 	"net/http"
@@ -14,7 +16,6 @@ import (
 	"testing"
 
 	"github.com/gin-gonic/gin"
-	"github.com/go-nunu/nunu-layout-advanced/internal/middleware"
 	"github.com/go-nunu/nunu-layout-advanced/internal/model"
 	"github.com/go-nunu/nunu-layout-advanced/pkg/config"
 	"github.com/go-nunu/nunu-layout-advanced/pkg/log"
@@ -29,7 +30,7 @@ var (
 )
 var logger *log.Logger
 var hdl *handler.Handler
-var jwt *middleware.JWT
+var jwt *jwt2.JWT
 var router *gin.Engine
 
 func TestMain(m *testing.M) {
@@ -43,7 +44,7 @@ func TestMain(m *testing.M) {
 	logger = log.NewLog(conf)
 	hdl = handler.NewHandler(logger)
 
-	jwt = middleware.NewJwt(conf)
+	jwt = jwt2.NewJwt(conf)
 	gin.SetMode(gin.TestMode)
 	router = gin.Default()
 	router.Use(

+ 3 - 3
test/server/service/user_test.go

@@ -4,12 +4,12 @@ import (
 	"context"
 	"errors"
 	"fmt"
-	"github.com/go-nunu/nunu-layout-advanced/internal/request"
+	"github.com/go-nunu/nunu-layout-advanced/internal/pkg/request"
+	"github.com/go-nunu/nunu-layout-advanced/pkg/jwt"
 	"github.com/go-nunu/nunu-layout-advanced/test/mocks/repository"
 	"os"
 	"testing"
 
-	"github.com/go-nunu/nunu-layout-advanced/internal/middleware"
 	"github.com/go-nunu/nunu-layout-advanced/internal/model"
 	"github.com/go-nunu/nunu-layout-advanced/internal/service"
 	"github.com/go-nunu/nunu-layout-advanced/pkg/config"
@@ -35,7 +35,7 @@ func TestMain(m *testing.M) {
 	conf := config.NewConfig()
 
 	logger := log.NewLog(conf)
-	jwt := middleware.NewJwt(conf)
+	jwt := jwt.NewJwt(conf)
 	sf := sid.NewSid()
 	srv = service.NewService(logger, sf, jwt)