day 11
This commit is contained in:
Executable
+48
@@ -0,0 +1,48 @@
|
||||
const { SchemaDirectiveVisitor, ApolloError } = require('apollo-server-express');
|
||||
const { defaultFieldResolver } = require('graphql');
|
||||
|
||||
const { errorCodes, errors } = require('../core/strings');
|
||||
const { GraphqlError, AuthenticationError } = require('../services/ErrorService');
|
||||
|
||||
class VerifyUser extends SchemaDirectiveVisitor {
|
||||
visitFieldDefinition(field) {
|
||||
const resolver = field.resolve || defaultFieldResolver;
|
||||
|
||||
let User;
|
||||
let Credential;
|
||||
|
||||
field.resolve = async (root, args, context, info) => {
|
||||
const { user, credentialId, db, role } = context;
|
||||
Credential = await db.credential.getByFields({
|
||||
status: 1,
|
||||
id: credentialId,
|
||||
role_id: role.roleId,
|
||||
});
|
||||
if (!Credential) {
|
||||
throw new ApolloError(errors.ACCOUNT_DOES_NOT_EXISTS, errorCodes.account.ACCOUNT_DOES_NOT_EXISTS);
|
||||
}
|
||||
User = await db.user.getByFields({
|
||||
status: 1,
|
||||
id: user.id,
|
||||
});
|
||||
if (!User) {
|
||||
throw new ApolloError(errors.ACCOUNT_DOES_NOT_EXISTS, errorCodes.account.ACCOUNT_DOES_NOT_EXISTS);
|
||||
}
|
||||
|
||||
return resolver(
|
||||
root,
|
||||
args,
|
||||
{
|
||||
...context,
|
||||
directives: {
|
||||
...(context.directives || {}),
|
||||
...(User && Credential ? { verifyUser: { user: JSON.parse(JSON.stringify(User)), credential: JSON.parse(JSON.stringify(Credential)) } } : {}),
|
||||
},
|
||||
},
|
||||
info,
|
||||
);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = VerifyUser;
|
||||
Reference in New Issue
Block a user