This is an automated email from the git hooks/post-receive script. New commit to branch feature/GIT in repository scmwebeditor. See http://git.nuiton.org/scmwebeditor.git commit b4cc8a4a40a3b1b5b53ceaf9a7ac9858f5ef95df Author: Hugo PIGEON <hpigeon@codelutin.com> Date: Thu May 7 10:43:49 2015 +0200 Fix the authentication problems --- .../org/nuiton/scmwebeditor/GitConnection.java | 14 ++++++-- .../nuiton/scmwebeditor/ScmWebEditorConfig.java | 2 +- .../actions/AbstractScmWebEditorAction.java | 37 ++++++++++++++++++++++ .../nuiton/scmwebeditor/actions/BrowseAction.java | 2 +- .../nuiton/scmwebeditor/actions/EditAction.java | 27 +++++----------- .../nuiton/scmwebeditor/actions/UploadAction.java | 17 ++-------- 6 files changed, 61 insertions(+), 38 deletions(-) diff --git a/src/main/java/org/nuiton/scmwebeditor/GitConnection.java b/src/main/java/org/nuiton/scmwebeditor/GitConnection.java index c5ea428..56bbdad 100644 --- a/src/main/java/org/nuiton/scmwebeditor/GitConnection.java +++ b/src/main/java/org/nuiton/scmwebeditor/GitConnection.java @@ -471,7 +471,7 @@ public class GitConnection implements ScmConnection { if (log.isErrorEnabled()) { log.error("Error while cloning the repository", e); } - resultDto.setError(UploadResultDto.ERROR); + resultDto.setError(UploadResultDto.AUTH_ERROR); return resultDto; } @@ -761,14 +761,22 @@ public class GitConnection implements ScmConnection { localDirectory = new File(localReposPath + "/" + sessionId + "/" + hashedAddress); - CredentialsProvider credentials = new UsernamePasswordCredentialsProvider(username, password); + CredentialsProvider credentials = null; + + if (username != null && password != null) { + credentials = new UsernamePasswordCredentialsProvider(username, password); + } if (!localDirectory.exists()) { CloneCommand clone = Git.cloneRepository(); clone.setURI(addressGit); clone.setDirectory(localDirectory); - clone.setCredentialsProvider(credentials); + + if (username != null && password != null) { + clone.setCredentialsProvider(credentials); + } + try { clone.call(); } catch (InvalidRemoteException e) { diff --git a/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorConfig.java b/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorConfig.java index db1085c..08f2046 100644 --- a/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorConfig.java +++ b/src/main/java/org/nuiton/scmwebeditor/ScmWebEditorConfig.java @@ -83,7 +83,7 @@ public class ScmWebEditorConfig { providers.put(providerKey, providerClass); } } - + return providers; } diff --git a/src/main/java/org/nuiton/scmwebeditor/actions/AbstractScmWebEditorAction.java b/src/main/java/org/nuiton/scmwebeditor/actions/AbstractScmWebEditorAction.java index 486e28a..6e3e32a 100644 --- a/src/main/java/org/nuiton/scmwebeditor/actions/AbstractScmWebEditorAction.java +++ b/src/main/java/org/nuiton/scmwebeditor/actions/AbstractScmWebEditorAction.java @@ -388,6 +388,43 @@ public abstract class AbstractScmWebEditorAction extends BaseAction implements S return provider; } + protected String[] getUsernamePwFromSession(String repositoryUUID, String username, String pw) { + + String[] usernamePw = new String[2]; + usernamePw[0] = username; + usernamePw[1] = pw; + + if (username == null || pw == null) { + + String login = getScmSession().getUsername(repositoryUUID); + String password = getScmSession().getPassword(repositoryUUID); + + if (login != null && password != null) { + + // getting the authentication information in session + usernamePw[0] = login; + usernamePw[1] = password; + } + } else { + if (username.equals("") || pw.equals("")) { + + String login = getScmSession().getUsername(repositoryUUID); + String password = getScmSession().getPassword(repositoryUUID); + + if (login != null && password != null) { + + // getting the authentication information in session + usernamePw[0] = login; + usernamePw[1] = password; + } + } else { + getScmSession().addScmUser(repositoryUUID, username, pw); + } + } + + return usernamePw; + } + public String getUsername(String url) { return getScmSession().getUsername(url); } diff --git a/src/main/java/org/nuiton/scmwebeditor/actions/BrowseAction.java b/src/main/java/org/nuiton/scmwebeditor/actions/BrowseAction.java index f047b5e..95319fa 100644 --- a/src/main/java/org/nuiton/scmwebeditor/actions/BrowseAction.java +++ b/src/main/java/org/nuiton/scmwebeditor/actions/BrowseAction.java @@ -264,7 +264,7 @@ public class BrowseAction extends AbstractScmWebEditorAction implements ServletR } if (username != null && pw != null) { - if (!username.equals("anonymous") && !pw.equals("anonymous")) { + if (!username.equals("anonymous") && !username.equals("") && !pw.equals("anonymous") && !pw.equals("")) { BlowfishCipherService bf = new BlowfishCipherService(); byte[] privateKey = Base64.decode(ScmWebEditorConfig.getKey()); diff --git a/src/main/java/org/nuiton/scmwebeditor/actions/EditAction.java b/src/main/java/org/nuiton/scmwebeditor/actions/EditAction.java index 10c2c08..3800fa4 100644 --- a/src/main/java/org/nuiton/scmwebeditor/actions/EditAction.java +++ b/src/main/java/org/nuiton/scmwebeditor/actions/EditAction.java @@ -98,29 +98,18 @@ public class EditAction extends ScmWebEditorMainAction { if (saveCookie) { if (username != null && pw != null) { - Cookie authCookie = new Cookie(repositoryUUID, bf.encrypt((username + "," + pw).getBytes(), privateKey).toBase64()); - authCookie.setMaxAge(60 * 60 * 24 * 365); - response.addCookie(authCookie); + if (!username.equals("") && !pw.equals("")) { + Cookie authCookie = new Cookie(repositoryUUID, bf.encrypt((username + "," + pw).getBytes(), privateKey).toBase64()); + authCookie.setMaxAge(60 * 60 * 24 * 365); + response.addCookie(authCookie); + } } } - - /* - * Getting the information in session - */ - if (username == null && pw == null) { - if (getScmSession().getUsername(repositoryUUID) != null && getScmSession().getPassword(repositoryUUID) != null) { - // getting the authentication information from the session - username = getScmSession().getUsername(repositoryUUID); - pw = getScmSession().getPassword(repositoryUUID); - } else { - username = null; - pw = null; - } - } else { - getScmSession().addScmUser(repositoryUUID, username, pw); - } + String[] usernamePw = getUsernamePwFromSession(repositoryUUID, username, pw); + username = usernamePw[0]; + pw = usernamePw[1]; String name = username; String password = pw; diff --git a/src/main/java/org/nuiton/scmwebeditor/actions/UploadAction.java b/src/main/java/org/nuiton/scmwebeditor/actions/UploadAction.java index 84a7f35..8bb8e3d 100644 --- a/src/main/java/org/nuiton/scmwebeditor/actions/UploadAction.java +++ b/src/main/java/org/nuiton/scmwebeditor/actions/UploadAction.java @@ -163,20 +163,9 @@ public class UploadAction extends AbstractScmWebEditorAction implements ServletR repositoryUUID = address.replace(' ', '_'); } - - if (username == null && pw == null) { - if (getScmSession().getUsername(repositoryUUID) != null && getScmSession().getPassword(repositoryUUID) != null) { - // getting the authentication information in session - username = getScmSession().getUsername(repositoryUUID); - pw = getScmSession().getPassword(repositoryUUID); - } else { - username = null; - pw = null; - } - } else { - getScmSession().addScmUser(repositoryUUID, username, pw); - } - + String[] usernamePw = getUsernamePwFromSession(repositoryUUID, username, pw); + username = usernamePw[0]; + pw = usernamePw[1]; UploadDto dto = new UploadDto(); dto.setUsername(username); -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.