Author: tchemit Date: 2014-04-16 09:25:29 +0200 (Wed, 16 Apr 2014) New Revision: 434 Url: http://forge.nuiton.org/projects/jredmine/repository/revisions/434 Log: refs-50 #2381 Modified: trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/DefaultRedmineService.java trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/RedmineLogguedService.java 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 trunk/jredmine-maven-plugin/src/main/java/org/nuiton/jredmine/plugin/AbstractRedmineMojoWithProject.java Modified: trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/DefaultRedmineService.java =================================================================== --- trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/DefaultRedmineService.java 2014-04-15 20:04:28 UTC (rev 433) +++ trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/DefaultRedmineService.java 2014-04-16 07:25:29 UTC (rev 434) @@ -205,6 +205,18 @@ /////////////////////////////////////////////////////////////////////////// @Override + public User getCurrentUser() throws RedmineServiceException { + checkLoggued(); + RedmineRequest<User> request = + RedmineRequestHelper.action("get_user.xml", User.class); + //FIXME-tchemit-2014-05-16 Should remove this! + if (getClient().getConfiguration().getAuthConfiguration().isUseApiKey()) { + request.getParams().put("key", getClient().getConfiguration().getAuthConfiguration().getApiKey()); + } + return executeRequestAndReturnData(request); + } + + @Override public Project[] getUserProjects() throws RedmineServiceException { checkLoggued(); RedmineRequest<Project> request = RedmineRequestHelper.action( Modified: trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/RedmineLogguedService.java =================================================================== --- trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/RedmineLogguedService.java 2014-04-15 20:04:28 UTC (rev 433) +++ trunk/jredmine-client/src/main/java/org/nuiton/jredmine/service/RedmineLogguedService.java 2014-04-16 07:25:29 UTC (rev 434) @@ -29,6 +29,7 @@ import org.nuiton.jredmine.model.News; import org.nuiton.jredmine.model.Project; import org.nuiton.jredmine.model.TimeEntry; +import org.nuiton.jredmine.model.User; import org.nuiton.jredmine.model.Version; @@ -47,6 +48,15 @@ public interface RedmineLogguedService { /** + * Obtain the redmine user from the credentials given in the service configuration. + * + * @return the current user using the credentials of the service configuration + * @throws RedmineServiceException if any pb + * @since 1.7 + */ + User getCurrentUser() throws RedmineServiceException; + + /** * Obtain for the loggued user, all projets where he belongs. * <p/> * <b>Note:</b> This method requires to be loggued on redmine server. 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-15 20:04:28 UTC (rev 433) +++ trunk/jredmine-client/src/main/redmine/jredmine-2.x/app/controllers/jredmine_controller.rb 2014-04-16 07:25:29 UTC (rev 434) @@ -31,10 +31,10 @@ before_filter :try_find_current_user # check user exists - before_filter :check_current_user, :only => [:get_current_user, :get_user_projects, :add_version, :update_version, :next_version, :add_news, :add_attachment, :add_version_attachment, :add_issue_time, :update_issue_time] + 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_current_user, :get_projects, :get_user_projects, :get_issue_statuses, :get_issue_priorities, :get_enumeration] + before_filter :find_project, :except => [:ping, :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] @@ -70,8 +70,8 @@ render_array_result result, "projects" end - def get_current_user - User.current + def get_user + render_result User.current end # recuperation des priorities d'issues @@ -416,10 +416,10 @@ end end - # Check if User.current exists + # Check if User.current is loggued def check_current_user - if User.current.nil? - render_status 401, "Not connected" + if User.current.anonymous? + render_status 401, "No user connected" end end 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-15 20:04:28 UTC (rev 433) +++ trunk/jredmine-client/src/main/redmine/jredmine-2.x/config/routes.rb 2014-04-16 07:25:29 UTC (rev 434) @@ -25,9 +25,9 @@ RedmineApp::Application.routes.draw do # jredmine : actions with no project context - match 'jredmine/:action.xml', :to => 'jredmine#:action', :action => ['get_current_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_current_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_current_user', 'ping', 'get_projects', 'get_user_projects', 'get_issue_statuses', 'get_issue_priorities', 'get_enumeration'], :format => 'xml', :via => ['get'] + 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'] # jredmine/action/:pid : actions with project context match 'jredmine/:action.xml/:pid', :to=> 'jredmine#:action', :pid => /.+/, :format => 'xml', :via => ['get', 'post'] Modified: trunk/jredmine-maven-plugin/src/main/java/org/nuiton/jredmine/plugin/AbstractRedmineMojoWithProject.java =================================================================== --- trunk/jredmine-maven-plugin/src/main/java/org/nuiton/jredmine/plugin/AbstractRedmineMojoWithProject.java 2014-04-15 20:04:28 UTC (rev 433) +++ trunk/jredmine-maven-plugin/src/main/java/org/nuiton/jredmine/plugin/AbstractRedmineMojoWithProject.java 2014-04-16 07:25:29 UTC (rev 434) @@ -168,25 +168,36 @@ protected boolean initReleaseUser() throws MojoExecutionException { - if (StringUtils.isBlank(username)) { - throw new MojoExecutionException("required a username parameter"); + if (StringUtils.isBlank(username) && StringUtils.isBlank(apiKey)) { + throw new MojoExecutionException("required a username or apikey parameter"); } try { users = service.getProjectMembers(projectId); - User user = User.byLogin(username, users); + User user = null; + if (getAuthConfiguration().isUseApiKey()) { + + // get user by his api key + user = service.getCurrentUser(); + } + + if (user == null && StringUtils.isNotBlank(username)) { + + // try to get user by his login + user = User.byLogin(username, users); + } + if (user == null) { - return false; } + releaseUser = user; return true; } catch (RedmineServiceException e) { - getLog().warn("could not retrieve user '" + username + - "', for reason " + e.getMessage(), e); + getLog().warn("could not retrieve user", e); return false; } }
participants (1)
-
tchemit@users.nuiton.org