yesod and auth

12
Yesod と認証プラグイン 島崎 清山 @seizans

Upload: seizan-shimazaki

Post on 03-Jul-2015

1.212 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Yesod and Auth

Yesod と認証プラグイン島崎 清山 @seizans

Page 2: Yesod and Auth

自己紹介•@seizans  •勤務:ワークスアプリケーションズ(ERPパッケージ)

•エンジニア歴:3年• Haskell歴:1年• Haskell made me リア充.

•結婚することになったので Yesod を使い始めた•@shokosさん, @dekosukeさん達とYesod遊びはじめ

Page 3: Yesod and Auth

作っているサイト

Page 4: Yesod and Auth

Yesod の認証•オープンな認証各種のためのプラグインがある• BrowserId, GoogleMail, OAuth, OpenId •使い方•まず App を YesodAuth のインスタンスにして•・・・とか思っていたら• 1.0 では yesod init したら出来てる• /auth/login でログイン画面が出る• that’s all. •と思ったけどちゃんと動かないので後で解決します

Page 5: Yesod and Auth

想定されていないこと•想定されていないこと•メッセージ送信機能の基盤としての利用•管理者の承認の元で認証すること•自分で自分のアカウントを作れる仕様が前提

Page 6: Yesod and Auth

出来合いのメール認証でできること•自分がメアドを持っていればアカウント発行できる•記入したパスワードのhash化などはしてくれてる•余談:サンプルコードでは前提として•デプロイ環境がsendmailできること

Page 7: Yesod and Auth

解決したかったこと•アカウントは管理者だけが発行できるように• routingをてきとうに増やして機能つける• sendmailなしでも動くように•認証系の文言を変更する

Page 8: Yesod and Auth

やること•メール認証プラグインをとりあえず作って使う• YesodAuthEmail をコピペする•とりあえずパッケージ化する• cabal install する•以上

Page 9: Yesod and Auth

やること•アカウントを管理者だけが発行できるように•アカウント発行用のリソース(url)には管理者権限が必要なようにする• Yesod Book の Authorization そのまま書けばいいだけ•そのかわりパスワードリセット用リソースを追加•認証プラグインの方でroutingとhandler書く•そのurlへのリンクを画面に入れる

Page 10: Yesod and Auth

やること• sendmail できない環境で使うために•サンプルで Network.Mail.Mime の箇所を変える•普通に SMTP ライブラリ使う•Network.SMTP.Client を普通に使えばよい•ということで自分のアプリの記述変えればOK

Page 11: Yesod and Auth

やること•認証系の文言を変更したい•デフォルトは Yesod.Auth.Message の defaultMessage で、機能に対応する文言を指定している• AuthMessage -> Text な関数を自分で作ればよい• App を YesodAuth インスタンスにするところで

renderMessage メソッドを上書きする•ということで自分のアプリの記述変えればOK

Page 12: Yesod and Auth

リポジトリ• https://github.com/seizans/happiage • https://github.com/seizans/yesod-auth-mail