mirror of
https://github.com/discourse/discourse.git
synced 2024-11-30 07:53:39 +08:00
0733dda1cb
This patch introduces policy objects to chat services. It allows putting more complex logic in a dedicated class, which will make services thinner. It also allows providing a reason why the policy failed. Some change has been made to the service runner too to use more easily these new policy objects: when matching a failing policy (or any failing step actually), the result object is now provided to the block. This way, instead of having to access the reason why the policy failed by doing `result["result.policy.policy_name"].reason` inside the block, this one can be simply written like this: ```ruby on_failed_policy(:policy_name) { |policy| policy.reason } ```
20 lines
261 B
Ruby
20 lines
261 B
Ruby
# frozen_string_literal: true
|
|
|
|
class PolicyBase
|
|
attr_reader :context
|
|
|
|
delegate :guardian, to: :context
|
|
|
|
def initialize(context)
|
|
@context = context
|
|
end
|
|
|
|
def call
|
|
raise "Not implemented"
|
|
end
|
|
|
|
def reason
|
|
raise "Not implemented"
|
|
end
|
|
end
|