EdwinN1337
05/25/2022, 9:41 AMjs
emailPasswordSignIn: async (input) => {
//TODO: add device-token logic
const validEmail = await validateEmail(input.email)
if (!validEmail) {
return {
status: 'WRONG_CREDENTIALS_ERROR',
}
}
//check if user is in db
const hasuraUser = await sdk.getUserByEmail({
email: input.email.toLowerCase().trim(),
})
if (hasuraUser.data?.customer.length === 0) {
return {
status: 'WRONG_CREDENTIALS_ERROR',
}
}
//check if there is a superTokensUser
const superTokensUser = await ThirdPartyEmailPassword.getUsersByEmail(input.email)
if (!superTokensUser) {
//check if password is valid and create superTokensUser
const valid = await bcrypt.compare(
input.password,
hasuraUser.data.customer[0].password,
)
if (!valid) {
return {
status: 'WRONG_CREDENTIALS_ERROR',
}
}
const signupResponse = await ThirdPartyEmailPassword.emailPasswordSignUp(
input.email,
input.password,
)
if (signupResponse.status !== 'OK') {
return {
status: 'WRONG_CREDENTIALS_ERROR',
}
}
}
return ThirdPartyEmailPassword.emailPasswordSignIn(input.email, input.password)
},
This is my logic (need to migrate from hasura users database > supertokens)