Cannot unlock a folder despite :force_file_unlock permission #1265
This commit is contained in:
parent
7c45b8a752
commit
30664c84dc
@ -39,8 +39,8 @@ class DmsfContextMenusController < ApplicationController
|
|||||||
@locked = @dmsf_folder.locked?
|
@locked = @dmsf_folder.locked?
|
||||||
@project = @dmsf_folder.project
|
@project = @dmsf_folder.project
|
||||||
@allowed = User.current.allowed_to?(:folder_manipulation, @project)
|
@allowed = User.current.allowed_to?(:folder_manipulation, @project)
|
||||||
@unlockable = @allowed && @dmsf_folder.unlockable? && (!@dmsf_folder.locked_for_user?) &&
|
@unlockable = @allowed && @dmsf_folder.unlockable? && (!@dmsf_folder.locked_for_user? ||
|
||||||
User.current.allowed_to?(:force_file_unlock, @project)
|
User.current.allowed_to?(:force_file_unlock, @project))
|
||||||
@email_allowed = User.current.allowed_to?(:email_documents, @project)
|
@email_allowed = User.current.allowed_to?(:email_documents, @project)
|
||||||
elsif @dmsf_link # url link
|
elsif @dmsf_link # url link
|
||||||
@locked = false
|
@locked = false
|
||||||
|
|||||||
@ -82,7 +82,7 @@ module RedmineDmsf
|
|||||||
def unlockable?
|
def unlockable?
|
||||||
return false unless self.locked?
|
return false unless self.locked?
|
||||||
existing = self.lock(true)
|
existing = self.lock(true)
|
||||||
# If its empty its a folder that's locked (not root)
|
# If it's empty, it's a folder that's locked (not root)
|
||||||
(existing.empty? || (self.dmsf_folder&.locked?)) ? false : true
|
(existing.empty? || (self.dmsf_folder&.locked?)) ? false : true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -216,6 +216,23 @@ class DmsfContextMenusControllerTest < RedmineDmsf::Test::TestCase
|
|||||||
assert_select 'a.icon-del.disabled', text: l(:button_delete)
|
assert_select 'a.icon-del.disabled', text: l(:button_delete)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_dmsf_folder_locked_force_unlock_permission_off
|
||||||
|
@request.session[:user_id] = @dlopper.id
|
||||||
|
get :dmsf, params: { id: @folder2.project.id, ids: ["folder-#{@folder2.id}"] }
|
||||||
|
assert_response :success
|
||||||
|
# @folder2 is locked by @jsmith, therefore @dlopper can't unlock it
|
||||||
|
assert_select 'a.icon-unlock.disabled', text: l(:button_unlock)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_dmsf_folder_locked_force_unlock_permission_om
|
||||||
|
@request.session[:user_id] = @dlopper.id
|
||||||
|
@role_developer.add_permission! :force_file_unlock
|
||||||
|
get :dmsf, params: { id: @folder2.project.id, ids: ["folder-#{@folder2.id}"] }
|
||||||
|
assert_response :success
|
||||||
|
# @folder2 is locked by @jsmith, but @dlopper can unlock it
|
||||||
|
assert_select 'a.icon-unlock.disabled', text: l(:button_unlock), count: 0
|
||||||
|
end
|
||||||
|
|
||||||
def test_dmsf_folder_notification_on
|
def test_dmsf_folder_notification_on
|
||||||
@folder5.notify_activate
|
@folder5.notify_activate
|
||||||
get :dmsf, params: { id: @folder5.project.id, ids: ["folder-#{@folder5.id}"] }
|
get :dmsf, params: { id: @folder5.project.id, ids: ["folder-#{@folder5.id}"] }
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user