mirror of
https://github.com/GravitLauncher/Launcher
synced 2024-11-15 11:39:11 +03:00
[FEATURE] Обобщение UserDAO
This commit is contained in:
parent
868f5295d2
commit
aced376e5e
8 changed files with 61 additions and 36 deletions
|
@ -19,6 +19,7 @@
|
||||||
import pro.gravit.launchserver.components.AuthLimiterComponent;
|
import pro.gravit.launchserver.components.AuthLimiterComponent;
|
||||||
import pro.gravit.launchserver.components.Component;
|
import pro.gravit.launchserver.components.Component;
|
||||||
import pro.gravit.launchserver.config.LaunchServerRuntimeConfig;
|
import pro.gravit.launchserver.config.LaunchServerRuntimeConfig;
|
||||||
|
import pro.gravit.launchserver.dao.UserService;
|
||||||
import pro.gravit.launchserver.legacy.Response;
|
import pro.gravit.launchserver.legacy.Response;
|
||||||
import pro.gravit.launchserver.manangers.*;
|
import pro.gravit.launchserver.manangers.*;
|
||||||
import pro.gravit.launchserver.manangers.hook.AuthHookManager;
|
import pro.gravit.launchserver.manangers.hook.AuthHookManager;
|
||||||
|
@ -36,8 +37,6 @@
|
||||||
import pro.gravit.launcher.profiles.ClientProfile;
|
import pro.gravit.launcher.profiles.ClientProfile;
|
||||||
import pro.gravit.launcher.serialize.signed.SignedObjectHolder;
|
import pro.gravit.launcher.serialize.signed.SignedObjectHolder;
|
||||||
import pro.gravit.utils.helper.*;
|
import pro.gravit.utils.helper.*;
|
||||||
import pro.gravit.launchserver.binary.*;
|
|
||||||
import pro.gravit.launchserver.manangers.*;
|
|
||||||
import pro.gravit.utils.Version;
|
import pro.gravit.utils.Version;
|
||||||
import pro.gravit.utils.command.CommandHandler;
|
import pro.gravit.utils.command.CommandHandler;
|
||||||
import pro.gravit.utils.command.JLineCommandHandler;
|
import pro.gravit.utils.command.JLineCommandHandler;
|
||||||
|
@ -426,6 +425,8 @@ public static void main(String... args) throws Throwable {
|
||||||
|
|
||||||
public final ModulesManager modulesManager;
|
public final ModulesManager modulesManager;
|
||||||
|
|
||||||
|
public final UserService userService;
|
||||||
|
|
||||||
public final MirrorManager mirrorManager;
|
public final MirrorManager mirrorManager;
|
||||||
|
|
||||||
public final ReloadManager reloadManager;
|
public final ReloadManager reloadManager;
|
||||||
|
@ -578,6 +579,7 @@ public LaunchServer(Path dir, boolean testEnv, String[] args) throws IOException
|
||||||
socketHookManager = new SocketHookManager();
|
socketHookManager = new SocketHookManager();
|
||||||
authHookManager = new AuthHookManager();
|
authHookManager = new AuthHookManager();
|
||||||
configManager = new ConfigManager();
|
configManager = new ConfigManager();
|
||||||
|
userService = new UserService(this);
|
||||||
GarbageManager.registerNeedGC(sessionManager);
|
GarbageManager.registerNeedGC(sessionManager);
|
||||||
reloadManager.registerReloadable("launchServer", this);
|
reloadManager.registerReloadable("launchServer", this);
|
||||||
registerObject("permissionsHandler", config.permissionsHandler);
|
registerObject("permissionsHandler", config.permissionsHandler);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
package pro.gravit.launchserver.auth.handler;
|
package pro.gravit.launchserver.auth.handler;
|
||||||
|
|
||||||
|
import pro.gravit.launchserver.LaunchServer;
|
||||||
import pro.gravit.launchserver.hibernate.User;
|
import pro.gravit.launchserver.hibernate.User;
|
||||||
import pro.gravit.launchserver.hibernate.UserService;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
@ -9,35 +9,31 @@
|
||||||
public class HibernateAuthHandler extends CachedAuthHandler {
|
public class HibernateAuthHandler extends CachedAuthHandler {
|
||||||
@Override
|
@Override
|
||||||
protected Entry fetchEntry(String username) throws IOException {
|
protected Entry fetchEntry(String username) throws IOException {
|
||||||
UserService service = new UserService();
|
User user = LaunchServer.server.userService.findUserByUsername(username);
|
||||||
User user = service.findUserByUsername(username);
|
|
||||||
if(user == null) return null;
|
if(user == null) return null;
|
||||||
return new Entry(user.uuid, username, user.getAccessToken(), user.serverID);
|
return new Entry(user.uuid, username, user.getAccessToken(), user.serverID);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Entry fetchEntry(UUID uuid) throws IOException {
|
protected Entry fetchEntry(UUID uuid) throws IOException {
|
||||||
UserService service = new UserService();
|
User user = LaunchServer.server.userService.findUserByUUID(uuid);
|
||||||
User user = service.findUserByUUID(uuid);
|
|
||||||
if(user == null) return null;
|
if(user == null) return null;
|
||||||
return new Entry(user.uuid, user.username, user.getAccessToken(), user.serverID);
|
return new Entry(user.uuid, user.username, user.getAccessToken(), user.serverID);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean updateAuth(UUID uuid, String username, String accessToken) throws IOException {
|
protected boolean updateAuth(UUID uuid, String username, String accessToken) throws IOException {
|
||||||
UserService service = new UserService();
|
User user = LaunchServer.server.userService.findUserByUUID(uuid);
|
||||||
User user = service.findUserByUUID(uuid);
|
|
||||||
user.setAccessToken(accessToken);
|
user.setAccessToken(accessToken);
|
||||||
service.updateUser(user);
|
LaunchServer.server.userService.updateUser(user);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean updateServerID(UUID uuid, String serverID) throws IOException {
|
protected boolean updateServerID(UUID uuid, String serverID) throws IOException {
|
||||||
UserService service = new UserService();
|
User user = LaunchServer.server.userService.findUserByUUID(uuid);
|
||||||
User user = service.findUserByUUID(uuid);
|
|
||||||
user.serverID = serverID;
|
user.serverID = serverID;
|
||||||
service.updateUser(user);
|
LaunchServer.server.userService.updateUser(user);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package pro.gravit.launchserver.auth.provider;
|
package pro.gravit.launchserver.auth.provider;
|
||||||
|
|
||||||
|
import pro.gravit.launchserver.LaunchServer;
|
||||||
import pro.gravit.launchserver.auth.AuthException;
|
import pro.gravit.launchserver.auth.AuthException;
|
||||||
import pro.gravit.launchserver.hibernate.User;
|
import pro.gravit.launchserver.hibernate.User;
|
||||||
import pro.gravit.launchserver.hibernate.UserService;
|
|
||||||
import pro.gravit.utils.helper.SecurityHelper;
|
import pro.gravit.utils.helper.SecurityHelper;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
@ -10,8 +10,7 @@
|
||||||
public class HibernateAuthProvider extends AuthProvider {
|
public class HibernateAuthProvider extends AuthProvider {
|
||||||
@Override
|
@Override
|
||||||
public AuthProviderResult auth(String login, String password, String ip) throws Exception {
|
public AuthProviderResult auth(String login, String password, String ip) throws Exception {
|
||||||
UserService service = new UserService();
|
User user = LaunchServer.server.userService.findUserByUsername(login);
|
||||||
User user = service.findUserByUsername(login);
|
|
||||||
if(user == null || !user.verifyPassword(password))
|
if(user == null || !user.verifyPassword(password))
|
||||||
{
|
{
|
||||||
if(user ==null) throw new AuthException("Username incorrect");
|
if(user ==null) throw new AuthException("Username incorrect");
|
||||||
|
|
|
@ -1,16 +1,14 @@
|
||||||
package pro.gravit.launchserver.components;
|
package pro.gravit.launchserver.components;
|
||||||
|
|
||||||
import org.hibernate.SessionFactory;
|
|
||||||
import org.hibernate.cfg.Configuration;
|
import org.hibernate.cfg.Configuration;
|
||||||
import pro.gravit.launchserver.LaunchServer;
|
import pro.gravit.launchserver.LaunchServer;
|
||||||
|
import pro.gravit.launchserver.dao.LaunchServerDaoFactory;
|
||||||
import pro.gravit.launchserver.hibernate.HibernateManager;
|
import pro.gravit.launchserver.hibernate.HibernateManager;
|
||||||
import pro.gravit.launchserver.hibernate.User;
|
import pro.gravit.launchserver.hibernate.User;
|
||||||
import pro.gravit.launchserver.hibernate.UserService;
|
import pro.gravit.launchserver.hibernate.UserDAOImpl;
|
||||||
import pro.gravit.utils.helper.LogHelper;
|
import pro.gravit.utils.helper.CommonHelper;
|
||||||
|
|
||||||
import javax.persistence.Persistence;
|
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class HibernateConfiguratorComponent extends Component {
|
public class HibernateConfiguratorComponent extends Component {
|
||||||
public String driver;
|
public String driver;
|
||||||
|
@ -19,18 +17,11 @@ public class HibernateConfiguratorComponent extends Component {
|
||||||
public String password;
|
public String password;
|
||||||
public String pool_size;
|
public String pool_size;
|
||||||
public String hibernateConfig;
|
public String hibernateConfig;
|
||||||
|
public boolean parallelHibernateInit;
|
||||||
@Override
|
@Override
|
||||||
public void preInit(LaunchServer launchServer) {
|
public void preInit(LaunchServer launchServer) {
|
||||||
|
LaunchServerDaoFactory.setUserDaoProvider(UserDAOImpl::new);
|
||||||
}
|
Runnable init = () -> {
|
||||||
|
|
||||||
@Override
|
|
||||||
public void init(LaunchServer launchServer) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void postInit(LaunchServer launchServer) {
|
|
||||||
Configuration cfg = new Configuration()
|
Configuration cfg = new Configuration()
|
||||||
.addAnnotatedClass(User.class)
|
.addAnnotatedClass(User.class)
|
||||||
.setProperty("hibernate.connection.driver_class", driver)
|
.setProperty("hibernate.connection.driver_class", driver)
|
||||||
|
@ -41,6 +32,20 @@ public void postInit(LaunchServer launchServer) {
|
||||||
if(hibernateConfig != null)
|
if(hibernateConfig != null)
|
||||||
cfg.configure(Paths.get(hibernateConfig).toFile());
|
cfg.configure(Paths.get(hibernateConfig).toFile());
|
||||||
HibernateManager.sessionFactory = cfg.buildSessionFactory();
|
HibernateManager.sessionFactory = cfg.buildSessionFactory();
|
||||||
|
};
|
||||||
|
if(parallelHibernateInit)
|
||||||
|
CommonHelper.newThread("Hibernate Thread", true, init);
|
||||||
|
else
|
||||||
|
init.run();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void init(LaunchServer launchServer) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void postInit(LaunchServer launchServer) {
|
||||||
//UserService service = new UserService();
|
//UserService service = new UserService();
|
||||||
//List<User> users = service.findAllUsers();
|
//List<User> users = service.findAllUsers();
|
||||||
//User newUser = new User();
|
//User newUser = new User();
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
package pro.gravit.launchserver.dao;
|
||||||
|
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
|
public class LaunchServerDaoFactory {
|
||||||
|
private static Supplier<UserDAO> getUserDao;
|
||||||
|
|
||||||
|
public static void setUserDaoProvider(Supplier<UserDAO> getDao) {
|
||||||
|
LaunchServerDaoFactory.getUserDao = getDao;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static UserDAO createUserDao()
|
||||||
|
{
|
||||||
|
return getUserDao.get();
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1,6 @@
|
||||||
package pro.gravit.launchserver.hibernate;
|
package pro.gravit.launchserver.dao;
|
||||||
|
|
||||||
|
import pro.gravit.launchserver.hibernate.User;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
|
@ -1,13 +1,17 @@
|
||||||
package pro.gravit.launchserver.hibernate;
|
package pro.gravit.launchserver.dao;
|
||||||
|
|
||||||
|
import pro.gravit.launchserver.LaunchServer;
|
||||||
|
import pro.gravit.launchserver.hibernate.User;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class UserService {
|
public class UserService {
|
||||||
|
|
||||||
private UserDAO usersDao = new UserDAOImpl();
|
private final UserDAO usersDao;
|
||||||
|
|
||||||
public UserService() {
|
public UserService(LaunchServer server) {
|
||||||
|
usersDao = LaunchServerDaoFactory.createUserDao();
|
||||||
}
|
}
|
||||||
|
|
||||||
public User findUser(int id) {
|
public User findUser(int id) {
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
import org.hibernate.Session;
|
import org.hibernate.Session;
|
||||||
import org.hibernate.Transaction;
|
import org.hibernate.Transaction;
|
||||||
|
import pro.gravit.launchserver.dao.UserDAO;
|
||||||
|
|
||||||
import javax.persistence.EntityManager;
|
import javax.persistence.EntityManager;
|
||||||
import javax.persistence.criteria.CriteriaBuilder;
|
import javax.persistence.criteria.CriteriaBuilder;
|
||||||
|
|
Loading…
Reference in a new issue