46 lines
1.3 KiB
Ruby
46 lines
1.3 KiB
Ruby
|
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
|
||
|
|
||
|
class KnowledgeBase::PermissionsController < ApplicationController
|
||
|
prepend_before_action :authentication_check
|
||
|
before_action :fetch_object
|
||
|
|
||
|
def show
|
||
|
render json: response_hash
|
||
|
end
|
||
|
|
||
|
def update
|
||
|
permissions_params = params.require(:permissions_dialog).permit(permissions: {})
|
||
|
|
||
|
KnowledgeBase::PermissionsUpdate.new(@object, current_user).update_using_params!(permissions_params)
|
||
|
|
||
|
render json: response_hash
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def fetch_object
|
||
|
if params[:knowledge_base_id]
|
||
|
@object = KnowledgeBase::Category.includes(:permissions).find params[:id]
|
||
|
authorize @object, :permissions?
|
||
|
else
|
||
|
@object = KnowledgeBase.includes(:permissions).find params[:id]
|
||
|
authorize @object, :update?
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def parent_object
|
||
|
return if !@object.is_a? KnowledgeBase::Category
|
||
|
|
||
|
@object.parent || @object.knowledge_base
|
||
|
end
|
||
|
|
||
|
def response_hash
|
||
|
{
|
||
|
roles_reader: Role.with_permissions('knowledge_base.reader').pluck_as_hash(:id, :name),
|
||
|
roles_editor: Role.with_permissions('knowledge_base.editor').pluck_as_hash(:id, :name),
|
||
|
permissions: @object.permissions_effective.pluck_as_hash(:id, :access, :role_id),
|
||
|
inherited: parent_object&.permissions_effective&.pluck_as_hash(:id, :access, :role_id)
|
||
|
}
|
||
|
end
|
||
|
end
|