33 lines
1.2 KiB
JavaScript
33 lines
1.2 KiB
JavaScript
'use strict'
|
|
const root = require( 'app-root-path' )
|
|
const { AuthenticationError, UserInputError } = require( 'apollo-server-express' )
|
|
const { createUser, getUser, updateUser, deleteUser, validatePasssword, createToken, revokeToken, revokeTokenById, validateToken, getUserTokens } = require( '../../users/services' )
|
|
const { validateScopes, authorizeResolver } = require( `${root}/modules/shared` )
|
|
|
|
module.exports = {
|
|
Query: {
|
|
async user( parent, args, context, info ) {
|
|
if ( !context.auth ) throw new AuthenticationError( )
|
|
|
|
if ( !args.id && !context.userId ) {
|
|
throw new UserInputError( 'You must provide an user id.' )
|
|
}
|
|
|
|
return await getUser( args.id || context.userId )
|
|
}
|
|
},
|
|
Mutation: {
|
|
async userCreate( parent, args, context, info ) {
|
|
let userId = await createUser( args.user )
|
|
let token = await createToken( userId, "Default Token", [ 'streams:read', 'streams:write' ] )
|
|
return token
|
|
},
|
|
async userEdit( parent, args, context, info ) {
|
|
if ( context.userId !== args.user.id )
|
|
throw new AuthenticationError( 'Not authorized' )
|
|
|
|
await updateUser( context.userId, args.user )
|
|
return true
|
|
},
|
|
}
|
|
} |