locomotivecms(github )に簡単な機能を追加しようとしています。非常にシンプルな機能:現在、ユーザーは、別のページを編集しようとしても、ログイン後に「メイン管理ハブ」(/ admin /)にリダイレクトされます。代わりに、ログイン後にそのページに誘導されるようにします。
追加するのは非常に簡単で合理的なことのようですが、2日間試した後、助けを求めることにしました。
これは私がこれまでに見つけたものです。
- このアプリはActiveRecordを使用していませんが、Mongoid(バックエンドデータベースはMongoDBです)
- Locomotiveは、単純な「ユーザー」スキーマを使用しません。認証は、「アカウント」(メール、パスワード、名前など)と「サイト」(マルチサイトのCMS)の2つの部分に分かれています。「サイト」には多くの「メンバーシップ」があります。メンバーシップには、1つのsite_idとaccount_idがあります(また、ロールもありますが、これは重要ではないと思います)。
- 機関車の「行動」のほとんどは、
/admin/
ルートの背後にあります。たとえば、ログインパスは/admin/log_in
です。ほとんどのコントローラーも/admin/
サブフォルダー内にあります。 - ルートにログインした後にアクセスするURLを明らかに「修正」するこのビットを見つけました。
/admin/sessions_controller
/admin/
関連するビットは次のとおりです。
def after_sign_in_path_for(resource)
admin_pages_url
end
代わりに、私が必要としているのはこれだとほぼ確信しています。
def after_sign_in_path_for(resource)
stored_location_for(resource) || admin_pages_url
end
Deviseのドキュメントを正しく理解stored_location_for
している場合は、セッションで値を検索して(session['admin_return_to']
Locomotiveの場合)、「誰かがどこかに戻りたいかどうかを確認します」。空の場合、|| 管理者ルートへの安全なパスを確保します。
残念ながら、これは機能しません。必要なセッション変数が設定されていないようです。Deviseがこの種のことを自動的に行ったと思いました。
セッション値を自分で設定する必要がありますか?もしそうなら、どこ?それとも私の仮定は間違っていますか?
どうもありがとう!