Feature: Ability to switch between multiple accounts (#881)
* Feature: Ability to switch between multiple accounts * Fix rubocop * Fix assigned inboxes * fix auth json * Add account switcher in UI * fix ordering on administrate * Add switch accounts to sidebar * add account id * Fix schema.rb timestamp * Revert "add account id" This reverts commit 27570f50ef584cb9a5f69454f43f630b318c8807. * Add a check for account Co-authored-by: Pranav Raj Sreepuram <pranavrajs@gmail.com>
This commit is contained in:
@@ -1,13 +1,13 @@
|
||||
class AccountPolicy < ApplicationPolicy
|
||||
def show?
|
||||
# FIXME : temporary hack to transition over to multiple accounts per user
|
||||
# We should be fetching the current account user relationship here.
|
||||
@user.administrator?
|
||||
@account_user.administrator? || @account_user.agent?
|
||||
end
|
||||
|
||||
def update?
|
||||
# FIXME : temporary hack to transition over to multiple accounts per user
|
||||
# We should be fetching the current account user relationship here.
|
||||
@user.administrator?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def update_active_at?
|
||||
true
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
class ApplicationPolicy
|
||||
attr_reader :user, :record
|
||||
attr_reader :user_context, :user, :record, :account, :account_user
|
||||
|
||||
def initialize(user, record)
|
||||
@user = user
|
||||
def initialize(user_context, record)
|
||||
@user_context = user_context = user_context
|
||||
@user = user_context[:user]
|
||||
@account = user_context[:account]
|
||||
@account_user = user_context[:account_user]
|
||||
@record = record
|
||||
end
|
||||
|
||||
@@ -35,14 +38,17 @@ class ApplicationPolicy
|
||||
end
|
||||
|
||||
def scope
|
||||
Pundit.policy_scope!(user, record.class)
|
||||
Pundit.policy_scope!(user_context, record.class)
|
||||
end
|
||||
|
||||
class Scope
|
||||
attr_reader :user, :scope
|
||||
attr_reader :user_context, :user, :scope, :account, :account_user
|
||||
|
||||
def initialize(user, scope)
|
||||
@user = user
|
||||
def initialize(user_context, scope)
|
||||
@user_context = user_context = user_context
|
||||
@user = user_context[:user]
|
||||
@account = user_context[:account]
|
||||
@account_user = user_context[:account_user]
|
||||
@scope = scope
|
||||
end
|
||||
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
class ContactPolicy < ApplicationPolicy
|
||||
def index?
|
||||
@user.administrator?
|
||||
true
|
||||
end
|
||||
|
||||
def update?
|
||||
@user.administrator?
|
||||
true
|
||||
end
|
||||
|
||||
def show?
|
||||
@user.administrator?
|
||||
true
|
||||
end
|
||||
|
||||
def create?
|
||||
|
||||
@@ -1,16 +1,19 @@
|
||||
class InboxPolicy < ApplicationPolicy
|
||||
class Scope
|
||||
attr_reader :user, :scope
|
||||
attr_reader :user_context, :user, :scope, :account, :account_user
|
||||
|
||||
def initialize(user, scope)
|
||||
@user = 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
|
||||
if user.administrator?
|
||||
if @account_user.administrator?
|
||||
scope.all
|
||||
elsif user.agent?
|
||||
elsif @account_user.agent?
|
||||
user.assigned_inboxes
|
||||
end
|
||||
end
|
||||
@@ -21,18 +24,18 @@ class InboxPolicy < ApplicationPolicy
|
||||
end
|
||||
|
||||
def create?
|
||||
@user.administrator?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def update?
|
||||
@user.administrator?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def destroy?
|
||||
@user.administrator?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def set_agent_bot?
|
||||
@user.administrator?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -4,14 +4,14 @@ class UserPolicy < ApplicationPolicy
|
||||
end
|
||||
|
||||
def create?
|
||||
@user.administrator?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def update?
|
||||
@user.administrator?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def destroy?
|
||||
@user.administrator?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
class WebhookPolicy < ApplicationPolicy
|
||||
def index?
|
||||
@user.administrator?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def update?
|
||||
@user.administrator?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def destroy?
|
||||
@user.administrator?
|
||||
@account_user.administrator?
|
||||
end
|
||||
|
||||
def create?
|
||||
@user.administrator?
|
||||
@account_user.administrator?
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user