This commit is contained in:
ryanwong
2022-02-06 22:15:10 -05:00
parent 46625dd6cd
commit a07577bffa
145 changed files with 12008 additions and 0 deletions
+48
View File
@@ -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;