feat: delete a user

This commit is contained in:
NGPixel
2019-12-22 16:08:18 -05:00
parent 3b347f262c
commit f09f1f4f1e
7 changed files with 135 additions and 21 deletions

View File

@@ -29,7 +29,7 @@ module.exports = {
}
},
UserMutation: {
async create(obj, args) {
async create (obj, args) {
try {
await WIKI.models.users.createNewUser(args)
@@ -40,10 +40,24 @@ module.exports = {
return graphHelper.generateError(err)
}
},
delete(obj, args) {
return WIKI.models.users.query().deleteById(args.id)
async delete (obj, args) {
try {
if (args.id <= 2) {
throw new WIKI.Error.UserDeleteProtected()
}
await WIKI.models.users.query().deleteById(args.id)
return {
responseResult: graphHelper.generateSuccess('User deleted successfully')
}
} catch (err) {
if (err.message.indexOf('foreign') >= 0) {
return graphHelper.generateError(new WIKI.Error.UserDeleteForeignConstraint())
} else {
return graphHelper.generateError(err)
}
}
},
async update(obj, args) {
async update (obj, args) {
try {
await WIKI.models.users.updateUser(args)
@@ -54,7 +68,7 @@ module.exports = {
return graphHelper.generateError(err)
}
},
resetPassword(obj, args) {
resetPassword (obj, args) {
return false
}
},

View File

@@ -169,6 +169,14 @@ module.exports = {
message: 'An unexpected error occured during user creation.',
code: 1009
}),
UserDeleteForeignConstraint: CustomError('UserCreationFailed', {
message: 'Cannot delete user because of content relational constraints.',
code: 1017
}),
UserDeleteProtected: CustomError('UserDeleteProtected', {
message: 'Cannot delete a protected system account.',
code: 1018
}),
UserNotFound: CustomError('UserNotFound', {
message: 'This user does not exist.',
code: 1016

View File

@@ -0,0 +1,8 @@
key: openapiCore
title: Core
description: Basic OpenAPI Parser
author: requarks.io
input: openapi
output: html
icon: mdi-api
props: {}

View File

@@ -0,0 +1,14 @@
const _ = require('lodash')
module.exports = {
async render() {
let output = this.input
for (let child of this.children) {
const renderer = require(`../${_.kebabCase(child.key)}/renderer.js`)
output = await renderer.init(output, child.config)
}
return output
}
}