summaryrefslogtreecommitdiff
path: root/shared
diff options
context:
space:
mode:
authorilotterytea <iltsu@alright.party>2025-01-23 20:31:23 +0500
committerilotterytea <iltsu@alright.party>2025-01-23 20:31:23 +0500
commitff9d8f584616cc3d9d7000e95f681707fd508497 (patch)
treeb56f83b921f887424e69fffde8c34753a4e09baa /shared
parentc94a51d6ab4863e2fa6fd230def08aac3f2bf73a (diff)
feat: server-side sign-in implementation
Diffstat (limited to 'shared')
-rw-r--r--shared/src/main/java/kz/ilotterytea/frogartha/FrogarthaConstants.java1
-rw-r--r--shared/src/main/java/kz/ilotterytea/frogartha/domain/Identity.java16
-rw-r--r--shared/src/main/java/kz/ilotterytea/frogartha/domain/actions/IdentificationAction.java48
-rw-r--r--shared/src/main/java/kz/ilotterytea/frogartha/domain/events/IdentifiedEvent.java16
-rw-r--r--shared/src/main/java/kz/ilotterytea/frogartha/exceptions/PlayerKickException.java4
-rw-r--r--shared/src/main/java/kz/ilotterytea/frogartha/utils/SerializerUtils.java2
6 files changed, 79 insertions, 8 deletions
diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/FrogarthaConstants.java b/shared/src/main/java/kz/ilotterytea/frogartha/FrogarthaConstants.java
index 1e55d52..81c843f 100644
--- a/shared/src/main/java/kz/ilotterytea/frogartha/FrogarthaConstants.java
+++ b/shared/src/main/java/kz/ilotterytea/frogartha/FrogarthaConstants.java
@@ -13,6 +13,7 @@ public class FrogarthaConstants {
public static final String IDENTITY_VALIDATE_URL = IDENTITY_BASE_URL + "/validate";
public static final String IDENTITY_REFRESH_URL = IDENTITY_BASE_URL + "/refresh";
public static final String IDENTITY_AUTHENTICATION_URL = IDENTITY_BASE_URL + "/authenticate";
+ public static final String IDENTITY_IDENTIFY_URL = IDENTITY_BASE_URL + "/identify";
public static final String IDENTITY_REGISTRATION_URL = IDENTITY_BASE_URL;
}
diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/Identity.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/Identity.java
index 03c0ef4..2d81055 100644
--- a/shared/src/main/java/kz/ilotterytea/frogartha/domain/Identity.java
+++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/Identity.java
@@ -7,14 +7,20 @@ import com.github.czyzby.websocket.serialization.impl.Serializer;
public class Identity implements Transferable<Identity> {
private String username;
+ private long id;
public Identity() {
}
- public Identity(String username) {
+ public Identity(long id, String username) {
+ this.id = id;
this.username = username;
}
+ public long getId() {
+ return id;
+ }
+
public String getUsername() {
return username;
}
@@ -22,7 +28,8 @@ public class Identity implements Transferable<Identity> {
@Override
public boolean equals(Object obj) {
if (obj instanceof Identity) {
- return ((Identity) obj).username.equals(username);
+ Identity i = (Identity) obj;
+ return i.username.equals(username) && i.id == id;
}
return false;
}
@@ -31,16 +38,17 @@ public class Identity implements Transferable<Identity> {
public String toString() {
return "Identity{" +
"username='" + username + '\'' +
+ ", id=" + id +
'}';
}
@Override
public void serialize(Serializer serializer) throws SerializationException {
- serializer.serializeString(username);
+ serializer.serializeLong(id).serializeString(username);
}
@Override
public Identity deserialize(Deserializer deserializer) throws SerializationException {
- return new Identity(deserializer.deserializeString());
+ return new Identity(deserializer.deserializeLong(), deserializer.deserializeString());
}
}
diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/actions/IdentificationAction.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/actions/IdentificationAction.java
new file mode 100644
index 0000000..6d3c4d8
--- /dev/null
+++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/actions/IdentificationAction.java
@@ -0,0 +1,48 @@
+package kz.ilotterytea.frogartha.domain.actions;
+
+import com.github.czyzby.websocket.serialization.SerializationException;
+import com.github.czyzby.websocket.serialization.Transferable;
+import com.github.czyzby.websocket.serialization.impl.Deserializer;
+import com.github.czyzby.websocket.serialization.impl.Serializer;
+
+public class IdentificationAction implements Transferable<IdentificationAction> {
+ private String clientToken, accessToken;
+
+ public IdentificationAction() {
+ }
+
+ public IdentificationAction(String clientToken, String accessToken) {
+ this.clientToken = clientToken;
+ this.accessToken = accessToken;
+ }
+
+ public String getClientToken() {
+ return clientToken;
+ }
+
+ public String getAccessToken() {
+ return accessToken;
+ }
+
+ @Override
+ public void serialize(Serializer serializer) throws SerializationException {
+ serializer.serializeString(clientToken).serializeString(accessToken);
+ }
+
+ @Override
+ public IdentificationAction deserialize(Deserializer deserializer) throws SerializationException {
+ return new IdentificationAction(deserializer.deserializeString(), deserializer.deserializeString());
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == null) return false;
+
+ if (obj instanceof IdentificationAction) {
+ IdentificationAction x = (IdentificationAction) obj;
+ return x.accessToken.equals(accessToken) && x.clientToken.equals(clientToken);
+ }
+
+ return false;
+ }
+}
diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/IdentifiedEvent.java b/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/IdentifiedEvent.java
index d2d9e1e..01a12fe 100644
--- a/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/IdentifiedEvent.java
+++ b/shared/src/main/java/kz/ilotterytea/frogartha/domain/events/IdentifiedEvent.java
@@ -4,22 +4,30 @@ import com.github.czyzby.websocket.serialization.SerializationException;
import com.github.czyzby.websocket.serialization.Transferable;
import com.github.czyzby.websocket.serialization.impl.Deserializer;
import com.github.czyzby.websocket.serialization.impl.Serializer;
+import kz.ilotterytea.frogartha.domain.Identity;
public class IdentifiedEvent extends Event implements Transferable<IdentifiedEvent> {
+ private Identity identity;
+
public IdentifiedEvent() {
}
- public IdentifiedEvent(int playerId) {
- this.playerId = playerId;
+ public IdentifiedEvent(int playerId, Identity identity) {
+ super(playerId);
+ this.identity = identity;
+ }
+
+ public Identity getIdentity() {
+ return identity;
}
@Override
public void serialize(Serializer serializer) throws SerializationException {
- serializer.serializeInt(playerId);
+ serializer.serializeInt(playerId).serializeTransferable(identity);
}
@Override
public IdentifiedEvent deserialize(Deserializer deserializer) throws SerializationException {
- return new IdentifiedEvent(deserializer.deserializeInt());
+ return new IdentifiedEvent(deserializer.deserializeInt(), deserializer.deserializeTransferable(new Identity()));
}
}
diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/exceptions/PlayerKickException.java b/shared/src/main/java/kz/ilotterytea/frogartha/exceptions/PlayerKickException.java
index e24c633..22f45cc 100644
--- a/shared/src/main/java/kz/ilotterytea/frogartha/exceptions/PlayerKickException.java
+++ b/shared/src/main/java/kz/ilotterytea/frogartha/exceptions/PlayerKickException.java
@@ -37,6 +37,10 @@ public class PlayerKickException extends RuntimeException implements Transferabl
return new PlayerKickException("Kicked for spamming");
}
+ public static PlayerKickException badLogin(String reason) {
+ return new PlayerKickException("Bad login" + ((reason != null) ? (" (" + reason + ")") : ""));
+ }
+
@Override
public void serialize(Serializer serializer) throws SerializationException {
serializer.serializeString(getMessage());
diff --git a/shared/src/main/java/kz/ilotterytea/frogartha/utils/SerializerUtils.java b/shared/src/main/java/kz/ilotterytea/frogartha/utils/SerializerUtils.java
index 3529968..2a22bcc 100644
--- a/shared/src/main/java/kz/ilotterytea/frogartha/utils/SerializerUtils.java
+++ b/shared/src/main/java/kz/ilotterytea/frogartha/utils/SerializerUtils.java
@@ -14,7 +14,9 @@ public class SerializerUtils {
serializer.register(new PlayerJumpEvent());
serializer.register(new ChangedDirectionAction());
serializer.register(new ChangedDirectionEvent());
+
serializer.register(new IdentifiedEvent());
+ serializer.register(new IdentificationAction());
serializer.register(new JoinRoomAction());
serializer.register(new PlayerJoinedRoomEvent());