Z aplikacji przeznaczonych do obsługi restauracji korzysta zazwyczaj wiele osób, które pełnią różne role lub zajmują różne stanowiska. Dlatego zasadne jest dodanie do naszego serwisu obsługi użytkowników.
Zapoznaj się z prezentacją, a następnie dodaj do aplikacji Restauracja projekt (ang. blueprint) pozwalający na:
wyświetlanie, dodawanie, edycję i usuwanie użytkowników,
autentykację użytkowników – logowanie i wylogowywanie,
uwierzytelnianie użytkowników – przyznawanie / ograniczanie im dostępu do adresów URL.
Wymyśl pytanie na kartkówkę związane z tematem materiału.
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
W formularzu edycji pole hasło nie powinno być wymagane. W widoku edytuj() użyj konstrukcji try ... except ... else, aby nie pozwolić na zmianę nicka na już używany. Wykorzystaj podany niżej kod do aktualizacji danych użytkownika:
Linia 1. if haslo dwukropek.
Linia 2. db kropka execute otwórz nawias okrągły apostrof UPDATE users SET nick znak równości znak zapytania przecinek grupa znak równości znak zapytania przecinek haslo znak równości znak zapytania WHERE id znak równości znak zapytania apostrof przecinek.
Linia 3. otwórz nawias kwadratowy nick przecinek grupa przecinek generate podkreślnik password podkreślnik hash otwórz nawias okrągły haslo zamknij nawias okrągły przecinek u podkreślnik id zamknij nawias kwadratowy zamknij nawias okrągły.
Linia 4. else dwukropek.
Linia 5. db kropka execute otwórz nawias okrągły apostrof UPDATE users SET nick znak równości znak zapytania przecinek grupa znak równości znak zapytania WHERE id znak równości znak zapytania apostrof przecinek otwórz nawias kwadratowy nick przecinek grupa przecinek u podkreślnik id zamknij nawias kwadratowy zamknij nawias okrągły.
Linia 6. db kropka commit otwórz nawias okrągły zamknij nawias okrągły.
if haslo:
db.execute('UPDATE users SET nick = ?, grupa = ?, haslo = ? WHERE id = ?',
[nick, grupa, generate_password_hash(haslo), u_id])
else:
db.execute('UPDATE users SET nick = ?, grupa = ? WHERE id = ?', [nick, grupa, u_id])
db.commit()
W załączonym archiwum znajduje się kompletna aplikacja razem z przykładową obsługą edycji i usuwania użytkowników.