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