Complete for 229 check.
This commit is contained in:
		
							parent
							
								
									678f1eabef
								
							
						
					
					
						commit
						3209f9aa27
					
				
							
								
								
									
										1
									
								
								Gemfile
								
								
								
								
							
							
						
						
									
										1
									
								
								Gemfile
								
								
								
								
							|  | @ -14,6 +14,7 @@ gem 'kaminari' | ||||||
| 
 | 
 | ||||||
| gem 'mini_magick' | gem 'mini_magick' | ||||||
| gem 'mongoid' | gem 'mongoid' | ||||||
|  | gem 'mysql2' | ||||||
| gem 'radius' | gem 'radius' | ||||||
| gem 'rake' | gem 'rake' | ||||||
| gem 'ruby-debug19' | gem 'ruby-debug19' | ||||||
|  |  | ||||||
|  | @ -95,6 +95,8 @@ GEM | ||||||
|       mongo (~> 1.3) |       mongo (~> 1.3) | ||||||
|       tzinfo (~> 0.3.22) |       tzinfo (~> 0.3.22) | ||||||
|     multi_json (1.0.4) |     multi_json (1.0.4) | ||||||
|  |     mysql2 (0.3.11) | ||||||
|  |     mysql2 (0.3.11-x86-mingw32) | ||||||
|     net-ldap (0.3.1) |     net-ldap (0.3.1) | ||||||
|     orm_adapter (0.0.6) |     orm_adapter (0.0.6) | ||||||
|     polyglot (0.3.3) |     polyglot (0.3.3) | ||||||
|  | @ -217,6 +219,7 @@ DEPENDENCIES | ||||||
|   kaminari |   kaminari | ||||||
|   mini_magick |   mini_magick | ||||||
|   mongoid |   mongoid | ||||||
|  |   mysql2 | ||||||
|   net-ldap (~> 0.3.1) |   net-ldap (~> 0.3.1) | ||||||
|   radius |   radius | ||||||
|   rails (>= 3.1.0, < 3.2.0) |   rails (>= 3.1.0, < 3.2.0) | ||||||
|  |  | ||||||
|  | @ -17,7 +17,8 @@ class SessionsController < Devise::SessionsController | ||||||
|     if ldap.bind |     if ldap.bind | ||||||
|         result = ldap.bind_as(:base => ldap_base,:filter => ldap_filter,:password=> login_password) |         result = ldap.bind_as(:base => ldap_base,:filter => ldap_filter,:password=> login_password) | ||||||
|         if result  |         if result  | ||||||
|           resource =  User.find_or_initialize_by( nccu_ldap_uid: login_uid )           |           nccu_id = get_nccu_id_from_mid_site(login_uid) | ||||||
|  |           resource =  User.first(conditions:{ nccu_id: nccu_id })           | ||||||
|            # resource = env['warden'].authenticate!(:check_nccu_ldap) |            # resource = env['warden'].authenticate!(:check_nccu_ldap) | ||||||
|            # resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new") |            # resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new") | ||||||
|            set_flash_message(:notice, :signed_in) if is_navigational_format? |            set_flash_message(:notice, :signed_in) if is_navigational_format? | ||||||
|  | @ -33,5 +34,21 @@ class SessionsController < Devise::SessionsController | ||||||
|         render :action => "new" |         render :action => "new" | ||||||
|       end |       end | ||||||
|     end |     end | ||||||
|    | private   | ||||||
|  |   def get_nccu_id_from_mid_site(ldap_id) | ||||||
|  |     nccu_id = MID_CLIENT.query("SELECT nccu_id FROM rss_aaldap_view WHERE ldap_id='#{ldap_id}' LIMIT 1").first['nccu_id'] rescue nil | ||||||
|  |         #  | ||||||
|  |         # if  nccu_id.nil? | ||||||
|  |         #   #show_error  | ||||||
|  |         #   p 'account not exist' | ||||||
|  |         #   #should return? | ||||||
|  |         # end | ||||||
|  |         # # User.first(conditions: {  }) | ||||||
|  |         # rss_pautlst_ut = MID_CLIENT.query("SELECT * FROM rss_pautlst_ut WHERE nccu_id='#{nccu_id}' LIMIT 1").first rescue nil | ||||||
|  |         # # rss_paunit = client.query("SELECT * FROM rss_paunit  LIMIT 1").first rescue nil | ||||||
|  |         # user = User.find_or_create_by(:nccu_id => nccu_id) | ||||||
|  |         #  p user | ||||||
|  |         #  # p rss_paunit | ||||||
|  |         #  | ||||||
|  |   end | ||||||
| end | end | ||||||
|  | @ -22,6 +22,9 @@ class User | ||||||
|   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 | ||||||
|    |    | ||||||
|  |   scope :remote_account, where(:nccu_id.ne => nil) | ||||||
|  |    | ||||||
|  |    | ||||||
|   def avb_apps |   def avb_apps | ||||||
|     sub_role_ids_ary=self.sub_roles.collect{|t| t.id} |     sub_role_ids_ary=self.sub_roles.collect{|t| t.id} | ||||||
|     query1 = AppAuth.any_in({sub_role_ids: sub_role_ids_ary}).excludes(blocked_user_ids: self.id) |     query1 = AppAuth.any_in({sub_role_ids: sub_role_ids_ary}).excludes(blocked_user_ids: self.id) | ||||||
|  |  | ||||||
|  | @ -141,7 +141,4 @@ Devise.setup do |config| | ||||||
|   #   end |   #   end | ||||||
|   #   manager.default_strategies(:scope => :user).unshift :twitter_oauth |   #   manager.default_strategies(:scope => :user).unshift :twitter_oauth | ||||||
|   # end |   # end | ||||||
|   config.warden do |manager|  |  | ||||||
|     manager.default_strategies.unshift :check_nccu_ldap  |  | ||||||
|   end |  | ||||||
| end | end | ||||||
|  |  | ||||||
|  | @ -0,0 +1,14 @@ | ||||||
|  | #encoding: utf-8 | ||||||
|  | 
 | ||||||
