Commit 3c96d8b79773004868d3a1d2ef8f48de1cce6731

Authored by Rodrigo Souto
1 parent f35e081b

[stoa] Adding support for usp_id authentication on stoa web-service

plugins/stoa/controllers/stoa_plugin_controller.rb
@@ -3,7 +3,13 @@ class StoaPluginController < PublicController @@ -3,7 +3,13 @@ class StoaPluginController < PublicController
3 3
4 def authenticate 4 def authenticate
5 if request.ssl? && request.post? 5 if request.ssl? && request.post?
6 - user = User.authenticate(params[:login], params[:password], environment) 6 + if params[:login].blank?
  7 + person = Person.find_by_usp_id(params[:usp_id])
  8 + login = person ? person.user.login : nil
  9 + else
  10 + login = params[:login]
  11 + end
  12 + user = User.authenticate(login, params[:password], environment)
7 if user 13 if user
8 result = { 14 result = {
9 :username => user.login, 15 :username => user.login,
plugins/stoa/test/functional/stoa_plugin_controller_test.rb
@@ -90,6 +90,23 @@ class StoaPluginControllerTest < ActionController::TestCase @@ -90,6 +90,23 @@ class StoaPluginControllerTest < ActionController::TestCase
90 assert !json_response['exists'] 90 assert !json_response['exists']
91 end 91 end
92 92
  93 + should 'authenticate with usp_id' do
  94 + @request.stubs(:ssl?).returns(true)
  95 + post :authenticate, :usp_id => user.person.usp_id.to_s, :password => '123456'
  96 +
  97 + assert_nil json_response['error']
  98 + assert_equal user.login, json_response['username']
  99 + end
  100 +
  101 + should 'not crash if usp_id is invalid' do
  102 + @request.stubs(:ssl?).returns(true)
  103 + assert_nothing_raised do
  104 + post :authenticate, :usp_id => 12321123, :password => '123456'
  105 + end
  106 + assert_not_nil json_response['error']
  107 + assert_match /user/,json_response['error']
  108 + end
  109 +
93 private 110 private
94 111
95 def json_response 112 def json_response