1package access
2
3import "context"
4
5var (
6 contextKey = &struct{ string }{"access"}
7 ContextKeyAccessLevel = &struct{ string }{"access-level"}
8)
9
10// FromContext returns the access from the context.
11func FromContext(ctx context.Context) Access {
12 if access, ok := ctx.Value(contextKey).(Access); ok {
13 return access
14 }
15 return nil
16}
17
18// WithContext returns a new context with the access attached.
19func WithContext(ctx context.Context, access Access) context.Context {
20 return context.WithValue(ctx, contextKey, access)
21}
22
23// AccessLevelFromContext returns the access level from the context.
24func AccessLevelFromContext(ctx context.Context) AccessLevel {
25 if al, ok := ctx.Value(ContextKeyAccessLevel).(AccessLevel); ok {
26 return al
27 }
28 return NoAccess
29}
30
31// WithAccessLevelContext returns a new context with the access level attached.
32func WithAccessLevelContext(ctx context.Context, al AccessLevel) context.Context {
33 return context.WithValue(ctx, ContextKeyAccessLevel, al)
34}