Play framework with Scala その4

| # Comments | 2 Trackbacks
Play framework with Scala を使ってみようシリーズです。
その1
その2
その3

今日はUserServiceを使ってログインしてみようと思います。

今回のサンプルのソースは https://github.com/ueshin/play-hello/tree/play-hello-0.0.2 でブラウズできます。

GAEクラス

GAEモジュールが提供するplay.modules.gae.GAEクラスに便利なメソッドがたくさん定義されています。

今回は、そのうちのlogin()/logout()メソッドを使います。

login()メソッド

Controllerからこのメソッドを呼べばGoogleアカウントのログイン画面にリダイレクトします。

引数でログイン後の戻り画面を指定することができます。
指定は "ControllerClassName.actionMethodName" の形式の文字列です。

引数がない場合には呼び出した画面に戻って来ます。
管理画面など、ある画面にアクセスしたらログイン画面表示、ログイン後戻ってくる、などの場面で利用出来ます。
ログインリンクのアクションで引数なしにするとログイン後再度ログイン画面になってしまうので注意。

logout()メソッド

Controllerからこのメソッドを呼べばGoogleアカウントからログアウトします。

引数でログアウト後の戻り画面を指定することができます。
指定はlogin()メソッドと同様、"ControllerClassName.actionMethodName" の形式の文字列です。

こちらも引数なしにして呼び出した画面に戻るようにすることができます。
ただし、ログアウトリンクのアクションで引数なしを使うとログアウト後にまたログアウト・・・とループしてしまいます。
引数なしのlogout()メソッドは呼び出す場面が思い浮かびません。。。

getUser()メソッド

GoogleアカウントにログインしていればUserオブジェクトを、していなければnullを返します。
ログインチェックとユーザー情報取得(メールアドレスのみ)に使います。

Application.scala

それでは実際のコードを見てみます。

app/controllers/Application.scala (前のcontrollers.scalaから移動しています)

package controllers

import _root_.play._
import _root_.play.mvc._
import _root_.play.modules.gae._

object Application extends Controller with Defaults {
  
  def index = Template
  
  def login = GAE.login("Application.index")

  def logout = GAE.logout("Application.index")
}

login / logoutアクションを追加して、UserServiceへのログイン/ログアウトとしています。
戻りは元のトップ画面です。

Defaultsトレイト

Defaultsトレイトをミックスインしています。
事前処理としてログインチェックとユーザー情報取得を行います。

app/controllers/Defaults.scala

package controllers

import _root_.play._
import _root_.play.mvc._
import _root_.play.modules.gae._

trait Defaults extends Controller {

  @Before
  def check = {
    Option(GAE.getUser) match {
      case Some(user) => {
        renderArgs += "user" -> user
      }
      case None =>
    }
  }
}

routes

コントローラーとURLパスのルーティングを行います。

conf/routes

Application.loginApplication.logoutの設定を追加しました。 (diff)

デフォルトでは /{controller}/{action} という設定があるので、例えば /application/index というパスが有効です。
このパターンにマッチする場合には設定を追加する必要はありません。

view

画面のHTMLテンプレートは、app/views以下、ControllerClassName/actionMethodName.html のようなファイル名で置かれます。

app/views/Application/index.html

どなたかがデザインをあててくれることを切に願います。

ローカル動作確認

ローカルで動作確認する場合には、ログイン画面のモック画面が表示されるようになっていますので、適当なアカウントでログインして動作確認することができます。

デプロイ

動作確認が完了したら、デプロイします。

$ play gae:deploy play-hello --gae=${GAE_SDK_HOME}

ブラウザで確認します。

Welcome Guest!

トラックバック(2)

Play framework with Scala を使ってみようシリーズです。... 続きを読む

Play framework with Scala を使ってみようシリーズです。... 続きを読む

comments powered by Disqus

Twitter Icon

AdSense

Creative Commons License
このブログはクリエイティブ・コモンズでライセンスされています。
Powered by Movable Type 5.14-ja

Google検索

カスタム検索

2013年10月

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31