Restructure omni services and add Chatwoot research snapshot
This commit is contained in:
37
research/chatwoot/app/policies/account_policy.rb
Normal file
37
research/chatwoot/app/policies/account_policy.rb
Normal file
@@ -0,0 +1,37 @@
|
||||
class AccountPolicy < ApplicationPolicy
|
||||
def show?
|
||||
@account_user.administrator? || @account_user.agent?
|
||||
end
|
||||
|
||||
def cache_keys?
|
||||
@account_user.administrator? || @account_user.agent?
|
||||
end
|
||||
|
||||
def limits?
|
||||
@account_user.administrator? || @account_user.agent?
|
||||
end
|
||||
|
||||
def update?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def update_active_at?
|
||||
true
|
||||
end
|
||||
|
||||
def subscription?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def checkout?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def toggle_deletion?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def topup_checkout?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
29
research/chatwoot/app/policies/agent_bot_policy.rb
Normal file
29
research/chatwoot/app/policies/agent_bot_policy.rb
Normal file
@@ -0,0 +1,29 @@
|
||||
class AgentBotPolicy < ApplicationPolicy
|
||||
def index?
|
||||
@account_user.administrator? || @account_user.agent?
|
||||
end
|
||||
|
||||
def update?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def show?
|
||||
@account_user.administrator? || @account_user.agent?
|
||||
end
|
||||
|
||||
def create?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def destroy?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def avatar?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def reset_access_token?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
59
research/chatwoot/app/policies/application_policy.rb
Normal file
59
research/chatwoot/app/policies/application_policy.rb
Normal file
@@ -0,0 +1,59 @@
|
||||
class ApplicationPolicy
|
||||
attr_reader :user_context, :user, :record, :account, :account_user
|
||||
|
||||
def initialize(user_context, record)
|
||||
@user_context = user_context
|
||||
@user = user_context[:user]
|
||||
@account = user_context[:account]
|
||||
@account_user = user_context[:account_user]
|
||||
@record = record
|
||||
end
|
||||
|
||||
def index?
|
||||
false
|
||||
end
|
||||
|
||||
def show?
|
||||
scope.exists?(id: record.id)
|
||||
end
|
||||
|
||||
def create?
|
||||
false
|
||||
end
|
||||
|
||||
def new?
|
||||
create?
|
||||
end
|
||||
|
||||
def update?
|
||||
false
|
||||
end
|
||||
|
||||
def edit?
|
||||
update?
|
||||
end
|
||||
|
||||
def destroy?
|
||||
false
|
||||
end
|
||||
|
||||
def scope
|
||||
Pundit.policy_scope!(user_context, record.class)
|
||||
end
|
||||
|
||||
class Scope
|
||||
attr_reader :user_context, :user, :scope, :account, :account_user
|
||||
|
||||
def initialize(user_context, scope)
|
||||
@user_context = user_context
|
||||
@user = user_context[:user]
|
||||
@account = user_context[:account]
|
||||
@account_user = user_context[:account_user]
|
||||
@scope = scope
|
||||
end
|
||||
|
||||
def resolve
|
||||
scope
|
||||
end
|
||||
end
|
||||
end
|
||||
31
research/chatwoot/app/policies/article_policy.rb
Normal file
31
research/chatwoot/app/policies/article_policy.rb
Normal file
@@ -0,0 +1,31 @@
|
||||
class ArticlePolicy < ApplicationPolicy
|
||||
def index?
|
||||
@account.users.include?(@user)
|
||||
end
|
||||
|
||||
def update?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def show?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def edit?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def create?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def destroy?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def reorder?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
|
||||
ArticlePolicy.prepend_mod_with('ArticlePolicy')
|
||||
21
research/chatwoot/app/policies/assignment_policy_policy.rb
Normal file
21
research/chatwoot/app/policies/assignment_policy_policy.rb
Normal file
@@ -0,0 +1,21 @@
|
||||
class AssignmentPolicyPolicy < ApplicationPolicy
|
||||
def index?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def show?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def create?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def update?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def destroy?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
25
research/chatwoot/app/policies/automation_rule_policy.rb
Normal file
25
research/chatwoot/app/policies/automation_rule_policy.rb
Normal file
@@ -0,0 +1,25 @@
|
||||
class AutomationRulePolicy < ApplicationPolicy
|
||||
def index?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def create?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def show?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def update?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def clone?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def destroy?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
21
research/chatwoot/app/policies/campaign_policy.rb
Normal file
21
research/chatwoot/app/policies/campaign_policy.rb
Normal file
@@ -0,0 +1,21 @@
|
||||
class CampaignPolicy < ApplicationPolicy
|
||||
def index?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def update?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def show?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def create?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def destroy?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
21
research/chatwoot/app/policies/captain/tasks_policy.rb
Normal file
21
research/chatwoot/app/policies/captain/tasks_policy.rb
Normal file
@@ -0,0 +1,21 @@
|
||||
class Captain::TasksPolicy < ApplicationPolicy
|
||||
def rewrite?
|
||||
true
|
||||
end
|
||||
|
||||
def summarize?
|
||||
true
|
||||
end
|
||||
|
||||
def reply_suggestion?
|
||||
true
|
||||
end
|
||||
|
||||
def label_suggestion?
|
||||
true
|
||||
end
|
||||
|
||||
def follow_up?
|
||||
true
|
||||
end
|
||||
end
|
||||
27
research/chatwoot/app/policies/category_policy.rb
Normal file
27
research/chatwoot/app/policies/category_policy.rb
Normal file
@@ -0,0 +1,27 @@
|
||||
class CategoryPolicy < ApplicationPolicy
|
||||
def index?
|
||||
@account.users.include?(@user)
|
||||
end
|
||||
|
||||
def update?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def show?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def edit?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def create?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def destroy?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
|
||||
CategoryPolicy.prepend_mod_with('CategoryPolicy')
|
||||
53
research/chatwoot/app/policies/contact_policy.rb
Normal file
53
research/chatwoot/app/policies/contact_policy.rb
Normal file
@@ -0,0 +1,53 @@
|
||||
class ContactPolicy < ApplicationPolicy
|
||||
def index?
|
||||
true
|
||||
end
|
||||
|
||||
def active?
|
||||
true
|
||||
end
|
||||
|
||||
def import?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def export?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def search?
|
||||
true
|
||||
end
|
||||
|
||||
def filter?
|
||||
true
|
||||
end
|
||||
|
||||
def update?
|
||||
true
|
||||
end
|
||||
|
||||
def contactable_inboxes?
|
||||
true
|
||||
end
|
||||
|
||||
def destroy_custom_attributes?
|
||||
true
|
||||
end
|
||||
|
||||
def show?
|
||||
true
|
||||
end
|
||||
|
||||
def create?
|
||||
true
|
||||
end
|
||||
|
||||
def avatar?
|
||||
true
|
||||
end
|
||||
|
||||
def destroy?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
47
research/chatwoot/app/policies/conversation_policy.rb
Normal file
47
research/chatwoot/app/policies/conversation_policy.rb
Normal file
@@ -0,0 +1,47 @@
|
||||
class ConversationPolicy < ApplicationPolicy
|
||||
def index?
|
||||
true
|
||||
end
|
||||
|
||||
def destroy?
|
||||
administrator?
|
||||
end
|
||||
|
||||
def show?
|
||||
administrator? || agent_bot? || agent_can_view_conversation?
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def agent_can_view_conversation?
|
||||
inbox_access? || team_access?
|
||||
end
|
||||
|
||||
def administrator?
|
||||
account_user&.administrator?
|
||||
end
|
||||
|
||||
def agent_bot?
|
||||
user.is_a?(AgentBot)
|
||||
end
|
||||
|
||||
def inbox_access?
|
||||
user.inboxes.where(account_id: account&.id).exists?(id: record.inbox_id)
|
||||
end
|
||||
|
||||
def team_access?
|
||||
return false if record.team_id.blank?
|
||||
|
||||
user.teams.where(account_id: account&.id).exists?(id: record.team_id)
|
||||
end
|
||||
|
||||
def assigned_to_user?
|
||||
record.assignee_id == user.id
|
||||
end
|
||||
|
||||
def participant?
|
||||
record.conversation_participants.exists?(user_id: user.id)
|
||||
end
|
||||
end
|
||||
|
||||
ConversationPolicy.prepend_mod_with('ConversationPolicy')
|
||||
@@ -0,0 +1,15 @@
|
||||
class CsatSurveyResponsePolicy < ApplicationPolicy
|
||||
def index?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def metrics?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def download?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
|
||||
CsatSurveyResponsePolicy.prepend_mod_with('CsatSurveyResponsePolicy')
|
||||
21
research/chatwoot/app/policies/custom_filter_policy.rb
Normal file
21
research/chatwoot/app/policies/custom_filter_policy.rb
Normal file
@@ -0,0 +1,21 @@
|
||||
class CustomFilterPolicy < ApplicationPolicy
|
||||
def create?
|
||||
@account_user.administrator? || @account_user.agent?
|
||||
end
|
||||
|
||||
def show?
|
||||
@account_user.administrator? || @account_user.agent?
|
||||
end
|
||||
|
||||
def index?
|
||||
@account_user.administrator? || @account_user.agent?
|
||||
end
|
||||
|
||||
def update?
|
||||
@account_user.administrator? || @account_user.agent?
|
||||
end
|
||||
|
||||
def destroy?
|
||||
@account_user.administrator? || @account_user.agent?
|
||||
end
|
||||
end
|
||||
17
research/chatwoot/app/policies/hook_policy.rb
Normal file
17
research/chatwoot/app/policies/hook_policy.rb
Normal file
@@ -0,0 +1,17 @@
|
||||
class HookPolicy < ApplicationPolicy
|
||||
def create?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def update?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def process_event?
|
||||
true
|
||||
end
|
||||
|
||||
def destroy?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
68
research/chatwoot/app/policies/inbox_policy.rb
Normal file
68
research/chatwoot/app/policies/inbox_policy.rb
Normal file
@@ -0,0 +1,68 @@
|
||||
class InboxPolicy < ApplicationPolicy
|
||||
class Scope
|
||||
attr_reader :user_context, :user, :scope, :account, :account_user
|
||||
|
||||
def initialize(user_context, scope)
|
||||
@user_context = user_context
|
||||
@user = user_context[:user]
|
||||
@account = user_context[:account]
|
||||
@account_user = user_context[:account_user]
|
||||
@scope = scope
|
||||
end
|
||||
|
||||
def resolve
|
||||
user.assigned_inboxes
|
||||
end
|
||||
end
|
||||
|
||||
def index?
|
||||
true
|
||||
end
|
||||
|
||||
def show?
|
||||
# FIXME: for agent bots, lets bring this validation to policies as well in future
|
||||
return true if @user.is_a?(AgentBot)
|
||||
|
||||
Current.user.assigned_inboxes.include? record
|
||||
end
|
||||
|
||||
def assignable_agents?
|
||||
true
|
||||
end
|
||||
|
||||
def agent_bot?
|
||||
true
|
||||
end
|
||||
|
||||
def campaigns?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def create?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def update?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def destroy?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def set_agent_bot?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def avatar?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def sync_templates?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def health?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
21
research/chatwoot/app/policies/label_policy.rb
Normal file
21
research/chatwoot/app/policies/label_policy.rb
Normal file
@@ -0,0 +1,21 @@
|
||||
class LabelPolicy < ApplicationPolicy
|
||||
def index?
|
||||
@account_user.administrator? || @account_user.agent?
|
||||
end
|
||||
|
||||
def update?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def show?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def create?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def destroy?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
37
research/chatwoot/app/policies/macro_policy.rb
Normal file
37
research/chatwoot/app/policies/macro_policy.rb
Normal file
@@ -0,0 +1,37 @@
|
||||
class MacroPolicy < ApplicationPolicy
|
||||
def index?
|
||||
true
|
||||
end
|
||||
|
||||
def create?
|
||||
true
|
||||
end
|
||||
|
||||
def show?
|
||||
@record.global? || author?
|
||||
end
|
||||
|
||||
def update?
|
||||
author? || (@account_user.administrator? && @record.global?)
|
||||
end
|
||||
|
||||
def destroy?
|
||||
author? || orphan_record?
|
||||
end
|
||||
|
||||
def execute?
|
||||
@record.global? || author?
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def author?
|
||||
@record.created_by == @account_user.user
|
||||
end
|
||||
|
||||
def orphan_record?
|
||||
return @account_user.administrator? if @record.created_by.nil? && @record.global?
|
||||
|
||||
false
|
||||
end
|
||||
end
|
||||
39
research/chatwoot/app/policies/portal_policy.rb
Normal file
39
research/chatwoot/app/policies/portal_policy.rb
Normal file
@@ -0,0 +1,39 @@
|
||||
class PortalPolicy < ApplicationPolicy
|
||||
def index?
|
||||
@account.users.include?(@user)
|
||||
end
|
||||
|
||||
def update?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def show?
|
||||
@account.users.include?(@user)
|
||||
end
|
||||
|
||||
def edit?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def create?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def destroy?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def logo?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def send_instructions?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def ssl_status?
|
||||
@account.users.include?(@user)
|
||||
end
|
||||
end
|
||||
|
||||
PortalPolicy.prepend_mod_with('PortalPolicy')
|
||||
7
research/chatwoot/app/policies/report_policy.rb
Normal file
7
research/chatwoot/app/policies/report_policy.rb
Normal file
@@ -0,0 +1,7 @@
|
||||
class ReportPolicy < ApplicationPolicy
|
||||
def view?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
|
||||
ReportPolicy.prepend_mod_with('ReportPolicy')
|
||||
17
research/chatwoot/app/policies/team_member_policy.rb
Normal file
17
research/chatwoot/app/policies/team_member_policy.rb
Normal file
@@ -0,0 +1,17 @@
|
||||
class TeamMemberPolicy < ApplicationPolicy
|
||||
def index?
|
||||
true
|
||||
end
|
||||
|
||||
def create?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def destroy?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def update?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
21
research/chatwoot/app/policies/team_policy.rb
Normal file
21
research/chatwoot/app/policies/team_policy.rb
Normal file
@@ -0,0 +1,21 @@
|
||||
class TeamPolicy < ApplicationPolicy
|
||||
def index?
|
||||
true
|
||||
end
|
||||
|
||||
def update?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def show?
|
||||
true
|
||||
end
|
||||
|
||||
def create?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def destroy?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
21
research/chatwoot/app/policies/user_policy.rb
Normal file
21
research/chatwoot/app/policies/user_policy.rb
Normal file
@@ -0,0 +1,21 @@
|
||||
class UserPolicy < ApplicationPolicy
|
||||
def index?
|
||||
true
|
||||
end
|
||||
|
||||
def create?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def update?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def destroy?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def bulk_create?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
17
research/chatwoot/app/policies/webhook_policy.rb
Normal file
17
research/chatwoot/app/policies/webhook_policy.rb
Normal file
@@ -0,0 +1,17 @@
|
||||
class WebhookPolicy < ApplicationPolicy
|
||||
def index?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def update?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def destroy?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def create?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user