summaryrefslogtreecommitdiffstats
path: root/src/main/java
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2013-11-25 00:00:41 -0500
committerJames Moger <james.moger@gitblit.com>2013-11-29 11:05:51 -0500
commitf19b78e12517db6c4dcbb1981423830ea39916b3 (patch)
tree018f2389bf235c25bb3a2eda73ae9ecd71d7f3a1 /src/main/java
parent04a98505a4ab8f48aee22800fcac193d9367d0ae (diff)
downloadgitblit-f19b78e12517db6c4dcbb1981423830ea39916b3.tar.gz
gitblit-f19b78e12517db6c4dcbb1981423830ea39916b3.zip
Revised committer verification to require email address
Change-Id: I5298c93e03099813f5713a4effd87913429aa3dc
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/com/gitblit/git/GitblitReceivePack.java20
-rw-r--r--src/main/java/com/gitblit/models/UserModel.java13
2 files changed, 13 insertions, 20 deletions
diff --git a/src/main/java/com/gitblit/git/GitblitReceivePack.java b/src/main/java/com/gitblit/git/GitblitReceivePack.java
index 95d17fa5..ebea2658 100644
--- a/src/main/java/com/gitblit/git/GitblitReceivePack.java
+++ b/src/main/java/com/gitblit/git/GitblitReceivePack.java
@@ -167,8 +167,11 @@ public class GitblitReceivePack extends ReceivePack implements PreReceiveHook, P
if (repository.accessRestriction.atLeast(AccessRestrictionType.PUSH) && repository.verifyCommitter) {
// enforce committer verification
if (StringUtils.isEmpty(user.emailAddress)) {
- // emit warning if user does not have an email address
- LOGGER.warn(MessageFormat.format("Consider setting an email address for {0} ({1}) to improve committer verification.", user.getDisplayName(), user.username));
+ // reject the push because the pushing account does not have an email address
+ for (ReceiveCommand cmd : commands) {
+ sendRejection(cmd, "Sorry, the account \"{0}\" does not have an email address set for committer verification!", user.username);
+ }
+ return;
}
// Optionally enforce that the committer of first parent chain
@@ -201,16 +204,9 @@ public class GitblitReceivePack extends ReceivePack implements PreReceiveHook, P
PersonIdent committer = commit.getCommitterIdent();
if (!user.is(committer.getName(), committer.getEmailAddress())) {
- String reason;
- if (StringUtils.isEmpty(user.emailAddress)) {
- // account does not have an email address
- reason = MessageFormat.format("{0} by {1} <{2}> was not committed by {3} ({4})",
- commit.getId().name(), committer.getName(), StringUtils.isEmpty(committer.getEmailAddress()) ? "?":committer.getEmailAddress(), user.getDisplayName(), user.username);
- } else {
- // account has an email address
- reason = MessageFormat.format("{0} by {1} <{2}> was not committed by {3} ({4}) <{5}>",
- commit.getId().name(), committer.getName(), StringUtils.isEmpty(committer.getEmailAddress()) ? "?":committer.getEmailAddress(), user.getDisplayName(), user.username, user.emailAddress);
- }
+ // verification failed
+ String reason = MessageFormat.format("{0} by {1} <{2}> was not committed by {3} ({4}) <{5}>",
+ commit.getId().name(), committer.getName(), StringUtils.isEmpty(committer.getEmailAddress()) ? "?":committer.getEmailAddress(), user.getDisplayName(), user.username, user.emailAddress);
LOGGER.warn(reason);
cmd.setResult(Result.REJECTED_OTHER_REASON, reason);
allRejected &= true;
diff --git a/src/main/java/com/gitblit/models/UserModel.java b/src/main/java/com/gitblit/models/UserModel.java
index 446db3ab..0b59927f 100644
--- a/src/main/java/com/gitblit/models/UserModel.java
+++ b/src/main/java/com/gitblit/models/UserModel.java
@@ -648,22 +648,19 @@ public class UserModel implements Principal, Serializable, Comparable<UserModel>
* @return true, if the name and email address match this account
*/
public boolean is(String name, String email) {
- // at a minimum a usename or display name must be supplied
- if (StringUtils.isEmpty(name)) {
+ // at a minimum a username or display name AND email address must be supplied
+ if (StringUtils.isEmpty(name) || StringUtils.isEmpty(email)) {
return false;
}
boolean nameVerified = name.equalsIgnoreCase(username) || name.equalsIgnoreCase(getDisplayName());
boolean emailVerified = false;
if (StringUtils.isEmpty(emailAddress)) {
// user account has not specified an email address
- // rely on username/displayname verification
- emailVerified = true;
+ // fail
+ emailVerified = false;
} else {
// user account has specified an email address
- // require email address verification
- if (!StringUtils.isEmpty(email)) {
- emailVerified = email.equalsIgnoreCase(emailAddress);
- }
+ emailVerified = email.equalsIgnoreCase(emailAddress);
}
return nameVerified && emailVerified;
}