2011-08-09 8 views
3

私はYesodを使って自分のウェブサイトを再構築しています。私はyesod initによって生成されたコードを使い始めました。このコードでは、Yesod.Auth.EmailなどのYesodに付属の認証フレームワークを使用しています。このフレームワークでは、電子メールアドレスを指定してアカウントを作成できます。Yesod.Auth.Email - パブリックユーザーIDを設定する

私がデフォルトコードで持っている問題は、これはユーザー識別子を電子メールアドレスに設定することです。識別子がウェブサイト上で公然と使用される場合(例えば、ページ/ブログ上の解説者を特定する場合)、ユーザは、それらを識別するために表示されても構わないものが必要です。

理想的には、電子メールアドレスを送信した時点で、またはアカウントを検証してパスワードを入力するリンクをクリックしたときに、(一意の)公開識別子を尋ねるようにします。問題は、レジスタ/パスワード形式がそこに定義されているため、Yesodモジュールに変更が必要なように見えることです。

変更を簡単に行うことができます。しかし、私は彼らが私がしたいと思うようにするためにYesodモジュールを捨て去ることを本当に望んでいません。既存のyesod-authモジュールを使用してこれを行う別の方法はありますか?これは、フレームワークをそのまま使用して行うことができる可能性はありますが、そうであれば、小さな例が認められます。

答えて

1

私はあなたがウェブサイト上でのユーザーの同一性を示すために使用しているどのようなコードはよく分からないが、あなたは非常に簡単にユーザーのテーブルに列を追加することができます。

User 
    ... 
    publicIdentifier Text Update 

とあなたの集落でちょうど補間変数:

#{userPublicIdentifier user} 
+0

私はそれを行うことができましたが、問題はユーザーがそのpublicIdentifierを提供したときです。新しいユーザーを登録するためのフォームはYesod.Auth.Emailで定義されていますが、ユーザーの登録時に固有のパブリックユニークを要求したいと思います。したがって、私はYesod.Auth.Emailをフォークする必要があるかのように思えます。 – chrisdb

+0

私はまだMaxのアプローチを推奨します。私たちがHaskellersのためにしたことを見てください:最初にログインしてから、追加のプロファイルを追加してください。 Yesod認証は、唯一の実現可能なアプローチである第三者認証でうまくいくと考えられています。 –

関連する問題