First complete with manager and submanager
This commit is contained in:
		
							parent
							
								
									4df8ab6cc3
								
							
						
					
					
						commit
						4ed8a2164c
					
				|  | @ -1,7 +1,7 @@ | |||
| class Admin::AppAuthsController < ApplicationController | ||||
|   layout "admin" | ||||
|   before_filter :authenticate_user! | ||||
|   before_filter :is_admin? | ||||
| #  before_filter :is_admin? ,:only => :index | ||||
|    | ||||
|   def index | ||||
|     # @roles = Role.all.entries | ||||
|  | @ -12,13 +12,17 @@ class Admin::AppAuthsController < ApplicationController | |||
|     #   obj_auth = obj.send  "auth" | ||||
|     #   [:app_obj => app,:auth_field => obj_auth] | ||||
|     # end | ||||
|     @module_apps = ModuleApp.all | ||||
|     if current_user.admin? | ||||
|       @module_apps = ModuleApp.all | ||||
|     else | ||||
|       @module_apps = current_user.managing_apps.collect{|t| t.managing_app} | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def edit | ||||
|     @module_app = ModuleApp.find(params[:id]) | ||||
|   end | ||||
|    | ||||
| 
 | ||||
|    | ||||
| 
 | ||||
| end | ||||
|  | @ -37,7 +37,7 @@ class Admin::ModuleAppsController < ApplicationController | |||
|    | ||||
|    | ||||
|   def assign_sub_manager | ||||
|       unless @assign_to_user.nil? | ||||
|       unless @assign_to_user.nil? || @assign_to_user.admin? | ||||
|          if @module_app.assign_sub_manager(@assign_to_user,current_user) | ||||
|             flash[:notice] = t('admin.app_auth.assigning_manager.add_sub_manager_ok') | ||||
|           else | ||||
|  | @ -46,12 +46,13 @@ class Admin::ModuleAppsController < ApplicationController | |||
|         else | ||||
|           flash[:notice] = t('admin.app_auth.assigning_manager.failed_no_user') | ||||
|       end | ||||
|          redirect_to :action => "edit" | ||||
|         flash[:notice] = t('admin.app_auth.can_not_add_this_user') | ||||
|         redirect_to :action => "edit" | ||||
|   end | ||||
|    | ||||
|    | ||||
|   def assign_manager | ||||
|     unless @assign_to_user.nil? | ||||
|     unless @assign_to_user.nil? || @assign_to_user.admin? | ||||
|        if @module_app.assign_manager(@assign_to_user,current_user) | ||||
|           flash[:notice] = t('admin.app_auth.assigning_sub_manager.add_manager_ok') | ||||
|         else | ||||
|  | @ -60,11 +61,13 @@ class Admin::ModuleAppsController < ApplicationController | |||
|       else | ||||
|         flash[:notice] = t('admin.app_auth.assigning_sub_manager.failed_no_user') | ||||
|     end | ||||
|        redirect_to :action => "edit" | ||||
|       flash[:notice] = t('admin.app_auth.can_not_add_this_user') | ||||
|       redirect_to :action => "edit" | ||||
|   end | ||||
|    | ||||
|    | ||||
|   def remove_manager | ||||
|     @app_manager = AppManager.find(params[:app_manager_id]) | ||||
|     if @module_app.remove_manager(@app_manager.user) | ||||
|       flash[:notice] = t('admin.app_auth.delete_manager.success') | ||||
|     else | ||||
|  | @ -75,6 +78,7 @@ class Admin::ModuleAppsController < ApplicationController | |||
|    | ||||
|    | ||||
|   def remove_sub_manager | ||||
|     @app_sub_manager = AppManager.find(params[:app_sub_manager_id]) | ||||
|     if @module_app.remove_sub_manager(@app_sub_manager.user)  | ||||
|       flash[:notice] = t('admin.app_auth.delete_sub_manager.success') | ||||
|     else | ||||
|  | @ -100,7 +104,7 @@ class Admin::ModuleAppsController < ApplicationController | |||
|   def user_has_sub_manager_privilege? | ||||
|     @module_app = ModuleApp.find(params[:id]) | ||||
|     @assign_to_user = User.find params[:sub_manager_id] rescue nil | ||||
|     if current_user.admin? || @module_app.managers.include?(current_user) #admin or app's manager can assign app's subanager | ||||
|     if current_user.admin? || @module_app.managing_users.include?(current_user) #admin or app's manager can assign app's subanager | ||||
|       return | ||||
|     end | ||||
|       #user is not permited to do that | ||||
|  |  | |||
|  | @ -0,0 +1,19 @@ | |||
| module Admin::ModuleAppHelper | ||||
| 
 | ||||
