認証されたユーザーを読み取るには、次のように記述できます。
getUserProfileR :: Handler RepHtml
getUserProfileR = do
userId <- requireAuthId
Entity _ userData <- runDB $ selectFirst [UserProfileUser ==. userId] [] >>= return.fromJust
defaultLayout $ do
setTitle "User profile"
$(widgetFile "userprofile")
すべてを一覧表示するには、フィルターを削除し、select
代わりに使用selectFirst
して (ウィジェットに) 次のように書き込みます。
<h1>User list</h1>
<table>
<tr>
<th>Name
<th>Mail
<th>...
$forall (Entity _ userData) <- userList
<tr>
<td>#{userProfileName userData}
<td>#{userProfileMail userData}
<td>...
(すみません、完全でテスト済みのソリューションを書いていませんが、ここには開発サンドボックスがありません)
編集
完全でテスト済みの例。(yesod-platform と yesod-bin は必要ですか)
$ ghc-pkg list | grep yesod-[0-9]
yesod-1.2.2.1
$ yesod init
$ cd userList
簡単にするために、「Handler/Home.hs」ファイルを編集して追加します
getUserListR :: Handler Html
getUserListR = do
users <- runDB $ selectList [] []
defaultLayout $ do
setTitle "Public user list!"
[whamlet|
<h1>User list</h1>
<table>
<tr>
<th>Mail
$forall (Entity _ userData) <- users
<tr>
<td>#{userIdent userData}
|]
次の行を「config/routes」に追加します
/userlist UserListR GET
テストする
$ cabal install
$ yesod devel
一部のユーザーのログインとログインを入力してください
http://site:port/auth/login
(do login)
http://site:port/auth/logout
でユーザーをリストする
http://site:port/userlist
;)