wikijs-fork/server/graph/resolvers/user.js

135 lines
3.7 KiB
JavaScript
Raw Normal View History

const graphHelper = require('../../helpers/graph')
2017-08-07 01:05:10 +00:00
/* global WIKI */
2017-08-07 01:05:10 +00:00
module.exports = {
Query: {
async users() { return {} }
},
Mutation: {
async users() { return {} }
},
UserQuery: {
async list(obj, args, context, info) {
return WIKI.models.users.query()
.select('id', 'email', 'name', 'providerKey', 'isSystem', 'createdAt')
},
async search(obj, args, context, info) {
return WIKI.models.users.query()
.where('email', 'like', `%${args.query}%`)
.orWhere('name', 'like', `%${args.query}%`)
.limit(10)
.select('id', 'email', 'name', 'providerKey', 'createdAt')
},
async single(obj, args, context, info) {
let usr = await WIKI.models.users.query().findById(args.id)
usr.password = ''
usr.tfaSecret = ''
return usr
2020-03-30 05:30:10 +00:00
},
async profile (obj, args, context, info) {
if (!context.req.user || context.req.user.id < 1 || context.req.user.id === 2) {
throw new WIKI.Error.AuthRequired()
}
const usr = await WIKI.models.users.query().findById(context.req.user.id)
if (!usr.isActive) {
throw new WIKI.Error.AuthAccountBanned()
}
const usrGroups = await usr.$relatedQuery('groups')
return {
...usr,
password: '',
providerKey: '',
tfaSecret: '',
lastLoginOn: '1970-01-01',
groups: usrGroups.map(g => g.name)
}
}
},
UserMutation: {
2019-12-22 21:08:18 +00:00
async create (obj, args) {
try {
await WIKI.models.users.createNewUser(args)
return {
responseResult: graphHelper.generateSuccess('User created successfully')
}
} catch (err) {
return graphHelper.generateError(err)
}
},
2019-12-22 21:08:18 +00:00
async delete (obj, args) {
try {
if (args.id <= 2) {
throw new WIKI.Error.UserDeleteProtected()
}
2020-03-15 16:06:45 +00:00
await WIKI.models.users.deleteUser(args.id)
2019-12-22 21:08:18 +00:00
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)
}
}
},
2019-12-22 21:08:18 +00:00
async update (obj, args) {
2019-08-17 22:29:58 +00:00
try {
await WIKI.models.users.updateUser(args)
return {
responseResult: graphHelper.generateSuccess('User created successfully')
}
} catch (err) {
return graphHelper.generateError(err)
}
},
async verify (obj, args) {
try {
await WIKI.models.users.query().patch({ isVerified: true }).findById(args.id)
return {
responseResult: graphHelper.generateSuccess('User verified successfully')
}
} catch (err) {
return graphHelper.generateError(err)
}
},
async activate (obj, args) {
try {
await WIKI.models.users.query().patch({ isActive: true }).findById(args.id)
return {
responseResult: graphHelper.generateSuccess('User activated successfully')
}
} catch (err) {
return graphHelper.generateError(err)
}
},
async deactivate (obj, args) {
try {
if (args.id <= 2) {
throw new Error('Cannot deactivate system accounts.')
}
await WIKI.models.users.query().patch({ isActive: false }).findById(args.id)
return {
responseResult: graphHelper.generateSuccess('User deactivated successfully')
}
} catch (err) {
return graphHelper.generateError(err)
}
},
2019-12-22 21:08:18 +00:00
resetPassword (obj, args) {
return false
}
2017-08-07 01:05:10 +00:00
},
User: {
2017-08-07 01:05:10 +00:00
groups(usr) {
return usr.$relatedQuery('groups')
2017-08-07 01:05:10 +00:00
}
}
}