feat: implement email verification and password reset features

- Add EmailTokenService for handling email verification and password reset tokens.
- Create EmailService for sending verification and reset emails via SMTP.
- Update AuthService to handle email verification status during login.
- Modify user registration to redirect to a check email screen instead of issuing a token.
- Implement resend verification email functionality.
- Add deep link handling for email verification and password reset in the mobile app.
- Update mobile app routes and components to support new email verification flow.
- Enhance error handling for unverified emails during login attempts.
- Update configuration to include SMTP settings for email service.
This commit is contained in:
2026-03-14 23:38:15 -03:00
parent f5f4e878b4
commit d5af338ee1
38 changed files with 1146 additions and 75 deletions
+4 -1
View File
@@ -19,9 +19,10 @@ export default function RootLayout(): React.ReactElement | null {
useEffect(() => {
if (isLoading) return;
const inAuthGroup = segments[0] === '(auth)';
const inPublicRoute = segments[0] === 'verify-email' || segments[0] === 'filament';
if (isAuthenticated && inAuthGroup) {
router.replace('/(app)/(tabs)/home');
} else if (!isAuthenticated && !inAuthGroup) {
} else if (!isAuthenticated && !inAuthGroup && !inPublicRoute) {
router.replace('/(auth)/login');
}
}, [isAuthenticated, isLoading, segments, router]);
@@ -35,6 +36,8 @@ export default function RootLayout(): React.ReactElement | null {
<Stack.Screen name="index" />
<Stack.Screen name="(auth)" />
<Stack.Screen name="(app)" />
<Stack.Screen name="verify-email" />
<Stack.Screen name="filament/[id]" />
</Stack>
</>
);