From f6a1070b78637466702736f301c212fa11a7c692 Mon Sep 17 00:00:00 2001 From: Spen Date: Fri, 13 Sep 2013 16:40:28 +0800 Subject: [PATCH] fgu login sso --- app/controllers/sessions_controller.rb | 59 ++++++++++++++++++++++++++ config/routes.rb | 2 + 2 files changed, 61 insertions(+) create mode 100644 app/controllers/sessions_controller.rb diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb new file mode 100644 index 000000000..2397fef47 --- /dev/null +++ b/app/controllers/sessions_controller.rb @@ -0,0 +1,59 @@ +# encoding: utf-8 + +class SessionsController < Devise::SessionsController + prepend_before_filter :require_no_authentication, :only => [ :new, :create ] + + require 'net/http' + require 'uri' + + def create + + @user_id = params[:user][:user_id] + + if @user_id == 'rulingcom' + + resource = User.first(conditions:{user_id: @user_id}) + + 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] = "很抱歉,您無此權限或帳號登入本站,請洽本站管理員
Sorry, you don't have the account or authority to login. Please contact the website administrator." + redirect_to :root + + end + + else + + uri = URI('http://www.fgu.edu.tw/cgi-bin/check_intrant.pl') + response = Net::HTTP.post_form(uri, 'username' => @user_id, 'password' => params[:user][:password]) + @response = response.body + + if @response.include?("username=#{@user_id}") + + resource = User.first(conditions:{user_id: @user_id}) + + 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] = "很抱歉,您無此權限或帳號登入本站,請洽本站管理員
Sorry, you don't have the account or authority to login. Please contact the website administrator." + redirect_to :root + end + + else + flash[:error] = "很抱歉,您無此權限或帳號登入本站,請洽本站管理員
Sorry, you don't have the account or authority to login. Please contact the website administrator." + redirect_to :root + end + + end + + end + + +end \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 716918775..d5aed05a9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -3,6 +3,8 @@ Orbit::Application.routes.draw do + devise_for :users,:controllers => {:sessions => 'sessions'} + devise_for :users do match "/users_passwd" => "desktop/registrations#update", :as => :users_passwd, :via => :put end