You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
32 lines
1.6 KiB
32 lines
1.6 KiB
from nicegui import ui |
|
from services.auth_service import AuthService |
|
|
|
class LoginPage: |
|
def __init__(self, auth_service: AuthService): |
|
self.auth_service = auth_service |
|
|
|
def render(self): |
|
"""Render login page""" |
|
with ui.column().classes('min-h-screen bg-gradient-to-br from-green-400 to-green-600 justify-center items-center'): |
|
with ui.card().classes('w-full max-w-md p-8 shadow-2xl'): |
|
ui.label('Simple Mensa Admin').classes('text-2xl font-bold text-center text-gray-800 mb-6') |
|
|
|
with ui.column().classes('space-y-4 w-full'): |
|
username_input = ui.input('Username', placeholder='Inserisci username').classes('w-full') |
|
password_input = ui.input('Password', placeholder='Inserisci password', password=True).classes('w-full') |
|
|
|
login_btn = ui.button('Accedi', on_click=lambda: self._handle_login(username_input.value, password_input.value)).classes('w-full bg-green-600 hover:bg-green-700') |
|
|
|
ui.label('Demo: admin / admin').classes('text-sm text-gray-500 text-center mt-4') |
|
|
|
def _handle_login(self, username: str, password: str): |
|
"""Handle login attempt""" |
|
if not username or not password: |
|
ui.notify('Inserisci username e password', type='negative') |
|
return |
|
|
|
if self.auth_service.login(username, password): |
|
ui.notify('Login effettuato con successo', type='positive') |
|
ui.navigate.to('/') |
|
else: |
|
ui.notify('Credenziali non valide', type='negative')
|
|
|