2009年12月26日土曜日

UserTool(GAE/J用VelocityTools)

スズキです。

こんなVelocityToolsを作ってみました。
http://code.google.com/p/suz-lab-gae/source/browse/trunk/suz-lab-gae/src/suz/lab/gae/tool/UserTool.java?r=62

GAE/JのUserServiceのラッパーって感じです。
Pageクラスを作らず、Velocityテンプレートだけで、認証関係の処理が利用できます。
(どっちかというと以下の記事の続きです)
http://blog.suz-lab.com/2009/12/gaej_25.html

実際に下記URLで利用して見ました。
http://feed.suz-lab.com/mypage/index.html

以下のように表示されると思います。
【admin】 false
【loggedIn】 gmail.com
【email】 suzuki@suz-lab.com
【nickname】 suzuki@suz-lab.com
【userId】 000000000000000000000
【createLoginURL】
https://www.google.com/accounts/ServiceLogin?service=ah&continue=http://feed.suz-lab.com/_ah/login%3Fcontinue%3Dhttp://feed.suz-lab.com/mypage/index.html&ltmpl=gm&ahname=suz-lab-feed&sig=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
【createLogoutURL】
http://feed.suz-lab.com/_ah/logout?continue=https://www.google.com/accounts/Logout%3Fcontinue%3Dhttp://feed.suz-lab.com/index.html%26service%3Dah

利用するためには、"toolbox.xml"に、その旨、書く必要があります。

--------【toolbox.xml】--------
<?xml version="1.0"?>
<toolbox>
  <tool>
    <key>user</key>
    <scope>request</scope>
    <class>suz.lab.gae.tool.UserTool</class>
  </tool>
  …
</toolbox>
--------
http://code.google.com/p/suz-lab-gae/source/browse/trunk/suz-lab-feed/war/WEB-INF/toolbox.xml?r=62

すると、以下のように"$user"でUserToolが利用できます。

--------【Velocity】--------
#set($layout="other/layout.html")
<h2>マイページ</h2>
<a href="$user.createLogoutURL("/index.html")">ログアウト</a>
<dl>
  <dt>admin</dt>
  <dd>$user.admin</dd>
  <dt>loggedIn</dt>
  <dd>$user.authDomain</dd>
  <dt>email</dt>
  <dd>$user.email</dd>
  <dt>nickname</dt>
  <dd>$user.nickname</dd>
  <dt>userId</dt>
  <dd>$user.userId</dd>
  <dt>createLoginURL</dt>
  <dd>$user.createLoginURL("/mypage/index.html")</dd>
  <dt>createLogoutURL</dt>
  <dd>$user.createLogoutURL("/index.html")</dd>
</dl>
--------
http://code.google.com/p/suz-lab-gae/source/browse/trunk/suz-lab-feed/war/WEB-INF/vm/page/other/mypage/index.html?r=62

次は、MemcacheService、やろう。

--------
http://www.suz-lab.com

0 コメント: