Replies: 2 comments 1 reply
-
As mentioned here: https://flet.dev/docs/guides/python/authentication
I'm pretty sure a simple solution using SQLite and some ORM can be easily hacked over weekend :) |
Beta Was this translation helpful? Give feedback.
-
Here is a short example where the user has to be logged in to reveal the secret. from pathlib import Path
import flet
from flet import Page, TextField, Text, ElevatedButton
class MyApp:
@staticmethod
def static_run(page: Page) -> None:
MyApp(page)
def __init__(self, page: Page):
self.page: Page = page
self.text_field_pwd = TextField(label="Enter password", password=True, can_reveal_password=True)
self.elevated_button_login = ElevatedButton("Login", on_click=self.login)
self.elevated_button_reveal = ElevatedButton("Reveal secret", on_click=self.reveal)
self.text_secret = Text(value="Secret: ")
self.logged_in = False
page.add(
self.text_field_pwd,
self.elevated_button_login,
self.elevated_button_reveal,
self.text_secret,
)
def login(self, _e):
if self.logged_in:
self.elevated_button_login.text = "Login"
self.text_secret.value = "Secret: "
self.logged_in = False
else:
if self.text_field_pwd.value == Path('assets/pwd.txt').read_text().strip():
self.elevated_button_login.text = "Logout"
self.text_field_pwd.value = None
self.text_field_pwd.error_text = None
self.logged_in = True
else:
self.text_field_pwd.error_text = "Incorrect password!"
self.page.update()
def reveal(self, _e):
if self.logged_in:
self.text_secret.value = "Secret: " + Path('assets/secret.txt').read_text().strip()
self.text_field_pwd.error_text = None
else:
self.text_field_pwd.error_text = "Please login first!"
self.page.update()
if __name__ == '__main__':
# To keep the example simple, we are reading the password and secret from files on the server.
# Usually one would read them from a DB.
Path("assets").mkdir(exist_ok=True)
Path("assets/pwd.txt").write_text("password")
Path("assets/secret.txt").write_text("This is a secret string.")
# flet.app(target=MyApp.static_run, assets_dir="assets")
flet.app(target=MyApp.static_run, assets_dir="assets", view=flet.WEB_BROWSER, port=8080) |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
How would I login without using a provider (github), using a database for example?
Beta Was this translation helpful? Give feedback.
All reactions