web-dev-qa-db-ja.com

役割の機能化、権限の喪失

管理者という役割を作成しました。管理者には権限があります:「ロールの割り当て」( RoleAssign 経由)、「管理ページへのアクセス」、「管理テーマの表示」、および「ユーザーの管理」。

Features を使用してロールをエクスポートします(アクセス許可とロール自体を1つずつ含めます)。

この機能を有効にする前に、configで役割を削除し、キャッシュをクリアします。機能を有効にします。私 drush fr adminroleと私はCurrent state already matches defaults, aborting.

しかし、私の新しい管理者ロールには、必要な権限がありません。 「管理ページへのアクセス」と「管理テーマの表示」があることもありますが、「役割の割り当て」や「ユーザーの管理」はありません。

これは、機能に Strongarm が必要な場合ですか?または Secure Permissions を使用する必要がありますか(他の管理者がconfigでアクセス許可を変更できないため、これは理想的とは言えません。)

3
beth

私は2つの異なることを混乱させていました。機能によるアクセス許可と役割の処理方法により、2つではなく3つの部分があります。

私が起こっていたと思ったこと:

  1. フィーチャーにMyroleを追加します。
  2. フィーチャーにmypermission1、mypermission2、mypermission3などを追加します。
  3. 私はフィーチャーを保存し、ユーザーはMyroleでmypermissions 1、2、3などになります。

実際に必要なこと:

  1. フィーチャーにMyroleを追加します
  2. フィーチャーにmypermission1、mypermission2、mypermission3などを追加します。
  3. 私の現在の構成でのMyroleのアクセス許可には、実際にmypermissions 1、2、3などが含まれていることを確認します。
  4. 私はフィーチャーを保存し、ユーザーはMyroleでmypermissions 1、2、3などになります。

最初のものは、エクスポートの瞬間にmypermissions 1、2、3などの状態がであるものをすべてエクスポートします。これは、 configには実際にはこれらの権限はありません。フィーチャーは、ロールしないにこれらの権限を明示的に指定します。私がやろうとしていたことから逆に。

2
beth

権限の機能化に関する一般的な問題の1つは、ソースインストールとターゲットインストールの役割が、名前だけでなくIDも同じでなければならないことです。そうでない場合は、間違ったロール、または存在しないロールIDに権限を適用している可能性があります。したがって、最初のことは、両方のサイトが役割テーブルに関して並んでいることを確認することです。

1