Rework session handling to prevent cyclic import

imports github.com/RafayLabs/rcloud-base/internal/fixtures
imports github.com/RafayLabs/rcloud-base/pkg/service
imports github.com/RafayLabs/rcloud-base/pkg/auth/v3
imports github.com/RafayLabs/rcloud-base/pkg/service
This commit is contained in:
Abin Simon
2022-03-30 13:54:28 +05:30
parent 19273730e9
commit 1ed5a3e876
8 changed files with 15 additions and 41 deletions

View File

@@ -4,6 +4,7 @@ import (
context "context"
"strings"
"github.com/RafayLabs/rcloud-base/pkg/common"
"github.com/RafayLabs/rcloud-base/pkg/gateway"
commonv3 "github.com/RafayLabs/rcloud-base/proto/types/commonpb/v3"
grpc "google.golang.org/grpc"
@@ -88,7 +89,7 @@ func (ac authContext) NewAuthUnaryInterceptor(opt Option) grpc.UnaryServerInterc
s := res.GetStatus()
switch s {
case commonv3.RequestStatus_RequestAllowed:
ctx := NewSessionContext(ctx, res.SessionData)
ctx := context.WithValue(ctx, common.SessionDataKey, res.SessionData)
return handler(ctx, req)
case commonv3.RequestStatus_RequestMethodOrURLNotAllowed:
return nil, status.Error(codes.PermissionDenied, res.GetReason())

View File

@@ -1,11 +1,13 @@
package authv3
import (
context "context"
"net/http"
"regexp"
"strings"
"github.com/RafayLabs/rcloud-base/internal/dao"
"github.com/RafayLabs/rcloud-base/pkg/common"
commonpbv3 "github.com/RafayLabs/rcloud-base/proto/types/commonpb/v3"
"github.com/google/uuid"
"github.com/uptrace/bun"
@@ -92,7 +94,7 @@ func (am *authMiddleware) ServeHTTP(rw http.ResponseWriter, r *http.Request, nex
s := res.GetStatus()
switch s {
case commonpbv3.RequestStatus_RequestAllowed:
ctx := NewSessionContext(r.Context(), res.SessionData)
ctx := context.WithValue(r.Context(), common.SessionDataKey, res.SessionData)
next(rw, r.WithContext(ctx))
return
case commonpbv3.RequestStatus_RequestMethodOrURLNotAllowed:

View File

@@ -1,17 +0,0 @@
package authv3
import (
"context"
"github.com/RafayLabs/rcloud-base/pkg/common"
commonv3 "github.com/RafayLabs/rcloud-base/proto/types/commonpb/v3"
)
func NewSessionContext(ctx context.Context, s *commonv3.SessionData) context.Context {
return context.WithValue(ctx, common.SessionDataKey, s)
}
func GetSession(ctx context.Context) (*commonv3.SessionData, bool) {
s, ok := ctx.Value(common.SessionDataKey).(*commonv3.SessionData)
return s, ok
}