|   def if_permit_to_delete(item) | ||||
|     case item.downcase | ||||
|     when :manager | ||||
|       current_user.admin? | ||||
|     when :sub_manager | ||||
|       @module_app.managing_users.include?(current_user) || current_user.admin? | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def if_permit_to_assign(item) | ||||
|     if_permit_to_delete(item) | ||||
|   end | ||||
|    | ||||
|   def get_auth_by(manager_obj) | ||||
|     "-AuthBy: " +( manager_obj.rule_creator==current_user ? t('me') : manager_obj.rule_creator.name) | ||||
|   end | ||||
| end | ||||
|  | @ -19,11 +19,17 @@ class ModuleApp | |||
|    | ||||
|   has_one :app_auth,dependent: :delete | ||||
|    | ||||
| 
 | ||||
|   def managing_users | ||||
|     self.managers.collect{ |t| t.user } | ||||
|   end | ||||
|    | ||||
|   def sub_managing_users | ||||
|     self.sub_managers.collect{ |t| t.user } | ||||
|   end | ||||
|    | ||||
|   def assign_manager(user,assigner) | ||||
|     manager = AppManager.first(conditions: {managing_app_id: self.id,user_id: user.id}) rescue nil     | ||||
|     if manager.nil? | ||||
|     if manager.nil?  | ||||
|       manager = self.managers.create(:user => user,:rule_creator => assigner) | ||||
|     end | ||||
|     manager | ||||
|  | @ -31,7 +37,7 @@ class ModuleApp | |||
|    | ||||
|   def assign_sub_manager(user,assigner) | ||||
|     submanager = AppManager.first(conditions: {sub_managing_app_id: self.id,user_id: user.id}) rescue nil | ||||
|     if submanager.nil? | ||||
|     if submanager.nil? && !self.managing_users.include?(user) | ||||
|       submanager = self.sub_managers.create(:user => user,:rule_creator => assigner) | ||||
|     end | ||||
|     submanager | ||||
|  |  | |||
|  | @ -12,11 +12,11 @@ | |||
| 	<dl id="manager"> | ||||
| 		<dt>Manager</ht> | ||||
| 		<% @module_app.managers.each do |manager| %> | ||||
| 			<dd><%= manager.user.name %>  -AuthBy:<%= manager.rule_creator.name %> <%= link_to '[X]',remove_manager_admin_module_app_path(@module_app,manager),:method => :delete unless  manager.user == current_user%> </dd> | ||||
| 			<dd><%= manager.user.name %>  <%= get_auth_by(manager) %> <%= link_to '[X]',remove_manager_admin_module_app_path(@module_app,manager),:method => :delete if if_permit_to_delete(:manager) && manager.user != current_user %> </dd> | ||||
| 		<% end %> | ||||
| 		<dd>Add: | ||||
| 			<%= form_tag(assign_manager_admin_module_app_path) do %> | ||||
| 				<%= text_field_tag 'manager_id' %> | ||||
| 				<%= text_field_tag 'manager_id','Enter User ID here',:disabled  => !if_permit_to_assign(:manager)%> | ||||
| 				<%= submit_tag 'Add Manager' %> | ||||
| 			<% end %> | ||||
| 		</dd> | ||||
|  | @ -26,11 +26,11 @@ | |||
| 	<dl id="sub_manager"> | ||||
| 		<dt>Sub Manager</ht> | ||||
| 		<% @module_app.sub_managers.each do |manager| %> | ||||
| 			<dd><%= manager.user.name %>  -AuthBy:<%= manager.rule_creator.name %> <%= link_to '[X]',remove_sub_manager_admin_module_app_path(@module_app,manager),:method => :delete unless  manager.user == current_user%> </dd> | ||||
| 			<dd><%= manager.user.name %>  -AuthBy:<%= manager.rule_creator.name %> <%= link_to '[X]',remove_sub_manager_admin_module_app_path(@module_app,manager),:method => :delete if if_permit_to_delete(:sub_manager) && manager.user != current_user %> </dd> | ||||
| 		<% end %> | ||||
| 		<dd>Add: | ||||
| 			<%= form_tag(assign_sub_manager_admin_module_app_path) do %> | ||||
| 				<%= text_field_tag 'sub_manager_id' %> | ||||
| 				<%= text_field_tag 'sub_manager_id','Enter User ID here',:disabled  => !if_permit_to_assign(:sub_manager)%> | ||||
| 				<%= submit_tag 'Add Sub Manager' %> | ||||
| 			<% end %> | ||||
| 		</dd> | ||||
|  |  | |||
|  | @ -5,6 +5,8 @@ en: | |||
|    | ||||
|   _locale: English | ||||
|    | ||||
|   me: Me | ||||
|    | ||||
|   add: Add | ||||
|   back: Back | ||||
|   create: Create | ||||
|  |  | |||
|  | @ -2,6 +2,8 @@ zh_tw: | |||
|    | ||||
|   _locale: 中文 | ||||
|    | ||||
|   me: 我 | ||||
|    | ||||
|   add: 新增 | ||||
|   back: 回去 | ||||
|   create: 創造 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue