Initial commit: Add logistics and order_detail message types
Some checks failed
Lock Threads / action (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Publish Chatwoot EE docker images / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Publish Chatwoot EE docker images / build (linux/arm64, ubuntu-22.04-arm) (push) Has been cancelled
Publish Chatwoot EE docker images / merge (push) Has been cancelled
Publish Chatwoot CE docker images / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Publish Chatwoot CE docker images / build (linux/arm64, ubuntu-22.04-arm) (push) Has been cancelled
Publish Chatwoot CE docker images / merge (push) Has been cancelled
Run Chatwoot CE spec / lint-backend (push) Has been cancelled
Run Chatwoot CE spec / lint-frontend (push) Has been cancelled
Run Chatwoot CE spec / frontend-tests (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (0, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (1, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (10, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (11, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (12, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (13, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (14, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (15, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (2, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (3, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (4, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (5, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (6, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (7, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (8, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (9, 16) (push) Has been cancelled
Run Linux nightly installer / nightly (push) Has been cancelled
Some checks failed
Lock Threads / action (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Publish Chatwoot EE docker images / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Publish Chatwoot EE docker images / build (linux/arm64, ubuntu-22.04-arm) (push) Has been cancelled
Publish Chatwoot EE docker images / merge (push) Has been cancelled
Publish Chatwoot CE docker images / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Publish Chatwoot CE docker images / build (linux/arm64, ubuntu-22.04-arm) (push) Has been cancelled
Publish Chatwoot CE docker images / merge (push) Has been cancelled
Run Chatwoot CE spec / lint-backend (push) Has been cancelled
Run Chatwoot CE spec / lint-frontend (push) Has been cancelled
Run Chatwoot CE spec / frontend-tests (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (0, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (1, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (10, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (11, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (12, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (13, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (14, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (15, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (2, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (3, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (4, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (5, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (6, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (7, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (8, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (9, 16) (push) Has been cancelled
Run Linux nightly installer / nightly (push) Has been cancelled
- Add Logistics component with progress tracking - Add OrderDetail component for order information - Support data-driven steps and actions - Add blue color scale to widget SCSS - Fix node overflow and progress bar rendering issues - Add English translations for dashboard components Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
37
app/policies/account_policy.rb
Normal file
37
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
app/policies/agent_bot_policy.rb
Normal file
29
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
app/policies/application_policy.rb
Normal file
59
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
app/policies/article_policy.rb
Normal file
31
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
app/policies/assignment_policy_policy.rb
Normal file
21
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
app/policies/automation_rule_policy.rb
Normal file
25
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
app/policies/campaign_policy.rb
Normal file
21
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
|
||||
27
app/policies/category_policy.rb
Normal file
27
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
app/policies/contact_policy.rb
Normal file
53
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
app/policies/conversation_policy.rb
Normal file
47
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')
|
||||
15
app/policies/csat_survey_response_policy.rb
Normal file
15
app/policies/csat_survey_response_policy.rb
Normal file
@@ -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
app/policies/custom_filter_policy.rb
Normal file
21
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
app/policies/hook_policy.rb
Normal file
17
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
app/policies/inbox_policy.rb
Normal file
68
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
app/policies/label_policy.rb
Normal file
21
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
app/policies/macro_policy.rb
Normal file
37
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
app/policies/portal_policy.rb
Normal file
39
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
app/policies/report_policy.rb
Normal file
7
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
app/policies/team_member_policy.rb
Normal file
17
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
app/policies/team_policy.rb
Normal file
21
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
app/policies/user_policy.rb
Normal file
21
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
app/policies/webhook_policy.rb
Normal file
17
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