forked from saurabh/orbit4-5
96 lines
3.5 KiB
Ruby
96 lines
3.5 KiB
Ruby
class Authorization
|
|
include Mongoid::Document
|
|
|
|
belongs_to :module_app
|
|
belongs_to :user
|
|
belongs_to :category
|
|
belongs_to :workgroup
|
|
belongs_to :role
|
|
|
|
scope :module_authorized_users, ->(module_app){ where(module_app_id: module_app) }
|
|
scope :category_authorized_users, ->(category){ where(category_id: category) }
|
|
|
|
|
|
def self.category_sub_managers(category)
|
|
workgroup = Workgroup.find_by(key: 'sub_managers')
|
|
category_authorizations = self.category_authorized_users(category).where(:user_id.ne => nil, :workgroup_id => workgroup.id).map {|a| a.user} rescue nil
|
|
category_authorzied_roles = self.category_authorized_users(category).where(:role_id.ne => nil).map {|a| a.role}.first rescue nil
|
|
users_authorized_by_roles = category_authorzied_roles.member_profiles.map {|u| u.user} rescue []
|
|
if users_authorized_by_roles.present?
|
|
category_authorizations.inject(users_authorized_by_roles, :<<) rescue []
|
|
else
|
|
category_authorizations
|
|
end
|
|
end
|
|
|
|
|
|
def self.category_role_sub_managers(category)
|
|
authorizations = self.category_authorized_users(category)
|
|
users = authorizations.map { |a| a.role if role.present? }
|
|
end
|
|
|
|
def self.create_module_authorization(module_app_id,user_id)
|
|
user = User.find(user_id)
|
|
workgroup = Workgroup.find_by(key: "managers")
|
|
module_app = ModuleApp.find(module_app_id)
|
|
if (user.is_admin? || user.is_manager?(module_app) || user.is_manager_with_role?(module_app))
|
|
puts "User Already Authorized"
|
|
else
|
|
a = self.create(module_app_id: module_app_id, user_id: user_id, workgroup_id: workgroup.id)
|
|
a.save
|
|
end
|
|
end
|
|
|
|
def self.create_category_authorization(module_app_id, category_id, user_id)
|
|
user = User.find(user_id)
|
|
workgroup = Workgroup.find_by(key: "sub_managers")
|
|
module_app = ModuleApp.find(module_app_id)
|
|
a = self.create(category_id: category_id, user_id: user_id, workgroup_id: workgroup.id)
|
|
a.save
|
|
end
|
|
|
|
def self.create_module_authorization_with_role(module_app_id,role_id)
|
|
current_auth = self.where(role_id: role_id, module_app_id: module_app_id)
|
|
workgroup = Workgroup.find_by(key: "managers")
|
|
module_app = ModuleApp.find(module_app_id)
|
|
if current_auth.present?
|
|
puts "User Already Authorized"
|
|
else
|
|
a = self.create(module_app_id: module_app_id, role_id: role_id, workgroup_id: workgroup.id)
|
|
a.save
|
|
end
|
|
end
|
|
|
|
def self.create_category_authorization_with_role(module_app_id,category_id,role_id)
|
|
current_auth = self.where(role_id: role_id, category_id: category_id)
|
|
workgroup = Workgroup.find_by(key: "sub_managers")
|
|
module_app = ModuleApp.find(module_app_id)
|
|
if current_auth.present?
|
|
puts "User Already Authorized"
|
|
else
|
|
a = self.create(category_id: category_id, role_id: role_id, workgroup_id: workgroup.id)
|
|
a.save
|
|
end
|
|
end
|
|
|
|
def self.remove_module_authorization(module_app_id,user_id)
|
|
auth = self.find_by(module_app_id: module_app_id, user_id: user_id) rescue nil
|
|
auth.destroy if !auth.nil?
|
|
end
|
|
|
|
def self.remove_category_authorization(category_id,user_id)
|
|
auth = self.find_by(category_id: category_id, user_id: user_id) rescue nil
|
|
auth.destroy if !auth.nil?
|
|
end
|
|
|
|
def self.remove_module_authorization_with_role(module_app_id,role_id)
|
|
auth = self.find_by(module_app_id: module_app_id, role_id: role_id) rescue nil
|
|
auth.destroy if !auth.nil?
|
|
end
|
|
|
|
def self.remove_category_authorization_with_role(category_id,role_id)
|
|
auth = self.find_by(category_id: category_id, role_id: role_id) rescue nil
|
|
auth.destroy if !auth.nil?
|
|
end
|
|
end
|