diff options
| author | ilotterytea <iltsu@alright.party> | 2025-01-23 20:31:23 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2025-01-23 20:31:23 +0500 |
| commit | ff9d8f584616cc3d9d7000e95f681707fd508497 (patch) | |
| tree | b56f83b921f887424e69fffde8c34753a4e09baa /shared | |
| parent | c94a51d6ab4863e2fa6fd230def08aac3f2bf73a (diff) | |
feat: server-side sign-in implementation
Diffstat (limited to 'shared')
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()); |
