mirror of
https://gh.wpcy.net/https://github.com/discourse/discourse.git
synced 2026-05-08 02:18:34 +08:00
92 lines
3.3 KiB
Ruby
92 lines
3.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class Admin::Config::FlagsController < Admin::AdminController
|
|
def toggle
|
|
Flags::ToggleFlag.call(service_params) do
|
|
on_success do
|
|
Discourse.request_refresh!
|
|
render(json: success_json)
|
|
end
|
|
on_failure { render(json: failed_json, status: :unprocessable_entity) }
|
|
on_model_not_found(:message) { raise Discourse::NotFound }
|
|
on_failed_policy(:invalid_access) { raise Discourse::InvalidAccess }
|
|
on_failed_contract do |contract|
|
|
render(json: failed_json.merge(errors: contract.errors.full_messages), status: :bad_request)
|
|
end
|
|
end
|
|
end
|
|
|
|
def index
|
|
end
|
|
|
|
def new
|
|
end
|
|
|
|
def edit
|
|
end
|
|
|
|
def create
|
|
Flags::CreateFlag.call(service_params) do
|
|
on_success do |flag:|
|
|
Discourse.request_refresh!
|
|
render json: flag, serializer: FlagSerializer
|
|
end
|
|
on_failure { render(json: failed_json, status: :unprocessable_entity) }
|
|
on_failed_policy(:invalid_access) { raise Discourse::InvalidAccess }
|
|
on_failed_policy(:unique_name) { render_json_error(I18n.t("flags.errors.unique_name")) }
|
|
on_failed_contract do |contract|
|
|
render(json: failed_json.merge(errors: contract.errors.full_messages), status: :bad_request)
|
|
end
|
|
end
|
|
end
|
|
|
|
def update
|
|
Flags::UpdateFlag.call(service_params) do
|
|
on_success do |flag:|
|
|
Discourse.request_refresh!
|
|
render json: flag, serializer: FlagSerializer
|
|
end
|
|
on_failure { render(json: failed_json, status: :unprocessable_entity) }
|
|
on_model_not_found(:message) { raise Discourse::NotFound }
|
|
on_failed_policy(:not_system) { render_json_error(I18n.t("flags.errors.system")) }
|
|
on_failed_policy(:not_used) { render_json_error(I18n.t("flags.errors.used")) }
|
|
on_failed_policy(:invalid_access) { raise Discourse::InvalidAccess }
|
|
on_failed_policy(:unique_name) { render_json_error(I18n.t("flags.errors.unique_name")) }
|
|
on_failed_contract do |contract|
|
|
render(json: failed_json.merge(errors: contract.errors.full_messages), status: :bad_request)
|
|
end
|
|
end
|
|
end
|
|
|
|
def reorder
|
|
Flags::ReorderFlag.call(service_params) do
|
|
on_success do
|
|
Discourse.request_refresh!
|
|
render(json: success_json)
|
|
end
|
|
on_failure { render(json: failed_json, status: :unprocessable_entity) }
|
|
on_model_not_found(:message) { raise Discourse::NotFound }
|
|
on_failed_policy(:invalid_access) { raise Discourse::InvalidAccess }
|
|
on_failed_policy(:invalid_move) { render_json_error(I18n.t("flags.errors.wrong_move")) }
|
|
on_failed_contract do |contract|
|
|
render(json: failed_json.merge(errors: contract.errors.full_messages), status: :bad_request)
|
|
end
|
|
end
|
|
end
|
|
|
|
def destroy
|
|
Flags::DestroyFlag.call(service_params) do
|
|
on_success do
|
|
Discourse.request_refresh!
|
|
render(json: success_json)
|
|
end
|
|
on_failure { render(json: failed_json, status: :unprocessable_entity) }
|
|
on_failed_policy(:not_system) { render_json_error(I18n.t("flags.errors.system")) }
|
|
on_failed_policy(:not_used) { render_json_error(I18n.t("flags.errors.used")) }
|
|
on_failed_policy(:invalid_access) { raise Discourse::InvalidAccess }
|
|
on_failed_contract do |contract|
|
|
render(json: failed_json.merge(errors: contract.errors.full_messages), status: :bad_request)
|
|
end
|
|
end
|
|
end
|
|
end
|