Skip to content

Commit

Permalink
[FEATURE] FileAuthSystem support DAO
Browse files Browse the repository at this point in the history
  • Loading branch information
gravit0 committed Feb 7, 2021
1 parent 1fe4969 commit 4a27186
Show file tree
Hide file tree
Showing 3 changed files with 124 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,12 @@
import pro.gravit.launcher.modules.events.PreConfigPhase;
import pro.gravit.launchermodules.fileauthsystem.providers.FileSystemAuthHandler;
import pro.gravit.launchermodules.fileauthsystem.providers.FileSystemAuthProvider;
import pro.gravit.launchermodules.fileauthsystem.providers.FileSystemDAOProvider;
import pro.gravit.launchserver.LaunchServer;
import pro.gravit.launchserver.auth.handler.AuthHandler;
import pro.gravit.launchserver.auth.provider.AuthProvider;
import pro.gravit.launchserver.dao.User;
import pro.gravit.launchserver.dao.provider.DaoProvider;
import pro.gravit.launchserver.modules.events.LaunchServerFullInitEvent;
import pro.gravit.utils.Version;
import pro.gravit.utils.helper.IOHelper;
Expand All @@ -33,7 +36,7 @@ public class FileAuthSystemModule extends LauncherModule {
public static final Version version = new Version(1, 0, 0, 1, Version.Type.LTS);
private Path dbPath;
public JsonConfigurable<FileAuthSystemConfig> jsonConfigurable;
public static class UserEntity {
public static class UserEntity implements User {
public String username;
private byte[] password;
public UUID uuid;
Expand All @@ -45,6 +48,51 @@ public void setPassword(String password) {
this.password = SecurityHelper.digest(SecurityHelper.DigestAlgorithm.SHA256, password);
}

@Override
public String getAccessToken() {
return accessToken;
}

@Override
public void setAccessToken(String accessToken) {
this.accessToken = accessToken;
}

@Override
public String getServerID() {
return serverId;
}

@Override
public void setServerID(String serverID) {
this.serverId = serverID;
}

@Override
public UUID getUuid() {
return uuid;
}

@Override
public void setUuid(UUID uuid) {
this.uuid = uuid;
}

@Override
public String getUsername() {
return username;
}

@Override
public ClientPermissions getPermissions() {
return permissions;
}

@Override
public void setPermissions(ClientPermissions permissions) {
this.permissions = permissions;
}

public boolean verifyPassword(String password) {
return Arrays.equals( this.password, SecurityHelper.digest(SecurityHelper.DigestAlgorithm.SHA256, password));
}
Expand Down Expand Up @@ -89,6 +137,14 @@ public void addUser(UserEntity entity) {
users.put(entity.uuid, entity);
}

public void deleteUser(UserEntity entity) {
users.remove(entity.uuid);
}

public void deleteUser(UUID uuid) {
users.remove(uuid);
}

public FileAuthSystemModule() {
super(new LauncherModuleInfo("FileAuthSystem", version, new String[]{"LaunchServerCore"}));
}
Expand All @@ -113,6 +169,7 @@ public void exit(ClosePhase closePhase) {
public void preConfig(PreConfigPhase preConfigPhase) {
AuthProvider.providers.register("fileauthsystem", FileSystemAuthProvider.class);
AuthHandler.providers.register("fileauthsystem", FileSystemAuthHandler.class);
DaoProvider.providers.register("fileauthsystem", FileSystemDAOProvider.class);
}

public void load() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package pro.gravit.launchermodules.fileauthsystem.providers;

import pro.gravit.launchermodules.fileauthsystem.FileAuthSystemModule;
import pro.gravit.launchserver.LaunchServer;
import pro.gravit.launchserver.dao.provider.DaoProvider;

public class FileSystemDAOProvider extends DaoProvider {
@Override
public void init(LaunchServer server) {
FileAuthSystemModule module = server.modulesManager.getModule(FileAuthSystemModule.class);
this.userDAO = new FileSystemUserDAO(module);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package pro.gravit.launchermodules.fileauthsystem.providers;

import pro.gravit.launchermodules.fileauthsystem.FileAuthSystemModule;
import pro.gravit.launchserver.dao.User;
import pro.gravit.launchserver.dao.UserDAO;

import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;

public class FileSystemUserDAO implements UserDAO {
private final FileAuthSystemModule module;

public FileSystemUserDAO(FileAuthSystemModule module) {
this.module = module;
}

@Override
public User findById(int id) {
throw new UnsupportedOperationException();
}

@Override
public User findByUsername(String username) {
return module.getUser(username);
}

@Override
public User findByUUID(UUID uuid) {
return module.getUser(uuid);
}

@Override
public void save(User user) {
module.addUser((FileAuthSystemModule.UserEntity) user);
}

@Override
public void update(User user) {
// None
}

@Override
public void delete(User user) {
module.deleteUser((FileAuthSystemModule.UserEntity) user);
}

@Override
public List<User> findAll() {
return new ArrayList<>(module.getAllUsers());
}
}

0 comments on commit 4a27186

Please sign in to comment.