i created a login with the page page which is in the screens folder. I have set the value in page.client_storage and session storage. but when you get the data it's actually None . What is wrong . i wanto logout for remove login key in client storage in session storage but value always None
from flet import *
from flet_route import Routing,path
from screens.login import LoginView
from screens.register import RegisterView
from screens.dashboard import DashboardView
def main(page:Page):
my_routes = [
path(
url="/register",
clear=True,
view=RegisterView
),
path(
url="/login",
clear=True,
view=LoginView
),
path(
url="/dashboard",
clear=True,
view=DashboardView
),
]
check_login_session = page.client_storage.get("login")
print(check_login_session)
Routing(page=page,app_routes=my_routes)
if check_login_session == None:
page.go("/login")
page.update()
else:
page.go("/dashboard")
page.update()
page.go(page.route)
flet.app(target=main)
file screens/login.py
from flet import *
from flet_route import Params,Basket
import random
import string
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from myconnect import mycursor,mydb
def LoginView(page:Page,params:Params,basket:Basket):
nametxt = TextField(label="email")
passwordtxt = TextField(label="password")
def is_email_verified(email):
mycursor.execute("SELECT is_verified FROM users WHERE email = %s", (nametxt.value,))
result = mycursor.fetchone()
if result[0] == 1:
return True
else:
return False
def loginprocess(e):
mycursor.execute("SELECT * FROM users WHERE email = %s AND password = %s", (nametxt.value, passwordtxt.value))
result = mycursor.fetchone()
get_token = result[4]
if not result:
print("Email atau password salah")
page.snack_bar = SnackBar(
Text("Wrong email password",size=30),
bgcolor="red"
)
page.snack_bar.open = True
page.update()
return
elif not is_email_verified(nametxt.value):
print("Email belum terverifikasi")
page.snack_bar = SnackBar(
Text("you email not verified",size=30),
bgcolor="red"
)
page.snack_bar.open = True
page.update()
return
print("Anda sudah di dashboard")
page.go("/dashboard")
page.client_storage.set("login",get_token)
page.update()
return View(
"/login",
controls=[
Text("you login page",size=30,weight="bold"),
nametxt,
passwordtxt,
ElevatedButton("login Now",
bgcolor="green",color="white",
on_click=loginprocess
),
Row([
TextButton("no have account,register",
on_click=lambda e:page.go("/register")
)
],alignment="center")
]
)
file screens/register.py
from flet import *
from flet_route import Params,Basket
import random
import string
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from myconnect import mycursor,mydb
def RegisterView(page:Page,params:Params,basket:Basket):
nametxt = TextField(label="email")
passwordtxt = TextField(label="password")
def send_verification_email(email, token):
subject = "Verifikasi Email"
body = "Klik link berikut untuk melakukan verifikasi email: http://localhost:5000/verify_email?token=" + token + "&email=" + email
message = MIMEMultipart()
message['From'] = "noreply@myapp.com"
message['To'] = email
message['Subject'] = subject
message.attach(MIMEText(body, 'plain'))
# koneksi ke SMTP server Mailtrap dan kirim email
with smtplib.SMTP('smtp.mailtrap.io', 2525) as smtp:
smtp.login("27b3da367addfa", "bc4d9ff24e96cb")
smtp.sendmail("noreply@myapp.com", email, message.as_string())
def generate_token():
letters = string.ascii_letters
return ''.join(random.choice(letters) for i in range(10))
def registerprocess(e):
mycursor.execute("SELECT * FROM users WHERE email = %s", (nametxt.value,))
result = mycursor.fetchone()
if result:
print("Email sudah terdaftar")
return
token = generate_token()
sql = "INSERT INTO users (email, password, verification_token) VALUES (%s, %s, %s)"
val = (nametxt.value, passwordtxt.value, token)
mycursor.execute(sql, val)
mydb.commit()
send_verification_email(nametxt.value, token)
print("Registrasi berhasil, silakan cek email untuk verifikasi")
page.snack_bar = SnackBar(
Text("Send Email Verification",size=30),
bgcolor="blue"
)
page.snack_bar.open = True
nametxt.value = ""
passwordtxt.value = ""
page.update()
return View(
"/register",
controls=[
Text("you register ",size=30,weight="bold"),
nametxt,
passwordtxt,
ElevatedButton("Register my account",
bgcolor="blue",color="white",
on_click=registerprocess
),
ElevatedButton("Login Now",
bgcolor="orange",color="white",
on_click=lambda e:page.go("/login")
)
]
)
file screens/dashboard.py
from flet import *
from flet_route import Params,Basket
def DashboardView(page:Page,params:Params,basket:Basket):
page.bgcolor="green"
check_login_session = page.client_storage.get("login")
print("hasil",check_login_session)
if check_login_session == None:
page.go("/login")
page.update()
def logoutnow(e):
page.client_storage.remove("login")
page.go("/login")
page.update()
return View(
"/dashboard",
controls=[
Text("You In Dashboard",size=30,weight="bold",
),
ElevatedButton("logout",
bgcolor="red",color="white",
on_click=logoutnow
)
]
)
i created a login with the page page which is in the screens folder. I have set the value in page.client_storage and session storage. but when you get the data it's actually None . What is wrong . i wanto logout for remove login key in client storage in session storage but value always None
file screens/login.py
file screens/register.py
file screens/dashboard.py