module.exports = { type: { UsersPermissionsPermission: false // Make this type NOT queriable. }, definition: ` type UsersPermissionsMe { _id: ID! username: String! email: String! confirmed: Boolean blocked: Boolean role: UsersPermissionsMeRole } type UsersPermissionsMeRole { _id: ID! name: String! description: String type: String } `, query: ` me: UsersPermissionsMe `, resolver: { Query: { me: { resolverOf: 'User.me', resolver: { plugin: 'users-permissions', handler: 'User.me' } }, role: { resolverOf: 'UsersPermissions.getRole', resolver: async (obj, options, ctx) => { await strapi.plugins['users-permissions'].controllers.userspermissions.getRole(ctx); return ctx.body.role; } }, roles: { description: `Retrieve all the existing roles. You can't apply filters on this query.`, resolverOf: 'UsersPermissions.getRoles', // Apply the `getRoles` permissions on the resolver. resolver: async (obj, options, ctx) => { await strapi.plugins['users-permissions'].controllers.userspermissions.getRoles(ctx); return ctx.body.roles; } } }, Mutation: { createRole: { description: 'Create a new role', resolverOf: 'UsersPermissions.createRole', resolver: async (obj, options, ctx) => { await strapi.plugins['users-permissions'].controllers.userspermissions.createRole(ctx); return { ok: true }; } }, updateRole: { description: 'Update an existing role', resolverOf: 'UsersPermissions.updateRole', resolver: async (obj, options, ctx) => { await strapi.plugins['users-permissions'].controllers.userspermissions.updateRole(ctx); return { ok: true }; } }, deleteRole: { description: 'Delete an existing role', resolverOf: 'UsersPermissions.deleteRole', resolver: async (obj, options, ctx) => { await strapi.plugins['users-permissions'].controllers.userspermissions.deleteRole(ctx); return { ok: true }; } } } } };