Files
peach/gen/go/service.pb.spartanauth.go
2025-04-06 10:25:26 -06:00

47 lines
1.4 KiB
Go

package pb
import (
"context"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
var publicMethodMaps = map[string]bool{
// each method that is public will be added here
}
func NewSpartanAuthClient() {
}
// Implements UnaryServerInterceptor for authentication
func SpartanAuthPeachUnaryServerInterceptor(ctx context.Context, req any, info *grpc.UnaryServerInfo, handler grpc.UnaryHandler) (resp any, err error) {
// we will have a function that checks the token and a switch statement that checks if the method is public or not
if ok := publicMethodMaps[info.FullMethod]; ok {
return handler(ctx, req)
}
// check the token
// if the token is valid, return handler(ctx, req)
// if the token is missing or invalid, return an unauthenticated error
if token, ok := ctx.Value("token").(string); ok {
if ok, err := IntrospectToken(ctx, token); ok {
return handler(ctx, req)
} else {
if err != nil {
return nil, status.Errorf(codes.Internal, "error introspecting token: %v", err)
}
return nil, status.Errorf(codes.Unauthenticated, "invalid token")
}
}
return nil, status.Errorf(codes.Unauthenticated, "missing or invalid token")
}
func IntrospectToken(ctx context.Context, token string) (bool, error) {
// this function will call the introspection endpoint with the token and return the result
return false, nil
}