Back

Perfect flow for authentication

  • 1
  • Auth
  • Web
Bijit !! Bijit-Mondal
25 Mar, 2024, 11:14

this is my code, I want to verify the email before the user can login, but unable to do in createAccount part, how to do that and prevent unauthorized user from login

TypeScript

export const useAuth = () => {

  // login user
  const loginUser = async (auth) => {
    try {
      return await account.createEmailSession(auth.email, auth.password)
    } catch (error) {
        console.log(error)
        throw error
    }
  }

  // register user
  const register = async (auth) => {
    try {
      const newAccount = await account.create(ID.unique(), auth.email, auth.password, auth.firstName+" "+auth.lastName)
      if (!newAccount) {
        throw Error
      }
      const avatarUrl = avatars.getInitials(auth.firstName + " " + auth.lastName, 200, 200)
      return await saveUserToDB({
        user_id: newAccount.$id,
        email: newAccount.email,
        first_name: auth.firstName,
        last_name: auth.lastName,
        avatar_url: avatarUrl,
        bodhi_points: 0
      })
    } catch (e) {
      console.log(e)
      throw e
    }
  }


   // save user to database
   const saveUserToDB = async ( user) => {
    try {
      return await databases.createDocument(
          appwriteConfig.databaseId,
          appwriteConfig.userCollectionId,
          ID.unique(),
          user,
      )
    } catch (e) {
      console.log(e)
      throw e
    }
   }
  return {
    loginUser,
    register,
    saveUserToDB,
  }
}
TL;DR
Developers want to verify user email before login but are facing issues with the process. To prevent unauthorized access, implement email verification during the account creation step before allowing login.
Reply

Reply to this thread by joining our Discord

Reply on Discord

Need support?

Join our Discord

Get community support by joining our Discord server.

Join Discord

Get premium support

Join Appwrite Pro and get email support from our team.

Learn more