Use more specific query to get logged in players without email

- Reduces the amount of data returned from the DB and the work required to build objects
This commit is contained in:
ljacqu
2017-04-18 22:30:54 +02:00
parent 2f7ebc0ecb
commit 04ca36fe53
10 changed files with 58 additions and 76 deletions
@@ -2,7 +2,6 @@ package fr.xephi.authme.command.executable.authme;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.command.ExecutableCommand;
import fr.xephi.authme.data.auth.PlayerAuth;
import fr.xephi.authme.data.auth.PlayerCache;
import fr.xephi.authme.datasource.DataSource;
import fr.xephi.authme.message.MessageKey;
@@ -65,16 +64,13 @@ public class ChangePasswordAdminCommand implements ExecutableCommand {
* @param sender the sender initiating the password change
*/
private void changePassword(String nameLowercase, String password, CommandSender sender) {
PlayerAuth auth = getAuth(nameLowercase);
if (auth == null) {
if (!isNameRegistered(nameLowercase)) {
commonService.send(sender, MessageKey.UNKNOWN_USER);
return;
}
HashedPassword hashedPassword = passwordSecurity.computeHash(password, nameLowercase);
auth.setPassword(hashedPassword);
if (dataSource.updatePassword(auth)) {
if (dataSource.updatePassword(nameLowercase, hashedPassword)) {
commonService.send(sender, MessageKey.PASSWORD_CHANGED_SUCCESS);
ConsoleLogger.info(sender.getName() + " changed password of " + nameLowercase);
} else {
@@ -82,12 +78,7 @@ public class ChangePasswordAdminCommand implements ExecutableCommand {
}
}
private PlayerAuth getAuth(String nameLowercase) {
if (playerCache.isAuthenticated(nameLowercase)) {
return playerCache.getAuth(nameLowercase);
} else if (dataSource.isAuthAvailable(nameLowercase)) {
return dataSource.getAuth(nameLowercase);
}
return null;
private boolean isNameRegistered(String nameLowercase) {
return playerCache.isAuthenticated(nameLowercase) || dataSource.isAuthAvailable(nameLowercase);
}
}
@@ -54,7 +54,6 @@ class DataStatistics implements DebugSection {
private void outputDatabaseStats(CommandSender sender) {
sender.sendMessage("Total players in DB: " + dataSource.getAccountsRegistered());
sender.sendMessage("Total marked as logged in in DB: " + dataSource.getLoggedPlayers().size());
if (dataSource instanceof CacheDataSource) {
CacheDataSource cacheDataSource = (CacheDataSource) this.dataSource;
sender.sendMessage("Cached PlayerAuth objects: " + cacheDataSource.getCachedAuths().size());