Updated Authorization with modal working

Conflicts:
	app/controllers/admin/sites_controller.rb
This commit is contained in:
Saurabh Bhatia committed 2014-05-05 12:32:07 +08:00
1 parent 4621ba8e9d
commit 51b287fb4e
24 files changed
+265 -80

No files matched your search

View File
File mode changed.
View File
File mode changed.
View File
File mode changed.
View File
File mode changed.
View File
File mode changed.
View File
File mode changed.
View File
File mode changed.
@@ -1,4 +1,5 @@
class Admin::AuthorizationsController < OrbitAdminController
prepend_before_filter :admin_or_manager
layout "back_end"
def index
@@ -17,12 +18,12 @@ class Admin::AuthorizationsController < OrbitAdminController
end
unless @objects.blank?
@object ||= @objects.first
@authorizations = Authorization.category_authorized_users(@object.id)
@authorizations = Authorization.category_sub_managers(@object)
else
@error = t(:no_data)
end
else
@authorizations = Authorization.module_authorized_users(@module_app.id)
@authorizations = @module_app.module_managers rescue nil
end
elsif @module_apps
@module_app = @module_apps.first
@@ -31,15 +32,23 @@ class Admin::AuthorizationsController < OrbitAdminController
end
end
def add_users
users = User.find(params[:user_ids]) rescue nil
unless users.nil?
authorization = get_or_create_authorization
add_users_to_auth(authorization, users)
end
@users = authorization.authorized_users
render 'admin/authorizations/reload_users'
def add_users
users = User.find(params[:user_ids]) rescue nil
unless users.nil?
authorization = users.map {|u| get_or_create_authorization(u.id)}.first
end
@users = @module_app.module_managers
render 'admin/authorizations/reload_users'
end
def add_roles
roles = Role.find(params[:role_ids]) rescue nil
unless roles.nil?
authorization = roles.map { |r| get_or_create_authorization_with_role(r.id)}.first
end
@users = @module_app.module_managers
render 'admin/authorizations/reload_users'
end
def modal_select
existing_users = User.find(params[:ids]) rescue []
@@ -47,24 +56,103 @@ class Admin::AuthorizationsController < OrbitAdminController
if @type
@object_id = @object.id if @object
@sorted_users = roles.inject({}) do |users, role|
users[role] = role.users.where(admin: false) - existing_users - @module_app.managers
users_for_role = role.member_profiles.select {|m| !m.user.is_admin?}.map {|u| u.user}
users[role] = users_for_role - existing_users - @module_app.module_managers
users
end
else
@sorted_users = roles.inject({}) do |users, role|
users[role] = role.users.where(admin: false) - existing_users
users_for_role = role.member_profiles.select {|m| !m.user.is_admin?}.map {|u| u.user}
users[role] = users_for_role - existing_users
users
end
end
end
def remove_roles
roles = Role.find(params[:role_ids]) rescue []
unless roles.blank?
authorization = get_or_create_authorization
remove_roles_form_auth(authorization, roles)
end
@users = authorization.authorized_users
render 'admin/authorizations/reload_users'
end
def remove_users
@users = User.find(params[:ids]) rescue []
unless @users.blank?
authorization = @users.map {|u| remove_authorizations(u.id)}.first
end
@users = @module_app.module_managers
render 'admin/authorizations/reload_users'
end
protected
def get_or_create_authorization(user_id)
case @type
when 'category_authorization'
if @object
Authorization.create_category_authorization(@module_app.id, @object.id, user_id)
else
@error = t(:no_data)
end
when nil
Authorization.create_module_authorization(@module_app.id, user_id)
else
auth = @object.get_authorization_by_title("#{@type}_#{@module_app.key}")
unless auth
auth = Authorization.create_category_authorization(@module_app.id, @object.id, user_id) if @type.include?('authorization')
end
auth
end
end
def get_or_create_authorization_with_role(role_id)
case @type
when 'category_authorization'
if @object
Authorization.create_category_authorization_with_role(@module_app.id, @object.id, role_id)
else
@error = t(:no_data)
end
when nil
Authorization.create_module_authorization_with_role(@module_app.id,role_id)
else
auth = @object.get_authorization_by_title("#{@type}_#{@module_app.key}")
unless auth
auth = Authorization.create_category_authorization_with_role(@module_app.id, @object.id, role_id)
end
auth
end
end
def remove_authorizations(user_id)
case @type
when 'category_authorization'
if @object
Authorization.remove_category_authorization(@object.id, user_id)
@error = t(:no_data)
end
when nil
Authorization.remove_module_authorization(@module_app.id, user_id)
else
auth = @object.get_authorization_by_title("#{@type}_#{@module_app.key}")
unless auth
auth = Authorization.remove_category_authorization(@object.id, user_id)
end
auth
end
end
private
def admin_or_manager
@override_can_use = true
setup_vars
authenticate_user!
authenticate_user
current_user.is_manager?(@module_app) unless current_user.is_admin?
end
@@ -1,4 +1,7 @@
class Admin::DashboardsController < OrbitAdminController
class Admin::DashboardsController < ApplicationController
before_action :authenticate_user
layout "back_end"
def index
end
end
+2 -1
View File
@@ -1,6 +1,7 @@
class Admin::SitesController < OrbitAdminController
before_filter :get_site
before_filter :get_site
layout "structure"
def mail_setting
end
+8
View File
@@ -19,6 +19,14 @@ module Authorize
end
end
def open_for_user
if current_user.present?
"Authorized"
else
render "public/404" , layout: "back_end"
end
end
private
def set_variables(module_app)
+74 -15
View File
@@ -10,20 +10,79 @@ class Authorization
scope :module_authorized_users, ->(module_app){ where(module_app_id: module_app) }
scope :category_authorized_users, ->(category){ where(category_id: category) }
def self.create_authorization(module_app_id=nil,category_id=nil,user_id,type)
user = User.find(user_id)
if user.is_admin?
elsif user.workgroup.nil?
if type == "module_authorization"
workgroup = Workgroup.find_by(key: "managers")
user.update_attributes(workgroup_id: workgroup.id)
a = self.new(module_app_id: module_app_id, user_id: user_id, workgroup_id: workgroup.id)
a.save
elsif type == "category_authorization"
self.create(category_id: category_id, user_id: user_id )
workgroup = Workgroup.find_by(key: "sub_managers")
user.update_attributes(workgroup_id: workgroup.id)
end
end
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_sub_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_by(module_app_id)
if (user.is_admin? || user.is_manager?(module_app) || user.is_sub_manager?(module_app) || user.is_manager_with_role?(module_app))
puts "User Already Authorized"
else
a = self.create(category_id: category_id, user_id: user_id, workgroup_id: workgroup.id)
a.save
end
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)
auth.delete
end
def self.remove_category_authorization(category_id,user_id)
auth = self.find_by(category_id: category_id, user_id: user_id)
auth
end
end
+10 -4
View File
@@ -66,9 +66,15 @@ class ModuleApp
Authorization.module_authorized_users(self).pluck(:user_id)
end
def role_module_managers
users = Authorization.module_authorized_users(self).pluck(:user_id)
roles = Authorization.module_authorized_users(self).pluck(:role_id)
users + roles
def role_managers
Authorization.module_authorized_users(self).pluck(:role_id)
end
def module_managers
workgroup = Workgroup.find_by(key: 'sub_managers')
authorized_users = Authorization.module_authorized_users(self).where(:user_id.ne => nil, :workgroup_id.ne => workgroup.id).map {|u| u.user} rescue nil
authorized_members = Authorization.module_authorized_users(self).where(:role_id.ne => nil).map {|m| m.role.member_profiles}.first rescue nil
users_authorized_by_role = authorized_members.map {|u| u.user} rescue []
authorized_users.inject(users_authorized_by_role, :<<) rescue []
end
end
+1 -1
View File
@@ -2,7 +2,7 @@ class Site
include Mongoid::Document
include Mongoid::Timestamps
field :title, localize: true
field :title, type: String, localize: true
field :school, type: String
field :department, type: String
field :address, type: String
+20 -1
View File
@@ -48,7 +48,26 @@ class User
end
end
def is_authorized_with_role?(module_app)
def is_manager_with_role?(module_app)
user_roles = self.member_profile.role_ids.map {|r| r}
authorized_roles = module_app.role_managers rescue []
intersection = (user_roles & authorized_roles)
if ((intersection.count > 0 if intersection.present?) && !self.is_admin? && !self.is_manager?(module_app) && !self.is_sub_manager?(module_app))
true
else
false
end
end
def user_workgroup(module_app)
if self.is_admin?
"Admin"
elsif (self.is_manager?(module_app) || is_manager_with_role?(module_app))
"Manager"
elsif self.is_sub_manager?(module_app)
"Sub Manager"
end
end
def self.not_admins
+6 -12
View File
@@ -1,16 +1,10 @@
<% if user.user.present?%>
<li class="filter-item selected_user <%= 'check-item' unless user == current_user || user.user.is_admin? %>" id="<%= user.user.id %>">
<li class="filter-item selected_user <%= 'check-item' unless user == current_user || user.is_admin? %>" id="<%= user.id %>">
<label>
<%= image_tag (user.user.member_profile.avatar? ? user.user.member_profile.avatar.thumb : 'menber-pic.png'), :class => "user-pic" %>
<span class="user-name"><%= user.user.member_profile.name %></span>
<% if user.user.is_admin?%>
<span>Admin</span>
<% else %>
<span><%= user.workgroup.title.singularize if user.workgroup %></span>
<% end %>
<%= image_tag (user.member_profile.avatar? ? user.member_profile.avatar.thumb : 'menber-pic.png'), :class => "user-pic" %>
<span class="user-name"><%= user.member_profile.name %></span>
<span><%= user.user_workgroup(@module_app) %></span>
</label>
<% unless user == current_user || user.user.is_admin? %>
<% unless user == current_user || user.is_admin? %>
<input type="checkbox">
<% end %>
</li>
<% end %>
</li>
@@ -1,3 +1,5 @@
<%= javascript_include_tag 'member-selection'%>
<div class="mini-layout row-fluid">
<div class="mini-layout-sidebar span2">
<div class="nano">
@@ -32,7 +34,7 @@
<!-- footer -->
<div class="bottomnav clearfix">
<div class="action pull-right">
<%= link_to content_tag(:i, nil, class: "icons-plus") + ' ' + t(:add), '#', class: 'btn btn-primary select_user_modal', rel: admin_modal_select_authorizations_path(@module_app.key, @type, @object) %>
<%= link_to content_tag(:i, nil, class: "icon-trash") + ' ' + t(:delete_), '#', id: 'remove_users', class: 'btn btn-danger' %>
<%= link_to content_tag(:i, nil, class: "icons-plus") + ' ' + t(:add), '#', class: 'btn btn-primary select_user_modal', rel: modal_select_authorizations_path(@module_app.key, @type, @object) %>
<%= link_to content_tag(:i, nil, class: "icon-trash") + ' ' + t(:delete_), '#', id: 'remove_users', class: 'btn btn-danger', rel: remove_users_authorizations_path(@module_app.key, @type, @object) %>
</div>
</div>
@@ -1,2 +1,2 @@
$("#select_user").html("<%= j render partial: 'admin/member_selects/modal_select', locals: {role_form_url: admin_add_roles_authorizations_path(@module_app.key, @type, @object_id), user_form_url: admin_add_users_authorizations_path(@module_app.key, @type, @object_id)} %>");
$("#select_user").html("<%= j render partial: 'admin/member_selects/modal_select', locals: {role_form_url: add_roles_authorizations_path(@module_app.key, @type, @object_id), user_form_url: add_users_authorizations_path(@module_app.key, @type, @object_id)} %>");
$("#member-filter").modal();
@@ -0,0 +1,2 @@
$("#card-list").html("<%= j render partial: 'user', collection: @users %>");
$("#member-filter").modal('hide');
@@ -0,0 +1,3 @@
<% @users.each do |user| %>
$("#<%= user.id.to_s %>").remove()
<% end %>
@@ -28,7 +28,6 @@
<div class="form-actions">
<button type="button" class="btn" data-dismiss="modal"><%= t(:cancel) %></button>
<%= submit_tag t(:submit), class: "btn btn-primary" %>
<%= hidden_field_tag field, @field %>
</div>
<% end %>
</div>
@@ -42,8 +41,8 @@
<% users.each do |user| %>
<li class="check-item">
<label>
<%= image_tag (user.avatar.file ? user.avatar : "menber-pic.png"), class: "user-pic" %>
<span class="user-name"><%= user.name %></span>
<%= image_tag (user.member_profile.avatar.file ? user.member_profile.avatar : "menber-pic.png"), class: "user-pic" %>
<span class="user-name"><%= user.member_profile.name %></span>
</label>
<%= check_box_tag 'user_ids[]', user.id , false %>
</li>
@@ -54,7 +53,6 @@
<div class="form-actions condition">
<button type="button" class="btn" data-dismiss="modal"><%= t(:cancel) %></button>
<%= submit_tag t(:submit), class: "btn btn-primary" %>
<%= hidden_field_tag field, @field %>
</div>
</fieldset>
<% end %>
+3 -3
View File
@@ -1,3 +1,3 @@
gem 'announcement', git: 'git@gitlab.tp.rulingcom.com:saurabh/announcement-test.git'
gem 'ad_banner', git: 'git@gitlab.tp.rulingcom.com:saurabh/adbanner-test.git'
gem 'gallery', git: 'git@gitlab.tp.rulingcom.com:saurabh/gallery.git'
gem 'announcement', path: '/Users/saurabhbhatia/announcement-test'
gem 'ad_banner', path: '/Users/saurabhbhatia/ad_banner'
gem 'gallery', path: '/Users/saurabhbhatia/gallery'
+21 -20
View File
@@ -26,6 +26,10 @@ Orbit::Application.routes.draw do
# You can have the root of your site routed with "root"
root 'pages#home'
get 'admin/authorizations/modal_select/:module(/:type(/:id))' => 'admin/authorizations#modal_select', :as => :modal_select_authorizations
match 'admin/authorizations/add_users/:module(/:type(/:id))' => 'admin/authorizations#add_users', :as => :add_users_authorizations, via: [:get, :post]
match 'admin/authorizations/add_roles/:module(/:type(/:id))' => 'admin/authorizations#add_roles', :as => :add_roles_authorizations, via: [:get, :post]
match 'admin/authorizations/remove_users/:module(/:type(/:id))' => 'admin/authorizations#remove_users', :as => :remove_users_authorizations, via: [:delete]
locales = Site.first.in_use_locales rescue I18n.available_locales
@@ -38,9 +42,6 @@ Orbit::Application.routes.draw do
resources :module_apps
get 'authorizations(/:module(/:type(/:id)))' => 'authorizations#index', :as => :authorizations
get 'authorizations/add_users/:module(/:type(/:id))' => 'authorizations#add_users', :as => :add_users_authorizations
get 'authorizations/modal_select/:module(/:type(/:id))' => 'authorizations#modal_select', :as => :modal_select_authorizations
resources :authorizations
resources :items
@@ -55,23 +56,23 @@ Orbit::Application.routes.draw do
end
resources :sites do
get 'mail_setting'
get 'site_info'
get 'responsive_setting'
get 'search_engine'
get 'sitemap'
get 'sitemap_frontend'
get 'sitemap_toggle', :on => :member
get 'system_info'
get 'ui_theme'
get 'change_design'
get 'reset_default_locale'
get 'preference'
get 'update_manager'
get 'get_update_history'
get 'check_updates'
get 'update_orbit'
get 'restart_server'
get 'mail_setting'
get 'site_info'
get 'responsive_setting'
get 'search_engine'
get 'sitemap'
get 'sitemap_frontend'
get 'sitemap_toggle', :on => :member
get 'system_info'
get 'ui_theme'
get 'change_design'
get 'reset_default_locale'
get 'preference'
get 'update_manager'
get 'get_update_history'
get 'check_updates'
get 'update_orbit'
get 'restart_server'
end
+3 -2
View File
@@ -173,9 +173,10 @@ module OrbitCoreLib
end
def check_user_can_use
if ((current_user.is_admin? if current_user.present?) || (current_user.is_manager?(@module_app) if current_user.present?) || (current_user.is_sub_manager?(@module_app) if current_user.present?))
condition_check = ((current_user.is_admin? if current_user.present?) || (current_user.is_manager?(@module_app) if current_user.present?) || (current_user.is_sub_manager?(@module_app) if current_user.present?) || (current_user.is_manager_with_role?(@module_app) if current_user.present?))
if condition_check.eql?(true)
# redirect_to admin_dashboards_url
elsif ((current_user.is_admin? if current_user.present?) || (current_user.is_manager?(@module_app) if current_user.present?) || (current_user.is_sub_manager?(@module_app) if current_user.present?)).eql?(false)
elsif condition_check.eql?(false)
render "public/404" , layout: "back_end"
end
end