Skip to content

Commit

Permalink
feat: update jwt manager for auth service
Browse files Browse the repository at this point in the history
  • Loading branch information
kelein committed Nov 28, 2023
1 parent e631311 commit 3d509dc
Show file tree
Hide file tree
Showing 14 changed files with 424 additions and 9 deletions.
23 changes: 23 additions & 0 deletions devto-grpc/pkg/jwtool/manager.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package jwtool

import (
"fmt"
"time"

"github.com/dgrijalva/jwt-go"
Expand Down Expand Up @@ -35,6 +36,28 @@ func (m *Manager) Generate(user *model.User) (string, error) {
return token.SignedString([]byte(m.secretKey))
}

// Verify parse user claims from token
func (m *Manager) Verify(accessToken string) (*UserClaims, error) {
keyFunc := func(token *jwt.Token) (any, error) {
_, ok := token.Method.(*jwt.SigningMethodHMAC)
if !ok {
return nil, fmt.Errorf("unexpected token signed method")
}
return []byte(m.secretKey), nil
}

token, err := jwt.ParseWithClaims(accessToken, &UserClaims{}, keyFunc)
if err != nil {
return nil, fmt.Errorf("invalid token: %w", err)
}

claims, ok := token.Claims.(*UserClaims)
if !ok {
return nil, fmt.Errorf("invalid token claims")
}
return claims, nil
}

// UserClaims stands for user claim
type UserClaims struct {
Username string `json:"username"`
Expand Down
18 changes: 18 additions & 0 deletions devto-grpc/proto/login.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
syntax = "proto3";

package proto;

option go_package = "./repo";

message LoginRequest {
string username = 1;
string password = 2;
}

message LoginResponse {
string accessToken = 1;
}

service AuthService {
rpc Login(LoginRequest) returns (LoginResponse) {};
}
2 changes: 1 addition & 1 deletion devto-grpc/repo/filter.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion devto-grpc/repo/keyboard.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion devto-grpc/repo/laptop.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion devto-grpc/repo/laptop_service.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion devto-grpc/repo/laptop_service_grpc.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

221 changes: 221 additions & 0 deletions devto-grpc/repo/login.pb.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 3d509dc

Please sign in to comment.