プロジェクト

全般

プロフィール

QA #313

ユーザーの誤削除を絶対にさせない

奈良 裕記8ヶ月前に追加. 8ヶ月前に更新.

ステータス:
回答済
優先度:
通常
担当者:
-
カテゴリ:
Permission
対象バージョン:
開始日:
2017/04/06
期日:
進捗率:

0%

予定工数:

説明

■現象/要望

Redmine上で、ユーザーの誤削除を絶対にできない様にしたい。

誤ってユーザーを削除した場合、DBのバックアップでも無いと復旧は困難。
ユーザIDのロックで使用不能になるのだから、削除は最初から出来なくて良いと思う。
削除で浮くデータサイズは微々たる量だし、復旧の手間の方が無駄。

■解決策

下記3案有

1. Redmineのソース改変

app/model/users.rb

class User < Principal の中に、下記コードを追加して再起動する。

  # Prohibit deletion of users
  def destroy
    false
  end

これにより
・ユーザ削除ボタンを押しても削除されない。
・ユーザロックはできる。

2.View Customize Plugin でユーザー管理画面の「削除」ボタンを非表示化
(ソース変更不要・再起動不要)

/*
Path pattern: /users
Type: css
ユーザー管理画面で削除ボタンを非表示に
*/

.icon-del{
    display:none;
}

3.Redmine本体の機能追加(案)

sudo_mode みたいに coniguration.yml で有効・無効化
http://www.redmine.org/issues/6751

■対応状況

↓動作確認済
1.ソース改竄による対応
2.ユーザ管理画面の削除非表示(ViewCustomize利用)

■補足

削除機能は1.2.0で追加された。
SPAM登録が蔓延る環境ではユーザ削除機能が必要。

http://www.redmine.org/issues/7296
https://redmine.tokyo/issues/313#note-6

履歴

#1 前田 剛8ヶ月前に更新

Redmine本体の機能として、sudo_mode みたいに coniguration.yml で有効・無効が切り替えられるようになっているとよいですね。

こんな感じで。

user_deletion: false

#2 中村 浩平8ヶ月前に更新

ユーザ削除されて嬉しい状況が想像できないので、
消せない方がうれしいですねぇ。


今回はほとんど使っていないユーザを誤削除してしまったので、
あきらめもついたのですが、
毎日使っているユーザの場合は、どうにか復旧手段を考えねばならない。

ユーザを再作成後、旧ユーザのIDにUPDATEすればいいわけだが、
対象がどこまであるやら。


ソース改造とサーバ再起動は当面できないので、
View Customize Plugin でユーザー管理画面の「削除」ボタンを非表示かしようと思います。

#3 奈良 裕記8ヶ月前に更新

ユーザ削除時に、
models/user.rbの

  before_destroy :remove_references_before_destroy
  after_destroy :deliver_security_notification

.....
  # Removes references that are not handled by associations
  # Things that are not deleted are reassociated with the anonymous user
  def remove_references_before_destroy

も実行されます。
過去のデータはanonymous扱いになるので、confidentialなデータがあると不味そう。
変更経緯を追えなくなりますので、自分はロック一択です。

CALコスト削減等で、退職者を削除したい場合もあるでしょうが、
Redmineのユーザ数単位有料ソフトだとロックしたユーザID分はカウントしないものが多いかな?
(某プラグインはそう聞いたことがあります)

#4 奈良 裕記8ヶ月前に更新

  • 説明 を更新 (diff)

#5 前田 剛8ヶ月前に更新

もともとユーザーの削除機能は無かったのですが、要望が多く1.2.0で追加されました。
http://www.redmine.org/issues/7296

機能を消したら消したで反対意見が多く寄せられるのではないかと思います。一度追加した機能を消すのは大変です。

#6 奈良 裕記8ヶ月前に更新

何事も過去の背景は知っておくべきですね。

SPAM蔓延る環境だとdelete必須というのは理解できます。
自分の環境では考える必要ありませんが。
6751に+1してきます。

Advanced user administration
http://www.redmine.org/issues/6751

It would be nice if there were better ways to deal with deprecated/old/spam users, instead of just activating/locking them.

..

However, some organisations may want to keep a log of everything (prevent deletion).
In that case, this can perhaps be an option that only an Administrator can set.

Delete Users and automatically ticket change
http://www.redmine.org/issues/1572

1) In order to free the username for other users administrators should be allowed to find inactive users and delete them.

Allow deletion of Pending User, not yet activated
http://www.redmine.org/issues/3433

Accepting new users
http://www.redmine.org/boards/2/topics/5649

#7 中村 浩平8ヶ月前に更新

  • 説明 を更新 (diff)

そんなことがあったんですね。勉強になります。


View customize Plugin で削除ボタンを非表示化できたので、
説明欄にカスタマイズコードを張っておきました。

・ユーザー一覧ページ /redmine/users
・ユーザー編集画面 /redmine/users/XX/edit

の2箇所で削除ボタンの非表示化を確認しております。

ツイート: https://twitter.com/netazone/status/851994363425157121

#8 奈良 裕記8ヶ月前に更新

  • 説明 を更新 (diff)
  • 担当者 を削除 (奈良 裕記)
  • 対象バージョンソース修正対応 から Plugin対応済 に変更

#9 奈良 裕記8ヶ月前に更新

  • 説明 を更新 (diff)

他の形式にエクスポート: Atom PDF