improved error message display on login papge
Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
@@ -5,13 +5,13 @@ import static de.srsoftware.oidc.api.Constants.*;
|
||||
import static java.lang.System.Logger.Level.WARNING;
|
||||
import static java.util.Optional.empty;
|
||||
|
||||
import de.srsoftware.oidc.api.Error;
|
||||
import de.srsoftware.oidc.api.Payload;
|
||||
import de.srsoftware.oidc.api.Result;
|
||||
import de.srsoftware.oidc.api.UserService;
|
||||
import de.srsoftware.oidc.api.data.AccessToken;
|
||||
import de.srsoftware.oidc.api.data.User;
|
||||
import de.srsoftware.utils.Error;
|
||||
import de.srsoftware.utils.PasswordHasher;
|
||||
import de.srsoftware.utils.Payload;
|
||||
import de.srsoftware.utils.Result;
|
||||
import java.util.*;
|
||||
|
||||
public class EncryptedUserService extends EncryptedConfig implements UserService {
|
||||
@@ -103,8 +103,7 @@ public class EncryptedUserService extends EncryptedConfig implements UserService
|
||||
if (optLock.isPresent()) {
|
||||
var lock = optLock.get();
|
||||
LOG.log(WARNING, "{0} is locked after {1} failed logins. Lock will be released at {2}", username, lock.attempts(), lock.releaseTime());
|
||||
Error<User> err = Error.message(ERROR_LOCKED);
|
||||
return err.metadata("attempts", lock.attempts(), "release", lock.releaseTime());
|
||||
return Error.message(ERROR_LOCKED, ATTEMPTS, lock.attempts(), RELEASE, lock.releaseTime());
|
||||
}
|
||||
for (var encryptedUser : backend.list()) {
|
||||
var decryptedUser = decrypt(encryptedUser);
|
||||
@@ -117,8 +116,7 @@ public class EncryptedUserService extends EncryptedConfig implements UserService
|
||||
|
||||
var lock = lock(username);
|
||||
LOG.log(WARNING, "Login failed for {0} → locking account until {1}", username, lock.releaseTime());
|
||||
Error<User> err = Error.message(ERROR_LOGIN_FAILED);
|
||||
return err.metadata("release", lock.releaseTime());
|
||||
return Error.message(ERROR_LOGIN_FAILED, RELEASE, lock.releaseTime());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,15 +1,17 @@
|
||||
/* © SRSoftware 2024 */
|
||||
import static de.srsoftware.oidc.api.Constants.*;
|
||||
import static de.srsoftware.utils.Optionals.nullable;
|
||||
import static de.srsoftware.utils.Strings.uuid;
|
||||
import static java.lang.System.Logger.Level.WARNING;
|
||||
|
||||
import de.srsoftware.oidc.api.Result;
|
||||
import de.srsoftware.oidc.api.UserService;
|
||||
import de.srsoftware.oidc.api.UserServiceTest;
|
||||
import de.srsoftware.oidc.api.*;
|
||||
import de.srsoftware.oidc.api.data.AccessToken;
|
||||
import de.srsoftware.oidc.api.data.User;
|
||||
import de.srsoftware.oidc.datastore.encrypted.EncryptedUserService;
|
||||
import de.srsoftware.utils.Error;
|
||||
import de.srsoftware.utils.PasswordHasher;
|
||||
import de.srsoftware.utils.Payload;
|
||||
import de.srsoftware.utils.Result;
|
||||
import java.io.File;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -74,18 +76,19 @@ public class EncryptedUserServiceTest extends UserServiceTest {
|
||||
if (optLock.isPresent()) {
|
||||
var lock = optLock.get();
|
||||
LOG.log(WARNING, "{} is locked after {} failed logins. Lock will be released at {}", username, lock.attempts(), lock.releaseTime());
|
||||
return Optional.empty();
|
||||
return Error.message(ERROR_LOCKED, ATTEMPTS, lock.attempts(), RELEASE, lock.releaseTime());
|
||||
}
|
||||
|
||||
for (var entry : users.entrySet()) {
|
||||
var user = entry.getValue();
|
||||
if (user.username().equals(username) && passwordMatches(password, user)) {
|
||||
unlock(username);
|
||||
return Optional.of(user);
|
||||
return Payload.of(user);
|
||||
}
|
||||
}
|
||||
lock(username);
|
||||
return Optional.empty();
|
||||
var lock = lock(username);
|
||||
LOG.log(WARNING, "Login failed for {0} → locking account until {1}", username, lock.releaseTime());
|
||||
return Error.message(ERROR_LOGIN_FAILED, RELEASE, lock.releaseTime());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user