|  | require 'mysql2' | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | mid_host = {  | ||||||
|  |   :host => '127.0.0.1',  #mruling.nccu.edu.tw | ||||||
|  |   :port => 8005, | ||||||
|  |   :username => "root", | ||||||
|  |   :password => "a3G6yWd9", | ||||||
|  |   :database => "RSS23_NCCU_MIDDLE", | ||||||
|  |   :encoding => "UTF8" | ||||||
|  | } | ||||||
|  | MID_CLIENT = Mysql2::Client.new(mid_host) | ||||||
|  | @ -0,0 +1,106 @@ | ||||||
|  | # encoding: utf-8  | ||||||
|  | 
 | ||||||
|  | namespace :mid_site do | ||||||
|  |   attr_from_mid = %w{nccu_id psn_nam ut_chi_m eml_adr off_tel_ext sta_num} | ||||||
|  |   officer_posgrp_code = %w{02 06 10 05} #from RSS2  | ||||||
|  |   admin_role = nil | ||||||
|  |   sub_role = nil | ||||||
|  |    | ||||||
|  |   task :sync => :environment do | ||||||
|  |     users_from_mid = MID_CLIENT.query("SELECT #{attr_from_mid.join(',')} FROM rss_pautlst_ut  WHERE posgrp_cod IN (#{officer_posgrp_code.join(',')})")     | ||||||
|  |     remote_list = users_from_mid.collect{|t| t["nccu_id"]} | ||||||
|  |      | ||||||
|  |     #remove delete user sho has been deleted at remote first | ||||||
|  |     local_need_remove = User.all.collect{|t| t.nccu_id rescue nil}.uniq.delete_if {|x| x == nil} - remote_list | ||||||
|  |     local_need_remove.each{|user_id| (User.find user_id).destroy} | ||||||
|  |      | ||||||
|  |     #starting update user | ||||||
|  |     users_from_mid.each do |mid_user| | ||||||
|  |       local_user = User.find_or_initialize_by(:nccu_id => mid_user["nccu_id"]) | ||||||
|  |       local_user.update_attributes(mid_user) | ||||||
|  |       local_user.save! | ||||||
|  |     end    | ||||||
|  |   end | ||||||
|  |    | ||||||
|  |   task :install_admin => :before_instll_admin do | ||||||
|  |     admins_nccu_id = '2772' | ||||||
|  |     # admin_role = Role.find_or_create_by( key: 'administrator') | ||||||
|  |     # sub_role = admin_role.sub_roles.find_or_create_by(:key => 'computer_center') | ||||||
|  |     info_profile = Info.first(conditions: {:key => 'profile'}) | ||||||
|  |      | ||||||
|  |     user_from_mid = MID_CLIENT.query("SELECT #{attr_from_mid.join(',')} FROM rss_pautlst_ut  WHERE posgrp_cod IN (#{officer_posgrp_code.join(',')}) AND nccu_id = '#{admins_nccu_id}' limit 1")     | ||||||
|  |     admin_at_mid =  user_from_mid.first | ||||||
|  |     user_first_name = admin_at_mid["psn_nam"].size > 3 ? admin_at_mid["psn_nam"][3..-1] : admin_at_mid["psn_nam"][1..-1] | ||||||
|  |     user_last_name =  admin_at_mid["psn_nam"].size  > 3 ? admin_at_mid["psn_nam"][1..2] : admin_at_mid["psn_nam"][0] | ||||||
|  |     local_user = User.find_or_initialize_by(:nccu_id => admin_at_mid["nccu_id"]) | ||||||
|  |     local_user.update_attributes(:email => admin_at_mid["eml_adr"], :admin => true, :role_id => admin_role.id, :sub_role_ids => [sub_role.id]) | ||||||
|  | 
 | ||||||
