```js emailPasswordSignIn: async (in...
# support-questions-legacy
e
Copy code
js
              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)
2 Views