35 lines
		
	
	
		
			940 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			940 B
		
	
	
	
		
			Ruby
		
	
	
	
# encoding: utf-8
 | 
						|
 | 
						|
class SessionsController < Devise::SessionsController
 | 
						|
	prepend_before_filter :require_no_authentication, :only => [ :new, :create ]
 | 
						|
 | 
						|
  require 'savon'
 | 
						|
 | 
						|
  def create 
 | 
						|
 | 
						|
    @sys_id = params["sys_id"]
 | 
						|
 | 
						|
    client = Savon.client(wsdl: 'http://sso.ntue.edu.tw/soap/soapserver.php?wsdl')
 | 
						|
 | 
						|
    client.operations
 | 
						|
 | 
						|
    response = client.call(:chkidno, message: { sys_id: @sys_id })
 | 
						|
 | 
						|
    @id = response.body[:chkidno_response][:return][:id]
 | 
						|
 | 
						|
    login_uid = @id
 | 
						|
 | 
						|
  	resource = User.first(conditions:{user_id: login_uid})
 | 
						|
 | 
						|
    if !resource.blank?
 | 
						|
      resource_name = resource.class.to_s.downcase
 | 
						|
  	  sign_in(resource_name, resource)
 | 
						|
  	  redirect_to after_sign_in_path_for(resource)
 | 
						|
  	else
 | 
						|
  	  flash[:error] = "很抱歉,您無此權限或帳號登入本站,請洽本站管理員<br />Sorry, you don't have the account or authority to login. Please contact the website administrator."
 | 
						|
  	  redirect_to :root
 | 
						|
    end
 | 
						|
 | 
						|
  end
 | 
						|
 | 
						|
end |