User current paths (user/edit & user/current/*)
「current」をプレースホルダーとして使用し、ログインユーザーのIDに自動解決されるUID非依存のユーザーアクションパスを提供します。
user_current_paths
インストール
composer require 'drupal/user_current_paths:^2.0'
概要
User current pathsモジュールは、Drupalでよくあるユーザビリティの問題を解決します。特定のユーザーIDを知らなくても、任意のログインユーザーに対して機能するユーザー非依存のリンクを作成できます。/user/123/editのようにパスをハードコードする代わりに、/user/current/editを使用すると、適切なユーザー固有のパスに自動的にリダイレクトされます。
これは、現在のユーザーのプロフィール、編集フォーム、その他のユーザー関連ページを指すメニューリンク、ショートカット、ナビゲーション要素を作成する際に特に便利です。また、このモジュールは現在のユーザーのアカウント編集フォームに直接リダイレクトする便利な/user/editショートカットも提供します。
さらに、ユーザーアカウントメニューに「Edit my account」リンクが追加され、ログインユーザーがナビゲーションから直接アカウント設定にアクセスしやすくなります。
Features
- 現在のユーザーのプロフィールページ(/user/{uid})にリダイレクトする/user/currentパスを提供
- 任意のユーザーアクションページにリダイレクトする/user/current/{action}ワイルドカードパスを提供(例:/user/current/edit → /user/{uid}/edit)
- 現在のユーザーのアカウント編集フォームにリダイレクトする/user/editショートカットパスを提供
- ログインユーザー向けにユーザーアカウントメニューへ「Edit my account」メニューリンクを追加
- リダイレクト前にパスを検証し、無効なリダイレクト先には404を返す
- コントリビュートモジュールが提供するパスを含む、あらゆるユーザー関連パスで動作(例:/user/current/shortcuts)
Use Cases
ユーザーメニューショートカットの作成
ユーザーダッシュボードやアカウントエリアを持つサイトを構築する際、ユーザーIDを知らなくても/user/currentパスを使用してメニューリンクを作成できます。これにより、すべてのユーザーに対して機能する汎用的なナビゲーションが可能になります。
カスタムコードでのハードコードリンク
カスタムモジュールやテーマを開発する際、ユーザー固有のURLを動的に生成する代わりに、リンクに/user/current/*パスを使用できます。これによりコードが簡素化され、ユーザーコンテキストの読み込みが不要になります。
アカウントリンクを含むメールテンプレート
メールテンプレートに/user/current/editや/user/editリンクを含めることができます。ユーザーがログイン後にこれらのリンクをクリックすると、自分のアカウントページにリダイレクトされます。
ショートカット統合
ユーザーは自分のユーザーIDを知らなくても、/user/current/*パスをショートカットに追加して自分のアカウントページに素早くアクセスできます。
外部システム連携
ユーザー固有のDrupalページにリンクバックする必要がある外部システムと連携する際、認証済みユーザーであれば誰でも機能する/user/current/* URLを提供できます。
Tips
- コード内で動的なユーザー編集URLを構築する代わりに/user/current/editを使用してください
- このモジュールはユーザーサブページを追加するコントリビュートモジュールでも動作します(例:コマースサイトの/user/current/orders)
- /user/editパスは編集フォームへのリンクのみが必要な場合の便利なショートカットです
- すべてのリダイレクトは適切なアクセス制御を維持します - リダイレクト先への権限がない場合、ユーザーにはアクセス拒否が表示されます
Technical Details
Troubleshooting 3
このモジュールはターゲットパスが存在することを検証します。404が発生する場合、基礎となるパス/user/{uid}/{action}が存在しません。アクセスしようとしているアクションが有効なユーザールートであることを確認してください。
このモジュールが提供するすべてのルートはユーザーがログインしている必要があります。匿名ユーザーはこれらのリダイレクトパスを使用できません。
このリンクは「account」メニューに追加されます。テーマでこのメニューが表示されていること、およびログインしていることを確認してください。
Security Notes 3
- このモジュールはDrupalのパスバリデーターを使用してリダイレクト先が有効な内部パスであることを確認します
- アクセス制御はリダイレクト先で適用されます - ユーザーは閲覧権限のないページにはアクセスできません
- リダイレクトは、すべてのセキュリティチェックが適用された状態でユーザーが手動でURLを入力したかのように安全に処理されます