1
Fork 0
photoview/api/graphql/resolvers/user.go

84 lines
1.8 KiB
Go
Raw Normal View History

2020-02-05 14:51:46 +01:00
package resolvers
2020-01-31 17:36:48 +01:00
import (
"context"
2020-01-31 23:30:34 +01:00
"github.com/viktorstrate/photoview/api/graphql/auth"
2020-01-31 17:36:48 +01:00
"github.com/viktorstrate/photoview/api/graphql/models"
)
2020-01-31 23:30:34 +01:00
// func (r *Resolver) User() UserResolver {
// return &userResolver{r}
// }
// type userResolver struct{ *Resolver }
2020-02-05 14:51:46 +01:00
func (r *queryResolver) Users(ctx context.Context) ([]*models.User, error) {
rows, err := r.Database.Query("SELECT * FROM users")
if err != nil {
return nil, err
}
defer rows.Close()
users, err := models.NewUsersFromRows(rows)
if err != nil {
return nil, err
}
return users, nil
}
2020-01-31 23:30:34 +01:00
func (r *queryResolver) MyUser(ctx context.Context) (*models.User, error) {
user := auth.UserFromContext(ctx)
if user == nil {
return nil, auth.ErrUnauthorized
}
return user, nil
}
2020-02-01 00:08:23 +01:00
func (r *mutationResolver) AuthorizeUser(ctx context.Context, username string, password string) (*models.AuthorizeResult, error) {
2020-01-31 17:36:48 +01:00
user, err := models.AuthorizeUser(r.Database, username, password)
if err != nil {
2020-02-01 00:08:23 +01:00
return &models.AuthorizeResult{
2020-01-31 17:36:48 +01:00
Success: false,
Status: err.Error(),
}, nil
}
2020-01-31 23:30:34 +01:00
var token *models.AccessToken
token, err = user.GenerateAccessToken(r.Database)
2020-01-31 18:51:24 +01:00
if err != nil {
return nil, err
}
2020-01-31 17:36:48 +01:00
2020-02-01 00:08:23 +01:00
return &models.AuthorizeResult{
2020-01-31 17:36:48 +01:00
Success: true,
Status: "ok",
2020-01-31 18:51:24 +01:00
Token: &token.Value,
2020-01-31 17:36:48 +01:00
}, nil
}
2020-02-01 00:08:23 +01:00
func (r *mutationResolver) RegisterUser(ctx context.Context, username string, password string, rootPath string) (*models.AuthorizeResult, error) {
2020-01-31 18:51:24 +01:00
user, err := models.RegisterUser(r.Database, username, password, rootPath)
2020-01-31 17:36:48 +01:00
if err != nil {
2020-02-01 00:08:23 +01:00
return &models.AuthorizeResult{
2020-01-31 17:36:48 +01:00
Success: false,
Status: err.Error(),
}, nil
}
2020-01-31 18:51:24 +01:00
token, err := user.GenerateAccessToken(r.Database)
if err != nil {
return nil, err
}
2020-01-31 17:36:48 +01:00
2020-02-01 00:08:23 +01:00
return &models.AuthorizeResult{
2020-01-31 17:36:48 +01:00
Success: true,
Status: "ok",
2020-01-31 18:51:24 +01:00
Token: &token.Value,
2020-01-31 17:36:48 +01:00
}, nil
}