homebox/backend/internal/services/contexts.go

41 lines
1 KiB
Go
Raw Normal View History

2022-08-30 02:30:36 +00:00
package services
import (
"context"
2022-08-31 02:11:23 +00:00
"github.com/hay-kot/content/backend/internal/types"
2022-08-30 02:30:36 +00:00
)
type contextKeys struct {
name string
}
var (
ContextUser = &contextKeys{name: "User"}
ContextUserToken = &contextKeys{name: "UserToken"}
)
// SetUserCtx is a helper function that sets the ContextUser and ContextUserToken
// values within the context of a web request (or any context).
2022-08-31 02:11:23 +00:00
func SetUserCtx(ctx context.Context, user *types.UserOut, token string) context.Context {
2022-08-30 02:30:36 +00:00
ctx = context.WithValue(ctx, ContextUser, user)
ctx = context.WithValue(ctx, ContextUserToken, token)
return ctx
}
// UseUserCtx is a helper function that returns the user from the context.
2022-08-31 02:11:23 +00:00
func UseUserCtx(ctx context.Context) *types.UserOut {
2022-08-30 02:30:36 +00:00
if val := ctx.Value(ContextUser); val != nil {
2022-08-31 02:11:23 +00:00
return val.(*types.UserOut)
2022-08-30 02:30:36 +00:00
}
return nil
}
// UseTokenCtx is a helper function that returns the user token from the context.
func UseTokenCtx(ctx context.Context) string {
if val := ctx.Value(ContextUserToken); val != nil {
return val.(string)
}
return ""
}