Users

Die App Engine bietet eine bequeme Möglichkeit, User die einen Google Account haben, zu verwalten.
Denn Google übernimmt hier die komplette Authentifizierung über den gekannten Login, anschließend erfolgt ein Redirect auf die Applikation.

Die Methoden users.create_login_url() und users.create_logout_url() bekommen als Parameter eine Ziel URL übergeben.
Mit der Methode users.get_current_user() kann überprüft werden ob ein User eingeloggt ist.

user = users.get_current_user()
if user:
    url = ("<a href=\"%s\">Logout</a>" % users.create_logout_url("/"))
else:
    url = ("<a href=\"%s\">Login</a>" % users.create_login_url("/"))
self.response.out.write("<html><body>%s</body></html>" % url)

Eine Instanz eines User Objekts repräsentiert einen User, die Instanzen sind eindeutig.

Das Modul users bietet mit der Klasse User auch die Möglichkeit einen User zu erstellen, als Parameter erwartet der Konstruktor eine E-Mail Adresse. Ansonsten wird eine UserNotFoundError Ausnahme erzeugt und die Ausführung abgebrochen.

Die Methoden user_id() und email() geben die entsprechenden Werte zurück.
Innerhalb eines Models kann man die Eigenschaft db.UserProperty() nutzen um ein User Objekt im Datastore zu speichern.

Admins
Um einen URL nur für Administratoren zugänglich zu machen, muss er in der Konfigurationsdatei app.yaml eingetragen werden.

- url: /admin
  script: admin.py
  login: admin

Die Methode is_current_user_admin() kann genutzt werden um einen Admin User zu identifizieren.

Bei der lokalen Entwicklung wird das Usermanagement simuliert, der Login lässt die Wahl ob mal sich als User oder Admin User einloggen möchte.

Comments are closed.