Project

General

Profile

Actions

QA #313

open

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

Added by 奈良 裕記 over 4 years ago. Updated 5 months ago.

Status:
回答済
Priority:
通常
Assignee:
-
Category:
Permission
Target version:
Start date:
04/06/2017
Due date:
% Done:

0%

Estimated time:

Description

■現象/要望

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

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

■解決策

下記4案有

0.Redmine本家-ユーザーとプロジェクトの誤削除防止対策
.
Redmine 4.2 / RedMica 1.3より、ユーザーとプロジェクトの誤削除防止対策が組み込まれます。
ユーザー削除のときはログインID、プロジェクト削除のときはプロジェクト識別子の入力が確認画面で必要になります。
https://redmine.tokyo/issues/313#note-12

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;
}

「削除」を非表示、adminのみ削除可能(viewcustomize)
https://qiita.com/aj15_aj15/items/2edfac149fe0944ac556

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

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

■対応状況

0.ユーザーとプロジェクトの誤削除防止対策組込(Redmine 4.2 / RedMica 1.3)
https://www.redmine.org/issues/34417

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

■補足

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

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


Files

clipboard-202012101548-yrnlc.png (172 KB) clipboard-202012101548-yrnlc.png 前田 剛, 12/10/2020 03:48 PM
Actions #1

Updated by 前田 剛 over 4 years ago

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

こんな感じで。

user_deletion: false
Actions #2

Updated by 中村 浩平 over 4 years ago

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


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

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


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

Actions #3

Updated by 奈良 裕記 over 4 years ago

ユーザ削除時に、
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分はカウントしないものが多いかな?
(某プラグインはそう聞いたことがあります)

Actions #4

Updated by 奈良 裕記 over 4 years ago

  • Description updated (diff)
Actions #5

Updated by 前田 剛 over 4 years ago

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

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

Actions #6

Updated by 奈良 裕記 over 4 years ago

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

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

Actions #7

Updated by 中村 浩平 over 4 years ago

  • Description updated (diff)

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


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

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

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

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

Actions #8

Updated by 奈良 裕記 over 4 years ago

  • Description updated (diff)
  • Assignee deleted (奈良 裕記)
  • Target version changed from ソース修正対応 to Plugin対応済
Actions #9

Updated by 奈良 裕記 over 4 years ago

  • Description updated (diff)
Actions #10

Updated by 奈良 裕記 almost 2 years ago

  • Description updated (diff)
Actions #11

Updated by 奈良 裕記 almost 2 years ago

  • Description updated (diff)
Actions #12

Updated by 前田 剛 10 months ago

Redmine 4.2 / RedMica 1.3より、ユーザーとプロジェクトの誤削除防止対策が組み込まれます。

ユーザー削除のときはログインID、プロジェクト削除のときはプロジェクト識別子の入力が確認画面で必要になります。

Patch #34417: Require explicit confirmation when deleting a user or a project

Actions #13

Updated by 奈良 裕記 10 months ago

  • Description updated (diff)
Actions #14

Updated by 奈良 裕記 9 months ago

  • Description updated (diff)
Actions #15

Updated by 奈良 裕記 5 months ago

  • Description updated (diff)
Actions

Also available in: Atom PDF