Manger and SubManager
This commit is contained in:
		
							parent
							
								
									c0efb5d1bc
								
							
						
					
					
						commit
						42c89220e3
					
				| 
						 | 
					@ -15,4 +15,10 @@ class Admin::AppAuthsController < ApplicationController
 | 
				
			||||||
    @module_apps = ModuleApp.all
 | 
					    @module_apps = ModuleApp.all
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  def edit
 | 
				
			||||||
 | 
					    @module_app = ModuleApp.find(params[:id])
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					@ -18,6 +18,7 @@ class Admin::ModuleAppsController < ApplicationController
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  def update
 | 
					  def update
 | 
				
			||||||
    @module_app = ModuleApp.find(params[:id])
 | 
					    @module_app = ModuleApp.find(params[:id])
 | 
				
			||||||
    unless params['module_app']['enable_frontend'].nil?
 | 
					    unless params['module_app']['enable_frontend'].nil?
 | 
				
			||||||
| 
						 | 
					@ -30,4 +31,56 @@ class Admin::ModuleAppsController < ApplicationController
 | 
				
			||||||
      format.js  { render 'admin/attributes/toggle_enable' }
 | 
					      format.js  { render 'admin/attributes/toggle_enable' }
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  def assign_sub_manager
 | 
				
			||||||
 | 
					    @module_app = ModuleApp.find(params[:id])
 | 
				
			||||||
 | 
					    @assign_to_user = User.find params[:sub_manager_id] rescue nil
 | 
				
			||||||
 | 
					    unless @assign_to_user.nil?
 | 
				
			||||||
 | 
					       if @module_app.assign_sub_manager(@assign_to_user,current_user)
 | 
				
			||||||
 | 
					          flash[:notice] = t('admin.app_auth.assign_success_sub_manager')
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					          flash[:notice] = t('admin.app_auth.assign_fail_sub_manager')
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					        flash[:notice] = t('admin.app_auth.assign_fail_sub_manager_no_user')
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					       redirect_to :action => "edit"
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  def assign_manager
 | 
				
			||||||
 | 
					    @module_app = ModuleApp.find(params[:id])
 | 
				
			||||||
 | 
					    @assign_to_user = User.find params[:manager_id] rescue nil
 | 
				
			||||||
 | 
					    unless @assign_to_user.nil?
 | 
				
			||||||
 | 
					       if @module_app.assign_manager(@assign_to_user,current_user)
 | 
				
			||||||
 | 
					          flash[:notice] = t('admin.app_auth.assign_success_manager')
 | 
				
			||||||
 | 
					        else
 | 
				
			||||||
 | 
					          flash[:notice] = t('admin.app_auth.assign_fail_manager')
 | 
				
			||||||
 | 
					        end
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					        flash[:notice] = t('admin.app_auth.assign_fail_manager_no_user')
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					       redirect_to :action => "edit"
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  def remove_manager
 | 
				
			||||||
 | 
					    @module_app = ModuleApp.find(params[:id])
 | 
				
			||||||
 | 
					    @app_manager = AppManager.find(params[:app_manager_id]) rescue nil
 | 
				
			||||||
 | 
					    if @module_app.remove_manager(@app_manager.user)
 | 
				
			||||||
 | 
					      flash[:notice] = t('admin.app_auth.delete_success_manager')
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      flash[:notice] = t('admin.app_auth.delete_fail_manager')
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					    redirect_to :action => "edit"
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  def remove_sub_manager
 | 
				
			||||||
 | 
					    @module_app = ModuleApp.find(params[:id])
 | 
				
			||||||
 | 
					    @app_sub_manager = AppManager.find(params[:app_sub_manager_id]) rescue nil
 | 
				
			||||||
 | 
					    if @module_app.remove_sub_manager(@app_sub_manager.user) 
 | 
				
			||||||
 | 
					      flash[:notice] = t('admin.app_auth.delete_success_sub_manager')
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      flash[:notice] = t('admin.app_auth.delete_fail_sub_manager')
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					    redirect_to :action => "edit"
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,7 @@ class ApplicationController < ActionController::Base
 | 
				
			||||||
  def front_end_available(module_app_title='')
 | 
					  def front_end_available(module_app_title='')
 | 
				
			||||||
    app_controller = ModuleApp.first(conditions: {:title => module_app_title} )
 | 
					    app_controller = ModuleApp.first(conditions: {:title => module_app_title} )
 | 
				
			||||||
    unless app_controller.enable_frontend? 
 | 
					    unless app_controller.enable_frontend? 
 | 
				
			||||||
      render :nothing
 | 
					      render :nothing => true
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,12 @@
 | 
				
			||||||
 | 
					class AppManager 
 | 
				
			||||||
 | 
					  include Mongoid::Document
 | 
				
			||||||
 | 
					  include Mongoid::Timestamps
 | 
				
			||||||
 | 
					  	
 | 
				
			||||||
 | 
					  belongs_to :user
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  belongs_to :managing_app, :polymorphic => true  #,:class_name => 'ModuleApp',:inverse_of => :managers,:foreign_key => "user_id" 
 | 
				
			||||||
 | 
					  belongs_to :sub_managing_app, :polymorphic => true  #,:class_name => 'ModuleApp',:inverse_of => :sub_manager,:foreign_key => "sub_user_id"
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  belongs_to :rule_creator,:class_name => 'User'
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
| 
						 | 
					@ -14,8 +14,45 @@ class ModuleApp
 | 
				
			||||||
  field :app_pages ,type: Array
 | 
					  field :app_pages ,type: Array
 | 
				
			||||||
  field :widgets ,type: Array
 | 
					  field :widgets ,type: Array
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					  has_many :managers,as: :managing_app ,:class_name => "AppManager" #,:dependent => :destroy,:foreign_key => "managing_app_id",:inverse_of => :managing_app
 | 
				
			||||||
 | 
					  has_many :sub_managers,as: :sub_managing_app ,:class_name => "AppManager"#, :dependent => :destroy,:foreign_key => "sub_managing_app_id",:inverse_of => :sub_managing_app
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  has_one :app_auth,dependent: :delete
 | 
					  has_one :app_auth,dependent: :delete
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  
 | 
					  
 | 
				
			||||||
 | 
					  def assign_manager(user,assigner)
 | 
				
			||||||
 | 
					    manager = AppManager.first(conditions: {managing_app_id: self.id,user_id: user.id}) rescue nil    
 | 
				
			||||||
 | 
					    if manager.nil?
 | 
				
			||||||
 | 
					      manager = self.managers.create(:user => user,:rule_creator => assigner)
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					    manager
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  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?
 | 
				
			||||||
 | 
					      submanager = self.sub_managers.create(:user => user,:rule_creator => assigner)
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					    submanager
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  def remove_manager(user)
 | 
				
			||||||
 | 
					    manager = AppManager.first(conditions: {managing_app_id: self.id,user_id: user.id}) rescue nil
 | 
				
			||||||
 | 
					    if manager
 | 
				
			||||||
 | 
					      manager.destroy
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      false
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  def remove_sub_manager(user)
 | 
				
			||||||
 | 
					    submanager = AppManager.first(conditions: {sub_managing_app_id: self.id,user_id: user.id}) rescue nil
 | 
				
			||||||
 | 
					    if submanager
 | 
				
			||||||
 | 
					      submanager.destroy
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      false
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -14,6 +14,9 @@ class User
 | 
				
			||||||
  has_many :app_auths,as: :privilege_apps,:inverse_of => :privilege_lists
 | 
					  has_many :app_auths,as: :privilege_apps,:inverse_of => :privilege_lists
 | 
				
			||||||
  has_many :blocked_apps,  :inverse_of => :blocked_users, :class_name => "AppAuth"
 | 
					  has_many :blocked_apps,  :inverse_of => :blocked_users, :class_name => "AppAuth"
 | 
				
			||||||
  has_many :privilege_apps,  :inverse_of => :privilege_users, :class_name => "AppAuth"
 | 
					  has_many :privilege_apps,  :inverse_of => :privilege_users, :class_name => "AppAuth"
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					  has_many :managing_apps,:class_name => "AppManager"
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
  belongs_to :role
 | 
					  belongs_to :role
 | 
				
			||||||
  has_and_belongs_to_many :sub_roles
 | 
					  has_and_belongs_to_many :sub_roles
 | 
				
			||||||
  accepts_nested_attributes_for :attribute_values, :allow_destroy => true
 | 
					  accepts_nested_attributes_for :attribute_values, :allow_destroy => true
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,41 @@
 | 
				
			||||||
 | 
					<% content_for :secondary do %>
 | 
				
			||||||
 | 
					<% end %>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!-- Remove if CSS done-->
 | 
				
			||||||
 | 
					<br />
 | 
				
			||||||
 | 
					<br />
 | 
				
			||||||
 | 
					<br />
 | 
				
			||||||
 | 
					<!-- Remove if CSS done-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<div id="manager_management">
 | 
				
			||||||
 | 
						<h1><%= @module_app.title %></h1>
 | 
				
			||||||
 | 
						<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>
 | 
				
			||||||
 | 
							<% end %>
 | 
				
			||||||
 | 
							<dd>Add:
 | 
				
			||||||
 | 
								<%= form_tag(assign_manager_admin_module_app_path) do %>
 | 
				
			||||||
 | 
									<%= text_field_tag 'manager_id' %>
 | 
				
			||||||
 | 
									<%= submit_tag 'Add Manager' %>
 | 
				
			||||||
 | 
								<% end %>
 | 
				
			||||||
 | 
							</dd>
 | 
				
			||||||
 | 
						</dl>
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
						<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>
 | 
				
			||||||
 | 
							<% end %>
 | 
				
			||||||
 | 
							<dd>Add:
 | 
				
			||||||
 | 
								<%= form_tag(assign_sub_manager_admin_module_app_path) do %>
 | 
				
			||||||
 | 
									<%= text_field_tag 'sub_manager_id' %>
 | 
				
			||||||
 | 
									<%= submit_tag 'Add Sub Manager' %>
 | 
				
			||||||
 | 
								<% end %>
 | 
				
			||||||
 | 
							</dd>
 | 
				
			||||||
 | 
						</dl>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -40,6 +40,11 @@ PrototypeR4::Application.routes.draw do
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
    resources :module_apps do
 | 
					    resources :module_apps do
 | 
				
			||||||
      member do
 | 
					      member do
 | 
				
			||||||
 | 
					        match 'assign_manager' ,:action=> 'assign_manager',:via => "post",:as =>:assign_manager
 | 
				
			||||||
 | 
					        match 'assign_sub_manager' ,:action=> 'assign_sub_manager',:via => "post",:as =>:assign_sub_manager
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        match 'remove_manager/:app_manager_id' ,:action=> 'remove_manager',:via => "delete",:as =>:remove_manager
 | 
				
			||||||
 | 
					        match 'remove_sub_manager/:app_sub_manager_id' ,:action=> 'remove_sub_manager',:via => "delete",:as =>:remove_sub_manager
 | 
				
			||||||
        get 'reload_frontend_pages'
 | 
					        get 'reload_frontend_pages'
 | 
				
			||||||
      end
 | 
					      end
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue