Files
oslstats/pkg/contexts/keys.go
2026-02-03 21:37:06 +11:00

49 lines
990 B
Go

// Package contexts provides utilities for loading and extracting structs from contexts
package contexts
import (
"context"
"git.haelnorr.com/h/oslstats/internal/permissions"
"git.haelnorr.com/h/oslstats/internal/roles"
)
type Key string
func (c Key) String() string {
return "oslstats context key " + string(c)
}
var (
DevModeKey Key = Key("devmode")
PermissionCacheKey Key = Key("permissions")
)
func DevMode(ctx context.Context) DevInfo {
devmode, ok := ctx.Value(DevModeKey).(DevInfo)
if !ok {
return DevInfo{}
}
return devmode
}
type DevInfo struct {
WebsocketBase string
HTMXLog bool
}
// Permissions retrieves the permission cache from context (type-safe)
func Permissions(ctx context.Context) *PermissionCache {
cache, ok := ctx.Value(PermissionCacheKey).(*PermissionCache)
if !ok {
return nil
}
return cache
}
type PermissionCache struct {
Permissions map[permissions.Permission]bool
Roles map[roles.Role]bool
HasWildcard bool
}