Yesod.Auth.Emailを使用したカスタム登録フォーム

ggarcia.jr

Yesod.Authが以前のように行われた理由について質問があります。私はカスタム登録フォームを作成しようとしていました-つまり、電子メール以外のより多くのフィールド-そしてこれが私が途中で見つけた問題です:

  1. カスタマイズされたテンプレートをレンダリングするために、Eメールモジュールで定義された関数のカスタマイズされたバージョンを作成しようとしました:defaultEmailLoginHandlerdefaultRegisterHandlerdefaultForgotPasswordHandler

そして、それは私に疑問を抱かせました:なぜ私たちは単にカスタムの集落ファイルを提供してそれで終わらせることができないのですか?これらの関数のカスタムバージョンを作成する必要があるのはなぜですか?

  1. テンプレート部分が完成した後、フォームの処理に移り、ここで壁にぶつかりました。registerHelper関数のカスタムバージョンを作成しようとしましたが、それはYesod.Auth.Emailクラスの表示されたメンバーではないため、カスタムregisterHelperの作成は機能しません。次に、postRegisterR書き直すことでフォームを処理するためのカスタムルートを提供できると思いましたが、やはり運が悪かったのです。

これらの関数、特にregisterHelperが、Yesod.Auth.Emailの表示メンバーとして作成されなかったのはなぜですか?

  1. 私の3番目の試みは、Email.hsモジュール全体を「フォーク」することでしたが、これを可能にするためのいくつかの要件を満たすことができませんでした。この場合、公開されたモジュールではないYesod.PasswordStoreであったため、カスタムのYesod.Auth.Emailにインポートできません。

Yesod.PasswordStoreが公開されなかったのはなぜですか?

うさぎの穴に深く入り込んでPasswordStoreのフォークを書き直したくないので、Yesod.Auth.Emailを使用してカスタム登録フォームを作成することはできないことに気づきました。

私はここで何かが足りないのですか、それとも私はこれを正しく理解しましたか?Yesod.Auth.Emailがそのように構築されたのはなぜですか?

彼自身

これに関してMichaelSnoymanが行った設計上の決定については正確にはわかりませんが、私の理由は、「電子メール」はアカウントの登録に必要な最小限の情報であるということでした。メールを登録すると、登録リンクのメールがアカウントに送信され、アカウントを確認できます。このパスワードリセットページにあり、新しいパスワードを設定するとともに、すべてのカスタムフィールドを定義します。新しいパスワードを設定するための独自のハンドラーを定義します。通常、コードは次のようになります。

  if (jpNewPassword profile == jpConfirmPassword profile)
    then do
      newPass <- liftIO $ saltPass (jpNewPassword profile)
      lift $
        runDB $
        do user <- getUser maid
           update maid [UserPassword =. (Just newPass)]

上記は私の個人的なプロジェクトの1つからのコードです。

なぜカスタムハムレットファイルを提供してそれで済ませることができないのですか?

それでも、カスタムの集落ファイルを提供できます。これはsetPasswordHandler、次のインスタンスでmyがどのように定義されるですYesodAuthEmail

  setPasswordHandler _ =
    selectRep $
    do provideRep $ return $(shamletFile "./templates/password.shamlet")

Yesod.PasswordStoreが公開されなかったのはなぜですか?

上で説明したように、Yesod.PasswordStore公開されることなくパスワードを更新できます関連する機能はしているYesod.Auth.Emailモジュール。

そうは言っても、私はあなたの懸念を理解することができます。これが、Yesod.Auth.Emailモジュール内のすべてのエンドポイントにJSONエンドポイントを実装した理由です。これにより、検証やその他の作業をクライアント側で簡単に実行できます。これらのエンドポイントは、上記のリンクされたHaddockページに記載されています。ただし、登録ページにカスタムフィールドが必要な場合は、Yesod.Auth.Emailモジュールのコード変更が必要になる可能性があります。githubで問題を開いて(PRを送信できる場合はブラウンポイント!)、そこでフィードバックを提供することをお勧めします。私たちは変化に対して非常にオープンです!

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Yesod: Could not find module `Yesod.Auth.Account'

分類Dev

Yesod:モジュール `Yesod.Auth.Account 'が見つかりませんでした

分類Dev

メール確認なしでYesod.Auth.Emailを使用するにはどうすればよいですか?

分類Dev

カスタムYesodフォームの作成:推測できませんでした(Monad(FormInput m))

分類Dev

django-rest-authカスタム登録で余分なフィールドを保存できません

