FEATURE: created edit and delete flags (#27484)

Allow admins to create edit and delete flags.
This commit is contained in:
Krzysztof Kotlarek
2024-07-03 08:45:37 +10:00
committed by GitHub
parent a86590ffd6
commit c3fadc7330
43 changed files with 1112 additions and 42 deletions

View File

@@ -2,7 +2,7 @@
class Admin::Config::FlagsController < Admin::AdminController
def toggle
with_service(ToggleFlag) do
with_service(Flags::ToggleFlag) do
on_success do
Discourse.request_refresh!
render(json: success_json)
@@ -19,8 +19,45 @@ class Admin::Config::FlagsController < Admin::AdminController
def index
end
def new
end
def edit
end
def create
with_service(Flags::CreateFlag) do
on_success do
Discourse.request_refresh!
render json: result.flag, serializer: FlagSerializer
end
on_failure { render(json: failed_json, status: 422) }
on_failed_policy(:invalid_access) { raise Discourse::InvalidAccess }
on_failed_contract do |contract|
render(json: failed_json.merge(errors: contract.errors.full_messages), status: 400)
end
end
end
def update
with_service(Flags::UpdateFlag) do
on_success do
Discourse.request_refresh!
render json: result.flag, serializer: FlagSerializer
end
on_failure { render(json: failed_json, status: 422) }
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_contract do |contract|
render(json: failed_json.merge(errors: contract.errors.full_messages), status: 400)
end
end
end
def reorder
with_service(ReorderFlag) do
with_service(Flags::ReorderFlag) do
on_success do
Discourse.request_refresh!
render(json: success_json)
@@ -34,4 +71,20 @@ class Admin::Config::FlagsController < Admin::AdminController
end
end
end
def destroy
with_service(Flags::DestroyFlag) do
on_success do
Discourse.request_refresh!
render(json: success_json)
end
on_failure { render(json: failed_json, status: 422) }
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: 400)
end
end
end
end