diff --git a/app/assets/javascripts/lib/member/list-view.js b/app/assets/javascripts/lib/member/list-view.js old mode 100755 new mode 100644 diff --git a/app/assets/javascripts/lib/member/member-role.js.erb b/app/assets/javascripts/lib/member/member-role.js.erb old mode 100755 new mode 100644 diff --git a/app/assets/javascripts/lib/member/member.js b/app/assets/javascripts/lib/member/member.js old mode 100755 new mode 100644 diff --git a/app/assets/javascripts/lib/member/registration_approval.js b/app/assets/javascripts/lib/member/registration_approval.js old mode 100755 new mode 100644 diff --git a/app/assets/javascripts/lib/member/role-forms.js b/app/assets/javascripts/lib/member/role-forms.js old mode 100755 new mode 100644 diff --git a/app/assets/javascripts/lib/member/sort.js.erb b/app/assets/javascripts/lib/member/sort.js.erb old mode 100755 new mode 100644 diff --git a/app/assets/javascripts/lib/member/textarea-lang-btn.js b/app/assets/javascripts/lib/member/textarea-lang-btn.js old mode 100755 new mode 100644 diff --git a/app/controllers/admin/authorizations_controller.rb b/app/controllers/admin/authorizations_controller.rb index 3da0d14..5a6161e 100644 --- a/app/controllers/admin/authorizations_controller.rb +++ b/app/controllers/admin/authorizations_controller.rb @@ -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 diff --git a/app/controllers/admin/dashboards_controller.rb b/app/controllers/admin/dashboards_controller.rb index 01bddb3..0cc1d07 100644 --- a/app/controllers/admin/dashboards_controller.rb +++ b/app/controllers/admin/dashboards_controller.rb @@ -1,4 +1,7 @@ -class Admin::DashboardsController < OrbitAdminController +class Admin::DashboardsController < ApplicationController + before_action :authenticate_user + layout "back_end" + def index end end diff --git a/app/controllers/admin/sites_controller.rb b/app/controllers/admin/sites_controller.rb index 345c150..4c3879a 100644 --- a/app/controllers/admin/sites_controller.rb +++ b/app/controllers/admin/sites_controller.rb @@ -1,6 +1,7 @@ class Admin::SitesController < OrbitAdminController - before_filter :get_site + before_filter :get_site layout "structure" + def mail_setting end diff --git a/app/controllers/concerns/authorize.rb b/app/controllers/concerns/authorize.rb index 06e3c8a..1a3aefe 100644 --- a/app/controllers/concerns/authorize.rb +++ b/app/controllers/concerns/authorize.rb @@ -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) diff --git a/app/models/authorization.rb b/app/models/authorization.rb index 22e0673..dad2a11 100644 --- a/app/models/authorization.rb +++ b/app/models/authorization.rb @@ -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 diff --git a/app/models/module_app.rb b/app/models/module_app.rb index 6c65010..2616798 100644 --- a/app/models/module_app.rb +++ b/app/models/module_app.rb @@ -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 diff --git a/app/models/site.rb b/app/models/site.rb index 63135ab..4b6e7dd 100644 --- a/app/models/site.rb +++ b/app/models/site.rb @@ -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 diff --git a/app/models/user.rb b/app/models/user.rb index 2d49f44..5b9c649 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -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 diff --git a/app/views/admin/authorizations/_user.html.erb b/app/views/admin/authorizations/_user.html.erb index 0f081fa..2d74da9 100644 --- a/app/views/admin/authorizations/_user.html.erb +++ b/app/views/admin/authorizations/_user.html.erb @@ -1,16 +1,10 @@ -<% if user.user.present?%> -
  • +
  • - <% unless user == current_user || user.user.is_admin? %> + <% unless user == current_user || user.is_admin? %> <% end %> -
  • -<% end %> \ No newline at end of file + \ No newline at end of file diff --git a/app/views/admin/authorizations/index.html.erb b/app/views/admin/authorizations/index.html.erb index cabf858..055c78b 100644 --- a/app/views/admin/authorizations/index.html.erb +++ b/app/views/admin/authorizations/index.html.erb @@ -1,3 +1,5 @@ +<%= javascript_include_tag 'member-selection'%> +
    @@ -32,7 +34,7 @@
    - <%= 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) %>
    diff --git a/app/views/admin/authorizations/modal_select.js.erb b/app/views/admin/authorizations/modal_select.js.erb index fe82819..f90bfa8 100644 --- a/app/views/admin/authorizations/modal_select.js.erb +++ b/app/views/admin/authorizations/modal_select.js.erb @@ -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(); \ No newline at end of file diff --git a/app/views/admin/authorizations/reload_users.js.erb b/app/views/admin/authorizations/reload_users.js.erb new file mode 100644 index 0000000..47e4fc3 --- /dev/null +++ b/app/views/admin/authorizations/reload_users.js.erb @@ -0,0 +1,2 @@ +$("#card-list").html("<%= j render partial: 'user', collection: @users %>"); +$("#member-filter").modal('hide'); \ No newline at end of file diff --git a/app/views/admin/authorizations/remove_users.js.erb b/app/views/admin/authorizations/remove_users.js.erb new file mode 100644 index 0000000..8aeaf0a --- /dev/null +++ b/app/views/admin/authorizations/remove_users.js.erb @@ -0,0 +1,3 @@ +<% @users.each do |user| %> + $("#<%= user.id.to_s %>").remove() +<% end %> \ No newline at end of file diff --git a/app/views/admin/member_selects/_modal_select.html.erb b/app/views/admin/member_selects/_modal_select.html.erb index e8d14e7..940bfb4 100644 --- a/app/views/admin/member_selects/_modal_select.html.erb +++ b/app/views/admin/member_selects/_modal_select.html.erb @@ -28,7 +28,6 @@
    <%= submit_tag t(:submit), class: "btn btn-primary" %> - <%= hidden_field_tag field, @field %>
    <% end %>
    @@ -42,8 +41,8 @@ <% users.each do |user| %>
  • <%= check_box_tag 'user_ids[]', user.id , false %>
  • @@ -54,7 +53,6 @@
    <%= submit_tag t(:submit), class: "btn btn-primary" %> - <%= hidden_field_tag field, @field %>
    <% end %> diff --git a/built_in_extensions.rb b/built_in_extensions.rb index 780c111..8224157 100644 --- a/built_in_extensions.rb +++ b/built_in_extensions.rb @@ -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' \ No newline at end of file +gem 'announcement', path: '/Users/saurabhbhatia/announcement-test' +gem 'ad_banner', path: '/Users/saurabhbhatia/ad_banner' +gem 'gallery', path: '/Users/saurabhbhatia/gallery' \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 38dca52..d4d6d68 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -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 diff --git a/lib/orbit_core_lib.rb b/lib/orbit_core_lib.rb index 28baf12..950e9c0 100644 --- a/lib/orbit_core_lib.rb +++ b/lib/orbit_core_lib.rb @@ -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