@@ -3,7 +3,6 @@ package graph2
|
||||
import (
|
||||
"git.aiterp.net/rpdata/api/graph2/graphcore"
|
||||
"git.aiterp.net/rpdata/api/models"
|
||||
"git.aiterp.net/rpdata/api/models/files"
|
||||
)
|
||||
|
||||
func complexity() (cr graphcore.ComplexityRoot) {
|
||||
@@ -67,7 +66,7 @@ func complexity() (cr graphcore.ComplexityRoot) {
|
||||
cr.Query.File = func(childComplexity int, id string) int {
|
||||
return childComplexity + findComplexity
|
||||
}
|
||||
cr.Query.Files = func(childComplexity int, filter *files.Filter) int {
|
||||
cr.Query.Files = func(childComplexity int, filter *models.FileFilter) int {
|
||||
return childComplexity + listComplexity
|
||||
}
|
||||
cr.Query.Changes = func(childComplexity int, filter *models.ChangeFilter) int {
|
||||
|
||||
+1
-1
@@ -52,7 +52,7 @@ models:
|
||||
File:
|
||||
model: git.aiterp.net/rpdata/api/models.File
|
||||
FilesFilter:
|
||||
model: git.aiterp.net/rpdata/api/models/files.Filter
|
||||
model: git.aiterp.net/rpdata/api/models.FileFilter
|
||||
Change:
|
||||
model: git.aiterp.net/rpdata/api/models.Change
|
||||
ChangeModel:
|
||||
|
||||
+1
-1
@@ -55,5 +55,5 @@ func (r *rootResolver) Change() graphcore.ChangeResolver {
|
||||
}
|
||||
|
||||
func (r *rootResolver) Token() graphcore.TokenResolver {
|
||||
return &types.TokenResolver
|
||||
return types.TokenResolver(r.s)
|
||||
}
|
||||
|
||||
@@ -2,48 +2,21 @@ package resolvers
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"git.aiterp.net/rpdata/api/internal/auth"
|
||||
"git.aiterp.net/rpdata/api/models"
|
||||
"git.aiterp.net/rpdata/api/models/files"
|
||||
)
|
||||
|
||||
func (r *queryResolver) File(ctx context.Context, id string) (*models.File, error) {
|
||||
file, err := files.FindID(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &file, nil
|
||||
return r.s.Files.Find(ctx, id)
|
||||
}
|
||||
|
||||
func (r *queryResolver) Files(ctx context.Context, filter *files.Filter) ([]*models.File, error) {
|
||||
token := auth.TokenFromContext(ctx)
|
||||
|
||||
func (r *queryResolver) Files(ctx context.Context, filter *models.FileFilter) ([]*models.File, error) {
|
||||
if filter == nil {
|
||||
filter = &files.Filter{}
|
||||
}
|
||||
public := true
|
||||
|
||||
// Only allow users to view public files that are not their own.
|
||||
if token != nil {
|
||||
if filter.Public == nil || *filter.Public == false {
|
||||
filter.Author = &token.UserID
|
||||
filter = &models.FileFilter{
|
||||
Public: &public,
|
||||
}
|
||||
} else {
|
||||
filter.Public = &trueValue
|
||||
}
|
||||
|
||||
files, err := files.List(filter)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
files2 := make([]*models.File, len(files))
|
||||
for i := range files {
|
||||
files2[i] = &files[i]
|
||||
}
|
||||
|
||||
return files2, nil
|
||||
return r.s.Files.List(ctx, *filter)
|
||||
}
|
||||
|
||||
var trueValue = true
|
||||
|
||||
@@ -4,14 +4,13 @@ import (
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"git.aiterp.net/rpdata/api/internal/auth"
|
||||
"git.aiterp.net/rpdata/api/models"
|
||||
)
|
||||
|
||||
func (r *queryResolver) Token(ctx context.Context) (*models.Token, error) {
|
||||
token := auth.TokenFromContext(ctx)
|
||||
token := r.s.Auth.TokenFromContext(ctx)
|
||||
if !token.Authenticated() {
|
||||
return nil, errors.New("No (valid) token")
|
||||
return nil, errors.New("no (valid) token")
|
||||
}
|
||||
|
||||
return token, nil
|
||||
|
||||
@@ -35,7 +35,7 @@ input FilesFilter {
|
||||
public: Boolean
|
||||
|
||||
# Limit the MIME types of the files.
|
||||
mimeType: [String!]
|
||||
mimeTypes: [String!]
|
||||
}
|
||||
|
||||
# Input for editFile mutation
|
||||
|
||||
@@ -2,21 +2,20 @@ package types
|
||||
|
||||
import (
|
||||
"context"
|
||||
"git.aiterp.net/rpdata/api/services"
|
||||
|
||||
"git.aiterp.net/rpdata/api/models"
|
||||
"git.aiterp.net/rpdata/api/models/users"
|
||||
)
|
||||
|
||||
type tokenResolver struct{}
|
||||
type tokenResolver struct {
|
||||
auth *services.AuthService
|
||||
}
|
||||
|
||||
func (r *tokenResolver) User(ctx context.Context, token *models.Token) (*models.User, error) {
|
||||
user, err := users.Find(token.UserID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &user, nil
|
||||
return r.auth.FindUser(ctx, token.UserID)
|
||||
}
|
||||
|
||||
// TokenResolver is a resolver
|
||||
var TokenResolver tokenResolver
|
||||
func TokenResolver(s *services.Bundle) *tokenResolver {
|
||||
return &tokenResolver{auth: s.Auth}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user