mirror of
https://github.com/MichaelMure/git-bug.git
synced 2024-12-15 10:12:06 +03:00
2ab6381a94
Included in the changes: - create a new /api root package to hold all API code, migrate /graphql in there - git API handlers all use the cache instead of the repo directly - git API handlers are now tested - git API handlers now require a "repo" mux parameter - lots of untangling of API/handlers/middleware - less code in commands/webui.go
29 lines
941 B
Go
29 lines
941 B
Go
// Package auth contains helpers for managing identities within the GraphQL API.
|
|
package auth
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/MichaelMure/git-bug/cache"
|
|
"github.com/MichaelMure/git-bug/entity"
|
|
)
|
|
|
|
// identityCtxKey is a unique context key, accessible only in this package.
|
|
var identityCtxKey = &struct{}{}
|
|
|
|
// CtxWithUser attaches an Identity to a context.
|
|
func CtxWithUser(ctx context.Context, userId entity.Id) context.Context {
|
|
return context.WithValue(ctx, identityCtxKey, userId)
|
|
}
|
|
|
|
// UserFromCtx retrieves an IdentityCache from the context.
|
|
// If there is no identity in the context, ErrNotAuthenticated is returned.
|
|
// If an error occurs while resolving the identity (e.g. I/O error), then it will be returned.
|
|
func UserFromCtx(ctx context.Context, r *cache.RepoCache) (*cache.IdentityCache, error) {
|
|
id, ok := ctx.Value(identityCtxKey).(entity.Id)
|
|
if !ok {
|
|
return nil, ErrNotAuthenticated
|
|
}
|
|
return r.ResolveIdentity(id)
|
|
}
|