You've already forked Arcturus-Morningstar-Extended
mirror of
https://github.com/duckietm/Arcturus-Morningstar-Extended.git
synced 2026-06-19 15:06:19 +00:00
Merge pull request #272 from simoleo89/fix/room-rights-guild-membership
fix(room-rights): require guild membership
This commit is contained in:
@@ -5,6 +5,7 @@ import com.eu.habbo.habbohotel.bots.Bot;
|
|||||||
import com.eu.habbo.habbohotel.games.Game;
|
import com.eu.habbo.habbohotel.games.Game;
|
||||||
import com.eu.habbo.habbohotel.guilds.Guild;
|
import com.eu.habbo.habbohotel.guilds.Guild;
|
||||||
import com.eu.habbo.habbohotel.guilds.GuildMember;
|
import com.eu.habbo.habbohotel.guilds.GuildMember;
|
||||||
|
import com.eu.habbo.habbohotel.guilds.GuildMembershipStatus;
|
||||||
import com.eu.habbo.habbohotel.guilds.GuildRank;
|
import com.eu.habbo.habbohotel.guilds.GuildRank;
|
||||||
import com.eu.habbo.habbohotel.items.FurnitureType;
|
import com.eu.habbo.habbohotel.items.FurnitureType;
|
||||||
import com.eu.habbo.habbohotel.items.Item;
|
import com.eu.habbo.habbohotel.items.Item;
|
||||||
@@ -2257,7 +2258,8 @@ public class Room implements Comparable<Room>, ISerialize, Runnable {
|
|||||||
return RoomRightLevels.GUILD_ADMIN;
|
return RoomRightLevels.GUILD_ADMIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (guild.getRights()) {
|
if ((member != null) && member.getMembershipStatus() == GuildMembershipStatus.MEMBER
|
||||||
|
&& guild.getRights()) {
|
||||||
return RoomRightLevels.GUILD_RIGHTS;
|
return RoomRightLevels.GUILD_RIGHTS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import com.eu.habbo.Emulator;
|
|||||||
import com.eu.habbo.database.SqlQueries;
|
import com.eu.habbo.database.SqlQueries;
|
||||||
import com.eu.habbo.habbohotel.guilds.Guild;
|
import com.eu.habbo.habbohotel.guilds.Guild;
|
||||||
import com.eu.habbo.habbohotel.guilds.GuildMember;
|
import com.eu.habbo.habbohotel.guilds.GuildMember;
|
||||||
|
import com.eu.habbo.habbohotel.guilds.GuildMembershipStatus;
|
||||||
import com.eu.habbo.habbohotel.guilds.GuildRank;
|
import com.eu.habbo.habbohotel.guilds.GuildRank;
|
||||||
import com.eu.habbo.habbohotel.permissions.Permission;
|
import com.eu.habbo.habbohotel.permissions.Permission;
|
||||||
import com.eu.habbo.habbohotel.users.Habbo;
|
import com.eu.habbo.habbohotel.users.Habbo;
|
||||||
@@ -108,7 +109,8 @@ public class RoomRightsManager {
|
|||||||
return RoomRightLevels.GUILD_ADMIN;
|
return RoomRightLevels.GUILD_ADMIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (guild.getRights()) {
|
if ((member != null) && member.getMembershipStatus() == GuildMembershipStatus.MEMBER
|
||||||
|
&& guild.getRights()) {
|
||||||
return RoomRightLevels.GUILD_RIGHTS;
|
return RoomRightLevels.GUILD_RIGHTS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+41
@@ -0,0 +1,41 @@
|
|||||||
|
package com.eu.habbo.habbohotel.rooms;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||||
|
|
||||||
|
class RoomRightsManagerGuildContractTest {
|
||||||
|
private static final Pattern ACCEPTED_MEMBER_GUILD_RIGHTS_GUARD = Pattern.compile(
|
||||||
|
"member\\.getMembershipStatus\\(\\)\\s*==\\s*GuildMembershipStatus\\.MEMBER\\s*&&\\s*guild\\.getRights\\(\\)",
|
||||||
|
Pattern.MULTILINE);
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void guildRoomRightsRequireAcceptedMembership() throws Exception {
|
||||||
|
String source = Files.readString(
|
||||||
|
Path.of("src/main/java/com/eu/habbo/habbohotel/rooms/RoomRightsManager.java"),
|
||||||
|
StandardCharsets.UTF_8);
|
||||||
|
|
||||||
|
assertTrue(ACCEPTED_MEMBER_GUILD_RIGHTS_GUARD.matcher(source).find(),
|
||||||
|
"Guild room rights must only apply to accepted guild members.");
|
||||||
|
assertFalse(source.contains("if (guild.getRights())"),
|
||||||
|
"A guild room with shared rights must not grant GUILD_RIGHTS to non-members.");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void legacyRoomGuildRightPathUsesSameMembershipGuard() throws Exception {
|
||||||
|
String source = Files.readString(
|
||||||
|
Path.of("src/main/java/com/eu/habbo/habbohotel/rooms/Room.java"),
|
||||||
|
StandardCharsets.UTF_8);
|
||||||
|
|
||||||
|
assertTrue(ACCEPTED_MEMBER_GUILD_RIGHTS_GUARD.matcher(source).find(),
|
||||||
|
"The legacy Room guild-right path must keep the same membership guard.");
|
||||||
|
assertFalse(source.contains("if (guild.getRights())"),
|
||||||
|
"The legacy Room path must not grant GUILD_RIGHTS to non-members.");
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user