Google App Engine であそんでみよう. (4)
Users API
Google App Engine ではユーザ管理用のAPIが提供されている. ただしこのAPIのユーザアカウントは, Google のアカウントなので, 独自の名前空間を持つものを設計したい場合には, 独自になんとかしなければならない.
APIの使い方はすごく簡単.
from google.appengine.api import users class MainPage(webapp.RequestHandler): def get(self): user = users.get_current_user() if not user: self.redirect(users.create_login_url("/")) else: self.response.headers['Content-Type'] = 'text/plain;charset=UTF-8' self.response.out.write('Hello, ' + user.nickname())
users.get_current_user() でユーザ情報をUserオブジェクトとして取り出す. ログインしていなければ Noneが返るので, users.create_login_url("/") で生成されるログインページにリダイレクトしている. この関数の引数はログイン終了後にリダイレクトされるページ. Userオブジェクトには nickname() と email() メソッドが定義されている. nicknameがないユーザに対しては nickname()メソッドはメイルアドレスを返す.
create_logout_url(URL) という関数もあってこちらは, 現在実行中のユーザをサインアウトさせたあと, URLにリダイレクトする.
また, 管理ユーザという概念がある. これは管理コンソールにアクセスする権限をもったユーザのことだが, この管理ユーザかどうかを判定するAPIも用意されている. users.is_current_user_admin() 関数は現在ログインしているユーザが管理ユーザの場合にTrueを返す.
また, 一部のページを管理ユーザのみがアクセスできるように設定することも可能. これにはYAMLで記述するアプリケーションの設定ファイルを用いる.
handlers: - url: /admin/.* script: admin.py login: admin
と書いておくと, admin以下のページは, 自動的に管理ユーザのみが利用できるようになる. よくできてるなあ.