|  |     # local_user.role = admin_role | ||||||
|  |     # local_user.sub_roles <<  | ||||||
|  |     AttributeValue.create( :user => local_user, :attribute_field => info_profile.attribute_fields[0], :key => 'first_name', :en => user_first_name, :zh_tw => user_first_name ) | ||||||
|  |     AttributeValue.create( :user_id => local_user.id, :attribute_field_id => info_profile.attribute_fields[1].id, :key => 'last_name', :en => user_last_name, :zh_tw => user_last_name ) | ||||||
|  |     #AttributeValue.create( :user_id => local_user.id, :attribute_field_id => sr_1_2.attribute_fields[0].id, :key => 'field', :en => 'Computer Architecture', :zh_tw => '計算機系統結構' ) | ||||||
|  |     #AttributeValue.create( :user_id => local_user.id, :attribute_field_id => sr_1_2.attribute_fields[1].id, :key => 'department', :en => user_from_mid["ut_chi_m"], :zh_tw => user_from_mid["ut_chi_m"] ) | ||||||
|  |     #AttributeValue.create( :user_id => local_user.id, :attribute_field_id => sr_1_2.attribute_fields[2].id, :key => 'speciality', :en => 'HSR', :zh_tw => '高鐵' ) | ||||||
|  |      | ||||||
|  |   end | ||||||
|  |    | ||||||
|  |   task :install_test => :before_instll_admin do | ||||||
|  |     admins_nccu_id = '139716' | ||||||
|  |     # admin_role = Role.find_or_create_by( key: 'administrator') | ||||||
|  |     # sub_role = admin_role.sub_roles.find_or_create_by(:key => 'computer_center') | ||||||
|  |     info_profile = Info.first(conditions: {:key => 'profile'}) | ||||||
|  |      | ||||||
|  |     user_from_mid = MID_CLIENT.query("SELECT #{attr_from_mid.join(',')} FROM rss_pautlst_ut  WHERE  nccu_id = '#{admins_nccu_id}' limit 1")     | ||||||
|  |     admin_at_mid =  user_from_mid.first | ||||||
|  |     user_first_name = admin_at_mid["psn_nam"].size > 3 ? admin_at_mid["psn_nam"][3..-1] : admin_at_mid["psn_nam"][1..-1] | ||||||
|  |     user_last_name =  admin_at_mid["psn_nam"].size  > 3 ? admin_at_mid["psn_nam"][1..2] : admin_at_mid["psn_nam"][0] | ||||||
|  |     local_user = User.find_or_initialize_by(:nccu_id => admin_at_mid["nccu_id"]) | ||||||
|  |     local_user.update_attributes(:email => admin_at_mid["eml_adr"], :admin => true, :role_id => admin_role.id, :sub_role_ids => [sub_role.id]) | ||||||
|  | 
 | ||||||
|  |     AttributeValue.create( :user => local_user, :attribute_field => info_profile.attribute_fields[0], :key => 'first_name', :en => user_first_name, :zh_tw => user_first_name ) | ||||||
|  |     AttributeValue.create( :user_id => local_user.id, :attribute_field_id => info_profile.attribute_fields[1].id, :key => 'last_name', :en => user_last_name, :zh_tw => user_last_name ) | ||||||
|  |      | ||||||
|  |   end | ||||||
|  |    | ||||||
|  |   task :before_instll_admin => :environment do | ||||||
|  | 
 | ||||||
|  |   var_1 = I18nVariable.find_or_create_by( :document_class => 'Role', :key => 'administrator', :en => 'Administrator', :zh_tw => '管理員' ) | ||||||
|  |     var_1_1 = I18nVariable.find_or_create_by( :document_class => 'SubRole', :key => 'computer_center', :en => 'Computer Center', :zh_tw => '計算機中心', :parent_id => var_1.id ) | ||||||
|  | 
 | ||||||
|  |     admin_role = Role.find_or_create_by( :key => 'administrator',:built_in => true) | ||||||
|  |     admin_role.i18n_variable =var_1 | ||||||
|  |     admin_role.save! | ||||||
|  |      | ||||||
|  |     sub_role = admin_role.sub_roles.find_or_create_by(:key => 'computer_center', :built_in => true) | ||||||
|  |     sub_role.i18n_variable =var_1_1 | ||||||
|  |     sub_role.save! | ||||||
|  | 
 | ||||||
