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:
Sojan Jose
2020-05-26 22:38:48 +05:30
committed by GitHub
parent b1aab228ae
commit b7a583b2c4
64 changed files with 441 additions and 212 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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?

View File

@@ -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

View File

@@ -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

View File

@@ -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