/
server.go
35 lines (30 loc) · 974 Bytes
/
server.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package server
import (
"context"
"github.com/tuihub/librarian/internal/lib/libauth"
"github.com/go-kratos/kratos/v2/middleware/auth/jwt"
jwtv4 "github.com/golang-jwt/jwt/v4"
"github.com/google/wire"
)
// ProviderSet is server providers.
var ProviderSet = wire.NewSet(NewGRPCServer, NewGrpcWebServer, NewAuthMiddleware)
// NewAuthMiddleware https://github.com/go-kratos/kratos/issues/2617
func NewAuthMiddleware(auth *libauth.Auth) func(context.Context) (context.Context, error) {
return func(ctx context.Context) (context.Context, error) {
var newContext context.Context
mw := jwt.Server(
auth.KeyFunc(libauth.ClaimsTypeAccessToken),
jwt.WithSigningMethod(jwtv4.SigningMethodHS256),
jwt.WithClaims(libauth.NewClaims),
)
handler := mw(func(ctx context.Context, req interface{}) (interface{}, error) {
newContext = ctx
return nil, nil
})
_, err := handler(ctx, nil)
if err != nil {
return ctx, err
}
return newContext, nil
}
}