|  |         #var_1_1_1 = I18nVariable.create!( :document_class => 'Attribute', :key => 'field', :en => 'Field', :zh_tw => '領域', :parent_id => var_1_1.id ) | ||||||
|  |         #var_1_1_2 = I18nVariable.create!( :document_class => 'Attribute', :key => 'department', :en => 'Department', :zh_tw => '學系', :parent_id => var_1_1.id ) | ||||||
|  | 
 | ||||||
|  |   end | ||||||
|  |    | ||||||
|  |    | ||||||
|  |   task :clean_local_account => :environment do | ||||||
|  |     User.remote_account.each{|user| user.destroy} | ||||||
|  |   end | ||||||
|  |    | ||||||
|  |   task :claen_cc => [:clean_i18n_vars,:clean_admin_role_and_sub_role] do | ||||||
|  |      | ||||||
|  |   end | ||||||
|  |    | ||||||
|  |   task :clean_i18n_vars => :environment do | ||||||
|  |     i18ns = I18nVariable.any_in( key: ['administrator','computer_center']) | ||||||
|  |     i18ns.each  { |var|  var.destroy } | ||||||
|  |   end | ||||||
|  |    | ||||||
|  |   task :clean_admin_role_and_sub_role => :environment do | ||||||
|  |     data = Role.any_in( key: ['administrator','computer_center']) | ||||||
|  |     data.each  { |var|  var.destroy } | ||||||
|  |      | ||||||
|  |     data = SubRole.any_in( key: ['administrator','computer_center']) | ||||||
|  |     data.each  { |var|  var.destroy } | ||||||
|  |      | ||||||
|  |   end | ||||||
|  | end | ||||||
|  | @ -0,0 +1,14 @@ | ||||||
|  | <br /> | ||||||
|  | <br /> | ||||||
|  | <br /> | ||||||
|  | <br /> | ||||||
|  | <br /> | ||||||
|  |   <ul class="list"> | ||||||
|  | 	  <li><%= link_to t('bulletin.announcement_list'), panel_announcement_back_end_bulletins_path  if is_manager?%></li> | ||||||
|  | 	  <li><%= link_to t('bulletin.new_announcement_class'), panel_announcement_back_end_bulletin_categorys_path if is_manager?%></li> | ||||||
|  | 	  <li><%= link_to t('bulletin.fact_check_for_manager'), panel_announcement_back_end_fact_checks_path if is_manager?%></li> | ||||||
|  | 	 | ||||||
|  | 		<li><%= link_to t('bulletin.my_announcement'), panel_announcement_back_end_list_mine_path if is_sub_manager? %></li> | ||||||
|  | 		<li><%= link_to t('bulletin.new_announcement'), new_panel_announcement_back_end_bulletin_path  if is_sub_manager? %></li> | ||||||
|  | 	   | ||||||
|  |   </ul> | ||||||
|  | @ -0,0 +1,15 @@ | ||||||
|  | <h1><%= bulletin_category.key %></h1> | ||||||
|  | <table> | ||||||
|  |   <tr> | ||||||
|  | 	<th><%= t('bulletin.status') %></th> | ||||||
|  | 	<th><%= t('bulletin.category') %></th> | ||||||
|  | 	<th><%= t('bulletin.title') %></th> | ||||||
|  | 	<th><%= t('bulletin.postdate') %></th> | ||||||
|  | 	<th><%= t('bulletin.deadline') %></th> | ||||||
|  | 	<th><%= t('bulletin.action') %></th> | ||||||
|  |   </tr> | ||||||
|  | 
 | ||||||
|  | <% bulletin_category.bulletins.each do |post| %> | ||||||
|  | 	<%= render :partial => 'panel/announcement/back_end/bulletins/bulletins', :locals => {:post => post,:fact_check_allow=>false} %> | ||||||
|  | <% end %>	 | ||||||
|  | </table> | ||||||
|  | @ -0,0 +1,12 @@ | ||||||
|  | <% content_for :secondary do %> | ||||||
|  | <%= render :partial => '/panel/announcement/back_end/announcement_secondary' %> | ||||||
|  | <% end -%> | ||||||
|  | 
 | ||||||
|  | <%= flash_messages %> | ||||||
|  | 
 | ||||||
|  | <br /> | ||||||
|  | <br /> | ||||||
|  | <br /> | ||||||
|  | <br /> | ||||||
|  | <br /> | ||||||
|  | <%= render :partial => "list_table", :collection => @bulletin_categorys ,:as => :bulletin_category%> | ||||||
		Reference in New Issue