diff options
author | Luke Granger-Brown <git@lukegb.com> | 2020-06-19 00:35:56 +0100 |
---|---|---|
committer | Michael Muré <batolettre@gmail.com> | 2020-06-27 23:01:10 +0200 |
commit | 5f72b04ef8e84b1c367ca6874519706318e351f5 (patch) | |
tree | 6f73279d05130d3d6d83de1dad3a5b4ac25be080 | |
parent | e5a316e40c377a8563e92f62b0773ed34321a91a (diff) | |
download | git-bug-5f72b04ef8e84b1c367ca6874519706318e351f5.tar.gz |
Use ErrNotAuthenticated
-rw-r--r-- | commands/webui.go | 10 | ||||
-rw-r--r-- | graphql/graphqlidentity/errors.go (renamed from graphql/resolvers/errors.go) | 2 | ||||
-rw-r--r-- | graphql/graphqlidentity/graphqlidentity.go | 10 | ||||
-rw-r--r-- | graphql/resolvers/mutation.go | 12 | ||||
-rw-r--r-- | graphql/resolvers/repo.go | 6 |
5 files changed, 15 insertions, 25 deletions
diff --git a/commands/webui.go b/commands/webui.go index 90679c79..c07f74fd 100644 --- a/commands/webui.go +++ b/commands/webui.go @@ -211,13 +211,13 @@ func newGitUploadFileHandler(repo repository.Repo) http.Handler { } func (gufh *gitUploadFileHandler) ServeHTTP(rw http.ResponseWriter, r *http.Request) { - id, err := graphqlidentity.ForContextUncached(r.Context(), gufh.repo) - if err != nil { - http.Error(rw, fmt.Sprintf("loading identity: %v", err), http.StatusInternalServerError) - return - } else if id == nil { + _, err := graphqlidentity.ForContextUncached(r.Context(), gufh.repo) + if err == graphqlidentity.ErrNotAuthenticated { http.Error(rw, fmt.Sprintf("read-only mode or not logged in"), http.StatusForbidden) return + } else if err != nil { + http.Error(rw, fmt.Sprintf("loading identity: %v", err), http.StatusInternalServerError) + return } // 100MB (github limit) diff --git a/graphql/resolvers/errors.go b/graphql/graphqlidentity/errors.go index 2a8024e0..5ec58b32 100644 --- a/graphql/resolvers/errors.go +++ b/graphql/graphqlidentity/errors.go @@ -1,4 +1,4 @@ -package resolvers +package graphqlidentity import "errors" diff --git a/graphql/graphqlidentity/graphqlidentity.go b/graphql/graphqlidentity/graphqlidentity.go index 6851c4a8..36b496f3 100644 --- a/graphql/graphqlidentity/graphqlidentity.go +++ b/graphql/graphqlidentity/graphqlidentity.go @@ -18,22 +18,24 @@ func AttachToContext(ctx context.Context, u *identity.Identity) context.Context return context.WithValue(ctx, identityCtxKey, u.Id()) } -// ForContext retrieves an IdentityCache from the context, or nil if no identity is present. +// ForContext 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 ForContext(ctx context.Context, r *cache.RepoCache) (*cache.IdentityCache, error) { id, ok := ctx.Value(identityCtxKey).(entity.Id) if !ok { - return nil, nil + return nil, ErrNotAuthenticated } return r.ResolveIdentity(id) } -// ForContextUncached retrieves an Identity from the context, or nil if no identity is present. +// ForContextUncached retrieves an Identity 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 ForContextUncached(ctx context.Context, repo repository.Repo) (*identity.Identity, error) { id, ok := ctx.Value(identityCtxKey).(entity.Id) if !ok { - return nil, nil + return nil, ErrNotAuthenticated } return identity.ReadLocal(repo, id) } diff --git a/graphql/resolvers/mutation.go b/graphql/resolvers/mutation.go index 8d2d8081..31505047 100644 --- a/graphql/resolvers/mutation.go +++ b/graphql/resolvers/mutation.go @@ -47,8 +47,6 @@ func (r mutationResolver) NewBug(ctx context.Context, input models.NewBugInput) id, err := graphqlidentity.ForContext(ctx, repo) if err != nil { return nil, err - } else if id == nil { - return nil, ErrNotAuthenticated } b, op, err := repo.NewBugRaw(id, time.Now().Unix(), input.Title, input.Message, input.Files, nil) @@ -72,8 +70,6 @@ func (r mutationResolver) AddComment(ctx context.Context, input models.AddCommen id, err := graphqlidentity.ForContext(ctx, repo) if err != nil { return nil, err - } else if id == nil { - return nil, ErrNotAuthenticated } op, err := b.AddCommentRaw(id, time.Now().Unix(), input.Message, input.Files, nil) @@ -102,8 +98,6 @@ func (r mutationResolver) ChangeLabels(ctx context.Context, input *models.Change id, err := graphqlidentity.ForContext(ctx, repo) if err != nil { return nil, err - } else if id == nil { - return nil, ErrNotAuthenticated } results, op, err := b.ChangeLabelsRaw(id, time.Now().Unix(), input.Added, input.Removed, nil) @@ -138,8 +132,6 @@ func (r mutationResolver) OpenBug(ctx context.Context, input models.OpenBugInput id, err := graphqlidentity.ForContext(ctx, repo) if err != nil { return nil, err - } else if id == nil { - return nil, ErrNotAuthenticated } op, err := b.OpenRaw(id, time.Now().Unix(), nil) @@ -168,8 +160,6 @@ func (r mutationResolver) CloseBug(ctx context.Context, input models.CloseBugInp id, err := graphqlidentity.ForContext(ctx, repo) if err != nil { return nil, err - } else if id == nil { - return nil, ErrNotAuthenticated } op, err := b.CloseRaw(id, time.Now().Unix(), nil) @@ -198,8 +188,6 @@ func (r mutationResolver) SetTitle(ctx context.Context, input models.SetTitleInp id, err := graphqlidentity.ForContext(ctx, repo) if err != nil { return nil, err - } else if id == nil { - return nil, ErrNotAuthenticated } op, err := b.SetTitleRaw(id, time.Now().Unix(), input.Title, nil) diff --git a/graphql/resolvers/repo.go b/graphql/resolvers/repo.go index f68ed3e0..009ccab6 100644 --- a/graphql/resolvers/repo.go +++ b/graphql/resolvers/repo.go @@ -152,10 +152,10 @@ func (repoResolver) Identity(_ context.Context, obj *models.Repository, prefix s func (repoResolver) UserIdentity(ctx context.Context, obj *models.Repository) (models.IdentityWrapper, error) { id, err := graphqlidentity.ForContext(ctx, obj.Repo) - if err != nil { - return nil, err - } else if id == nil { + if err == graphqlidentity.ErrNotAuthenticated { return nil, nil + } else if err != nil { + return nil, err } return models.NewLoadedIdentity(id.Identity), nil } |