main.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import starlette
  2. from nicegui import ui
  3. from session_info import SessionInfo
  4. session_infos = SessionInfo()
  5. def build_content(username: str) -> None:
  6. with ui.row().classes('flex justify-center w-full mt-20'):
  7. ui.label(f'Hello {username}!').classes('text-2xl')
  8. def build_login_form() -> None:
  9. def on_login(username: str, password: str, socket: starlette.websockets.WebSocket):
  10. session_id = socket.cookies['jp_token'].split('.')[0]
  11. if (username == 'user1' and password == 'pass1') or (username == 'user2' and password == 'pass2'):
  12. session_infos[session_id] = {'authenticated': True, 'user': username}
  13. ui.open('/', socket)
  14. with ui.row().classes('flex justify-center w-full mt-20'):
  15. with ui.card():
  16. username = ui.input('User Name')
  17. password = ui.input('Password').classes('w-full').props('type=password')
  18. ui.button('Log in', on_click=lambda e: on_login(username.value, password.value, e.socket))
  19. @ui.page('/')
  20. def main_page(request: starlette.requests.Request):
  21. if session_infos[request.session_id].get('authenticated', False):
  22. build_content(session_infos[request.session_id]["user"])
  23. else:
  24. build_login_form()
  25. ui.run()