r435 - in trunk/jredmine-client/src/main/redmine/jredmine-2.x: app/controllers config
Author: tchemit Date: 2014-04-16 09:40:23 +0200 (Wed, 16 Apr 2014) New Revision: 435 Url: http://forge.nuiton.org/projects/jredmine/repository/revisions/435 Log: refs #3151 (push back login and logout for backward compat) Modified: trunk/jredmine-client/src/main/redmine/jredmine-2.x/app/controllers/jredmine_controller.rb trunk/jredmine-client/src/main/redmine/jredmine-2.x/config/routes.rb Modified: trunk/jredmine-client/src/main/redmine/jredmine-2.x/app/controllers/jredmine_controller.rb =================================================================== --- trunk/jredmine-client/src/main/redmine/jredmine-2.x/app/controllers/jredmine_controller.rb 2014-04-16 07:25:29 UTC (rev 434) +++ trunk/jredmine-client/src/main/redmine/jredmine-2.x/app/controllers/jredmine_controller.rb 2014-04-16 07:40:23 UTC (rev 435) @@ -34,7 +34,7 @@ before_filter :check_current_user, :only => [:get_user, :get_user_projects, :add_version, :update_version, :next_version, :add_news, :add_attachment, :add_version_attachment, :add_issue_time, :update_issue_time] # find project and check permission - before_filter :find_project, :except => [:ping, :get_user, :get_projects, :get_user_projects, :get_issue_statuses, :get_issue_priorities, :get_enumeration] + before_filter :find_project, :except => [:ping, :login, :logout, :get_user, :get_projects, :get_user_projects, :get_issue_statuses, :get_issue_priorities, :get_enumeration] # find project's version before_filter :find_version, :only => [:get_version, :get_version_issues, :get_version_opened_issues, :get_version_attachments, :add_version_attachment] @@ -51,8 +51,44 @@ # ping service (just to test if service is reachable) def ping render :text => "ping", :status => 200 - end + end + # Login request and validation + def login + if !request.post? + # Logout user : get method not possible + self.logged_user = nil + render_status 405, "POST method required" + else + # Authenticate user + #user = User.try_to_login(params[:username], params[:password]) + user = find_current_user + if user.nil? + # Invalid credentials + render_status 401, "Invalid credentials" + #elsif user.new_record? + # # Onthefly creation failed, + # render_status 401, "User not activated" + else + # Valid user + self.logged_user = user + # always generate a key and set autologin cookie + token = Token.create(:user => user, :action => 'autologin') + cookies[:autologin] = { :value => token.value, :expires => 1.year.from_now } + render_status 200, "User logged in" + end + end + end + + # Log out current user and redirect to welcome page + def logout + cookies.delete :autologin + Token.delete_all(["user_id = ? AND action = ?", User.current.id, 'autologin']) if User.current.logged? + # user is no more connected + self.logged_user = nil + render_status 200, "User logged out" + end + # recuperation des projets def get_projects @projects = Project.find(:all) Modified: trunk/jredmine-client/src/main/redmine/jredmine-2.x/config/routes.rb =================================================================== --- trunk/jredmine-client/src/main/redmine/jredmine-2.x/config/routes.rb 2014-04-16 07:25:29 UTC (rev 434) +++ trunk/jredmine-client/src/main/redmine/jredmine-2.x/config/routes.rb 2014-04-16 07:40:23 UTC (rev 435) @@ -27,7 +27,8 @@ # jredmine : actions with no project context match 'jredmine/:action.xml', :to => 'jredmine#:action', :action => ['get_user', 'get_projects', 'get_user_projects', 'get_issue_statuses', 'get_issue_priorities', 'get_enumeration'], :format => 'xml', :via => ['get'] match 'jredmine/:action.json', :to => 'jredmine#:action', :action => ['get_user', 'get_projects', 'get_user_projects', 'get_issue_statuses', 'get_issue_priorities', 'get_enumeration'], :format => 'json', :via => ['get'] - match 'jredmine/:action', :to => 'jredmine#:action', :action => ['get_user', 'ping', 'get_projects', 'get_user_projects', 'get_issue_statuses', 'get_issue_priorities', 'get_enumeration'], :format => 'xml', :via => ['get'] + match 'jredmine/:action', :to => 'jredmine#:action', :action => ['login'], :format => 'xml', :via => ['post'] + match 'jredmine/:action', :to => 'jredmine#:action', :action => ['get_user', 'ping', 'logout', 'get_projects', 'get_user_projects', 'get_issue_statuses', 'get_issue_priorities', 'get_enumeration'], :format => 'xml', :via => ['get'] # jredmine/action/:pid : actions with project context match 'jredmine/:action.xml/:pid', :to=> 'jredmine#:action', :pid => /.+/, :format => 'xml', :via => ['get', 'post']
participants (1)
-
tchemit@users.nuiton.org