auth: Moved token and user to models package, added graphql endpoint to check token
the build failed

This commit is contained in:
2018-09-16 16:57:40 +02:00
parent 07b94b3cab
commit 2ab933149e
14 changed files with 206 additions and 120 deletions
+4
View File
@@ -49,5 +49,9 @@ models:
model: git.aiterp.net/rpdata/api/models.File
FilesFilter:
model: git.aiterp.net/rpdata/api/models/files.Filter
Token:
model: git.aiterp.net/rpdata/api/models.Token
User:
model: git.aiterp.net/rpdata/api/models.User
Date:
model: git.aiterp.net/rpdata/api/models/scalars.Date
+4
View File
@@ -37,3 +37,7 @@ func (r *rootResolver) Story() StoryResolver {
func (r *rootResolver) File() FileResolver {
return &types.FileResolver
}
func (r *rootResolver) Token() TokenResolver {
return &types.TokenResolver
}
+18
View File
@@ -0,0 +1,18 @@
package queries
import (
"context"
"errors"
"git.aiterp.net/rpdata/api/internal/auth"
"git.aiterp.net/rpdata/api/models"
)
func (r *resolver) Token(ctx context.Context) (models.Token, error) {
token := auth.TokenFromContext(ctx)
if !token.Authenticated() {
return models.Token{}, errors.New("No (valid) token")
}
return *token, nil
}
+4
View File
@@ -51,6 +51,10 @@ type Query {
# Find files
files(filter: FilesFilter): [File!]!
# Get information about the token, useful for debugging.
token: Token!
}
# A Date represents a RFC3339 encoded date with up to millisecond precision.
+8
View File
@@ -0,0 +1,8 @@
# Token represents the data parsed and validated from the bearer token.
type Token {
# The user represented in the token.
user: User!
# The permissions for the token.
permissions: [String!]!
}
+8
View File
@@ -0,0 +1,8 @@
# A user represents a member on the RPData platform.
type User {
# The user's unique ID / username
id: String!
# What the user is permitted to do.
permissions: [String!]!
}
+17
View File
@@ -0,0 +1,17 @@
package types
import (
"context"
"git.aiterp.net/rpdata/api/models"
"git.aiterp.net/rpdata/api/models/users"
)
type tokenResolver struct{}
func (r *tokenResolver) User(ctx context.Context, token *models.Token) (models.User, error) {
return users.Find(token.UserID)
}
// TokenResolver is a resolver
var TokenResolver tokenResolver