orbit4-5/app/models/authorization.rb

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