| 
									
										
										
										
											2013-08-19 10:54:35 +00:00
										 |  |  | module OrbitModel | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   module Authorizable | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def self.included(base) | 
					
						
							|  |  |  |       base.class_eval do | 
					
						
							|  |  |  |         has_one :auth_approval, as: :approval_authorizable, dependent: :destroy | 
					
						
							|  |  |  |         has_one :auth_sub_manager, as: :sub_manager_authorizable, dependent: :destroy | 
					
						
							|  |  |  |         delegate :authorized_users, to: :auth_approval, prefix: true, allow_nil: true | 
					
						
							| 
									
										
										
										
											2013-10-15 15:38:16 +00:00
										 |  |  |         delegate :authorized_users, to: :auth_manager, prefix: true, allow_nil: true | 
					
						
							| 
									
										
										
										
											2013-08-19 10:54:35 +00:00
										 |  |  |         delegate :authorized_users, to: :auth_sub_manager, prefix: true, allow_nil: true | 
					
						
							|  |  |  |         send :include, InstanceMethods | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     module InstanceMethods | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     	# Normal case | 
					
						
							|  |  |  |     	# Use of categories to define approval and sub-manager | 
					
						
							|  |  |  | 	    def approval_users | 
					
						
							|  |  |  | 	    	auth_approval_authorized_users | 
					
						
							|  |  |  | 	    end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	    def sub_managers | 
					
						
							|  |  |  | 	    	auth_sub_manager_authorized_users | 
					
						
							|  |  |  | 	    end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     	def user_can_approve?(user) | 
					
						
							|  |  |  |     		approval_users.include?(user) if approval_users | 
					
						
							|  |  |  |     	end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     	def user_can_sub_manage?(user) | 
					
						
							|  |  |  |     		sub_managers.include?(user) if sub_managers | 
					
						
							|  |  |  |     	end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     	# Specific case | 
					
						
							|  |  |  |     	# Approval or sub-manager is defined on something else than categories | 
					
						
							|  |  |  | 	    def authorized_users_by_title(title) | 
					
						
							| 
									
										
										
										
											2013-10-31 08:15:08 +00:00
										 |  |  | 	    	return approval_users if auth_approval && auth_approval.title.eql?(title) | 
					
						
							|  |  |  | 	    	return sub_managers if auth_sub_manager && auth_sub_manager.title.eql?(title) | 
					
						
							| 
									
										
										
										
											2013-08-19 10:54:35 +00:00
										 |  |  | 	    end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	    def get_authorization_by_title(title) | 
					
						
							| 
									
										
										
										
											2013-10-31 08:15:08 +00:00
										 |  |  | 	    	return auth_approval if auth_approval && auth_approval.title.eql?(title) | 
					
						
							|  |  |  | 	    	return auth_sub_manager if auth_sub_manager && auth_sub_manager.title.eql?(title) | 
					
						
							| 
									
										
										
										
											2013-08-19 10:54:35 +00:00
										 |  |  | 	    end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     	def user_is_authorized_by_title?(user, title) | 
					
						
							|  |  |  |     		authorized_users_by_title(title).include?(user) | 
					
						
							|  |  |  |     	end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | end |