プロジェクト

全般

プロフィール

QA #946

奈良 裕記 さんが約5年前に更新

h3. ■現象/要望 

 admin以外のユーザは、自分のみ/単一PJ内のみ有効なカスタムクエリしか作成/編集できない。(Redmine3.4, 4.0時点) 

 結果的に下記問題を招いている 
 ・adminへの作業負荷集中 
 ・admin権限割当者の増加 
 ・同一カスタムクエリを各PJで個別に作成→作業負荷増加、作業ミス増加 

 この対応として、PJ間共用カスタムクエリをadmin以外が作成/編集したい。 

 なお、カスタムクエリのPJ間共用自体については、 #250 参照(PJのRole指定利用) 

 h3. ■解決策 

 操作者=カスタムクエリ作成者の場合、無条件にカスタムクエリを編集可能とする処理を追加する。 
 非adminが作成したカスタムクエリを、adminがPJ間共用に変更することで可能。 
 但し、カスタムクエリの編集後は、adminが表示権限を再設定する必要がある。 


 h4. ■Redmine本体のコード変更 

 操作者=クエリ作成者の場合、無条件にカスタムクエリを編集可能とする処理を追加 
  (self.user_id == user.id)) 

 app/models/query.rb 

 <pre><code class="ruby"> 
   def editable_by?(user) 
     return false unless user 
     # Admin can edit them all and regular users can edit their private queries 

 >      return true if ((is_public? && user.allowed_to?(:manage_public_queries, project)) || (self.user_id == user.id)) 
 <      # return true if is_public? && user.allowed_to?(:manage_public_queries, project) 

     return true if user.admin? || (is_private? && self.user_id == user.id) 
     # Members can not edit public queries that are for all project (only admin is allowed to) 
     is_public? && !is_global? && user.allowed_to?(:manage_public_queries, project) 
   end 
 </code></pre> 

 h4. ■ クエリ作成-PJ共用化手順 

 クエリ作成者:(PJのクエリ作成、クエリ保存の権限が必要) 
 ・PJ内でカスタムクエリを作成する。 
 ・「全プロジェクト向け」をチェックしない。(PJ内のみ有効) 
 ・「表示」-「次のロールのみ」、クエリ利用許可するロールを選択する。 
 ・カスタムクエリを保存する。 
 ・カスタムクエリのIDをadminに連絡する。 

 admin: 
 ・PJ間で共用するカスタムクエリを編集する。 
 ・「全プロジェクト向け」をチェックする。(ロール割当者は利用可能) 
 ・カスタムクエリを保存する 

 カスタムクエリ編集後は再設定作業が必要 

  クエリ作成者のカスタムクエリ修正後は、下記問題が発生するため、adminがクエリ表示権限を再設定する必要がある。 
  (クエリ作成者のみ利用可能となってしまう。但しadminはクエリID指定で利用可) 

 ・クエリ作成者はカスタムクエリの設定変更が可能だが、カスタムクエリの保存時に、作成者本人のみ利用可能となってしまう。 
 ・クエリ作成者は、使用可能者なロールを変更できない。 

 h3. ■対応状況 

 Redmineソース変更+運用により対処可能 

 h3. ■補足 

 各カスタムクエリを表示制御するロールの権限は、PJ単位に設定する必要がある。 
 PJ間のメンバー継承、ユーザグループ単位のロール割当の利用が必要と思われる。 

 カスタムクエリ修正後のadmin再設定作業は不要としたい。 

 クエリ作成者の確認 

 ・上記のカスタムクエリ作成者IDは、queriesテーブルのuser_id に格納されている。 
 ・カスタムクエリの参照/編集画面上で、表示/編集可能とすることが望ましいと思われる。 

戻る