init commit
This commit is contained in:
62
transportmanager/client/pages/forgot_password_page.py
Normal file
62
transportmanager/client/pages/forgot_password_page.py
Normal file
@@ -0,0 +1,62 @@
|
||||
import flet as ft
|
||||
import re
|
||||
import requests
|
||||
from config import API_BASE_URL
|
||||
|
||||
class ForgotPassword:
|
||||
def __init__(self, page: ft.Page, auth, login):
|
||||
self.page = page
|
||||
self.auth = auth
|
||||
self.login = login
|
||||
self.email = ft.TextField(label="Email")
|
||||
self.error = ft.Text("", color=ft.Colors.RED)
|
||||
self.success = ft.Text("", color=ft.Colors.GREEN)
|
||||
self.back_button = ft.TextButton(text="Back to Login", on_click=self.on_back_clicked)
|
||||
|
||||
def on_submit(self, e):
|
||||
email_value = self.email.value.strip()
|
||||
email_regex = r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$"
|
||||
|
||||
if not re.match(email_regex, email_value):
|
||||
self.error.value = "Please enter a valid email address."
|
||||
self.success.value = ""
|
||||
else:
|
||||
try:
|
||||
response = requests.post(
|
||||
f"{API_BASE_URL}/auth/forgot_password",
|
||||
json={"email": email_value},
|
||||
timeout=10
|
||||
)
|
||||
if response.status_code == 200:
|
||||
self.success.value = "If the email exists, you will receive a reset link shortly."
|
||||
self.error.value = ""
|
||||
else:
|
||||
self.error.value = "Server error. Please try again later."
|
||||
self.success.value = ""
|
||||
except Exception as ex:
|
||||
self.error.value = "Connection error. Please check your internet."
|
||||
self.success.value = ""
|
||||
print(ex)
|
||||
|
||||
self.page.update()
|
||||
|
||||
def on_back_clicked(self, e):
|
||||
self.auth.placeholder.content.clean()
|
||||
self.auth.placeholder.content = self.login.build()
|
||||
self.auth.placeholder.update()
|
||||
|
||||
def build(self):
|
||||
return ft.Column(
|
||||
[
|
||||
ft.Text("Forgot Password", size=30, weight="bold"),
|
||||
self.email,
|
||||
ft.ElevatedButton("Reset Password", on_click=self.on_submit, width=150),
|
||||
self.error,
|
||||
self.success,
|
||||
self.back_button,
|
||||
],
|
||||
horizontal_alignment=ft.CrossAxisAlignment.CENTER,
|
||||
alignment=ft.MainAxisAlignment.CENTER,
|
||||
spacing=20,
|
||||
width=350
|
||||
)
|
||||
Reference in New Issue
Block a user