Skip to content

Commit

Permalink
Improve PasswordEncoder Error Messaging
Browse files Browse the repository at this point in the history
Closes gh-14880
  • Loading branch information
abimaelrsergio committed Apr 25, 2024
1 parent 6ca0162 commit a0e5af3
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 10 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2022 the original author or authors.
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -19,6 +19,8 @@
import java.util.HashMap;
import java.util.Map;

import org.springframework.util.StringUtils;

/**
* A password encoder that delegates to another PasswordEncoder based upon a prefixed
* identifier.
Expand Down Expand Up @@ -129,6 +131,10 @@ public class DelegatingPasswordEncoder implements PasswordEncoder {

private static final String DEFAULT_ID_SUFFIX = "}";

public static final String NO_PASSWORD_ENCODER_MAPPED = "There is no PasswordEncoder mapped for the id \"%s\"";

public static final String NO_PASSWORD_ENCODER_PREFIX = "You have entered a password with no PasswordEncoder. If that is your intent, it should be prefixed with `{noop}`.";

private final String idPrefix;

private final String idSuffix;
Expand Down Expand Up @@ -286,15 +292,10 @@ public String encode(CharSequence rawPassword) {
@Override
public boolean matches(CharSequence rawPassword, String prefixEncodedPassword) {
String id = extractId(prefixEncodedPassword);
checkIfStringIsEmptyOrNull(id);
throw new IllegalArgumentException("There is no PasswordEncoder mapped for the id \"" + id + "\"");
}

private void checkIfStringIsEmptyOrNull(String string) {
if (string == null || string.isEmpty()) {
throw new IllegalArgumentException(
"You have entered a password with no PasswordEncoder. If that is your intent, it should be prefixed with `{noop}`.");
if (StringUtils.hasText(id)) {
throw new IllegalArgumentException(String.format(NO_PASSWORD_ENCODER_MAPPED, id));
}
throw new IllegalArgumentException(NO_PASSWORD_ENCODER_PREFIX);
}

}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2002-2022 the original author or authors.
* Copyright 2002-2024 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down

0 comments on commit a0e5af3

Please sign in to comment.