Verification
Overview
Email verification helps confirm user identities by requiring them to verify their email addresses before gaining full access. This is especially useful for preventing spam and unauthorized access.
When a user signs up, Nile Auth:
- Sends a verification email using your configured SMTP server.
- Generates a unique
verification_token
for the user. - Grants access to the user after they click the verification link.
Prerequisites
- A configured SMTP server is required to send verification emails. You can set this up in the Nile Auth UI under Tenants & Users -> Configuration -> Email templates.
- A web server configured to handle Nile Auth requests and serve html.
Implementation
Install dependencies
Your application must expose API routes to handle authentication operations.
First, create a folder called api
under the app
folder and a folder called [...nile]
under it:
Create following files handle the calls to your server, as well as expose the nile
instance to your application:
/api/[...nile]/nile.ts
/api/[...nile]/route.ts
Middleware for Verification Enforcement
This middleware ensures that unverified users are redirected to a verification page.
Verification Button in the Frontend
This button allows users to trigger email verification manually.
Sign-in via Email
You can also allow users to sign in directly using their email without requiring a password.
Verification flow
- The user inputs their email on the login/signup page.
- Nile sends an email with a verification token using the configured SMTP settings.
- The link exchanges the
verification_token
for an authenticated session. - Upon successful verification, the user can access the application.
Related Topics
- Email Templates - Customize email verification messages.
- Custom SMTP - Configure your own SMTP server for sending emails.
- User Management - Manage user accounts in Nile Auth.
This version improves clarity, fixes errors (e.g., “there” → “their”, “invitationt” → “invitation”), and better explains the verification process. Let me know if you need further refinements! 🚀
Was this page helpful?