分類Dev

USER_PASSWORD_AUTHを使用したAWSCognitoカスタム認証フロー

分類Dev

ユーザー名フィールドを持たないカスタムユーザーモデルでDj-Rest-Auth登録を使用する場合のFieldDoesNotExistエラー

分類Dev

Yesodフォームでのデータ収集の処理

分類Dev

YesodフォームでのgenerateForm投稿タイプエラー

分類Dev

カスタムヘッダー名を使用したSwagger / OpenAPI Bearer auth

分類Dev

Yesodフォーム:ウィジェットの奇妙な動作

分類Dev

LucidをYesodのdefaultLayoutに追加したい

分類Dev

Yesodでの応答時間の記録

分類Dev

Auth0とAngularJSを使用したカスタムログイン画面

分類Dev

make:auth Laravel 5.3を使用した後、ユーザー登録プロセスでmove()関数を使用する

分類Dev

python-social-authを使用してデータベースにユーザーを事前登録する

分類Dev

YesodにWebSocketを組み込む

分類Dev

YesodでrawSqlを実行する方法

分類Dev

カスタムサーバー認証を使用したEmberSimple auth(資格情報は未定義)

分類Dev

カスタムクレームを追加すると、エラーauth / invalid-emailが返されます:メールアドレスがFirebaseFunctionsで正しくフォーマットされていません

分類Dev

YesodスキャフォールドサイトbrowserIdTlsException

分類Dev

Yesodを使用した構成可能なパスプレフィックス

分類Dev

データベースYesodからフィールドを検証します

分類Dev

yesod非表示の_methodパラメーターを使用したPUTおよびDELETE

分類Dev

Laravelでカスタム登録フォームを作成する

分類Dev

WordPressのカスタム登録フォームを削除する

分類Dev

フォーム認証でdevise_token_authを使用する

分類Dev

カスタムプロバイダーでのFirebase Authの使用

分類Dev

widgetFileを介したJuliusでのYesodルート補間

Related 関連記事

  1. 1

    Yesod: Could not find module `Yesod.Auth.Account'

  2. 2

    Yesod:モジュール `Yesod.Auth.Account 'が見つかりませんでした

  3. 3

    メール確認なしでYesod.Auth.Emailを使用するにはどうすればよいですか?

  4. 4

    カスタムYesodフォームの作成:推測できませんでした(Monad(FormInput m))

  5. 5

    django-rest-authカスタム登録で余分なフィールドを保存できません

  6. 6

    USER_PASSWORD_AUTHを使用したAWSCognitoカスタム認証フロー

  7. 7

    ユーザー名フィールドを持たないカスタムユーザーモデルでDj-Rest-Auth登録を使用する場合のFieldDoesNotExistエラー

  8. 8

    Yesodフォームでのデータ収集の処理

  9. 9

    YesodフォームでのgenerateForm投稿タイプエラー

  10. 10

    カスタムヘッダー名を使用したSwagger / OpenAPI Bearer auth

  11. 11

    Yesodフォーム:ウィジェットの奇妙な動作

  12. 12

    LucidをYesodのdefaultLayoutに追加したい

  13. 13

    Yesodでの応答時間の記録

  14. 14

    Auth0とAngularJSを使用したカスタムログイン画面

  15. 15

    make:auth Laravel 5.3を使用した後、ユーザー登録プロセスでmove()関数を使用する

  16. 16

    python-social-authを使用してデータベースにユーザーを事前登録する

  17. 17

    YesodにWebSocketを組み込む

  18. 18

    YesodでrawSqlを実行する方法

  19. 19

    カスタムサーバー認証を使用したEmberSimple auth(資格情報は未定義)

  20. 20

    カスタムクレームを追加すると、エラーauth / invalid-emailが返されます:メールアドレスがFirebaseFunctionsで正しくフォーマットされていません

  21. 21

    YesodスキャフォールドサイトbrowserIdTlsException

  22. 22

    Yesodを使用した構成可能なパスプレフィックス

  23. 23

    データベースYesodからフィールドを検証します

  24. 24

    yesod非表示の_methodパラメーターを使用したPUTおよびDELETE

  25. 25

    Laravelでカスタム登録フォームを作成する

  26. 26

    WordPressのカスタム登録フォームを削除する

  27. 27

    フォーム認証でdevise_token_authを使用する

  28. 28

    カスタムプロバイダーでのFirebase Authの使用

  29. 29

    widgetFileを介したJuliusでのYesodルート補間

ホットタグ

アーカイブ