Files
lingniu-vehicle-ingest/vehicle-data-platform/apps/api/internal/platform/principal.go

27 lines
629 B
Go

package platform
import "context"
type Principal struct {
Name string `json:"name"`
Role string `json:"role"`
}
type principalContextKey struct{}
func WithPrincipal(ctx context.Context, principal Principal) context.Context {
return context.WithValue(ctx, principalContextKey{}, principal)
}
func PrincipalFromContext(ctx context.Context) (Principal, bool) {
principal, ok := ctx.Value(principalContextKey{}).(Principal)
return principal, ok
}
func ActorFromContext(ctx context.Context) string {
if principal, ok := PrincipalFromContext(ctx); ok && principal.Name != "" {
return principal.Name
}
return "system"
}