Categorygithub.com/kodinggo/user-service-gb1
modulepackage
1.0.2
Repository: https://github.com/kodinggo/user-service-gb1.git
Documentation: pkg.go.dev

# README

user-service-gb1

User service kodinggo golang bootcamp 1

JWT Middleware gRPC Implementation

  1. Clone repo auth-service ini, dan pastikan berjalan dengan baik. req := &pb.ValidateTokenRequest{Token: token}

  2. Buat middleware sendiri pada setiap service. Hal ini agar setiap middleware dapat di custom pada setiap service. Kemudian didalamnya, call gRPC client ValidateToken()

        req := &pb.ValidateTokenRequest{Token: token} 
    	res, err := m.authClient.ValidateToken(ctx, req)
    	if err != nil || res == nil || !res.Valid {
    		logrus.Error(err)
    		return c.JSON(http.StatusUnauthorized, map[string]string{"error": "invalid or expired token"})
    	}
    
  3. Lalu gunakan pada echo middleware

        protected := e.Group("/products")
        protected.Use(JWTMiddleware)
    
  4. Buat helper untuk get user session. (Gunakan pada level handler/delivery)

        func GetUserSession(c echo.Context) *model.User {
            u := c.Get("user")
            if u == nil {
                return nil
            }
    
            user, ok := u.(*model.User)
            if !ok {
                return nil
            }
    
            return user
        }
    

    Implementasi

        userSession := helper.GetUserSession(c)
        if userSession == nil {
            return c.JSON(http.StatusUnauthorized, response{
                Status:  http.StatusUnauthorized,
                Message: "unauthorized",
            })
        }
    

Contoh lebih lanjut ada pada folder middleware-example.

# Packages

No description provided by the author
No description provided by the author
No description provided by the author