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
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.guilds.Guild;
|
||||
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.items.FurnitureType;
|
||||
import com.eu.habbo.habbohotel.items.Item;
|
||||
@@ -2257,7 +2258,8 @@ public class Room implements Comparable<Room>, ISerialize, Runnable {
|
||||
return RoomRightLevels.GUILD_ADMIN;
|
||||
}
|
||||
|
||||
if (guild.getRights()) {
|
||||
if ((member != null) && member.getMembershipStatus() == GuildMembershipStatus.MEMBER
|
||||
&& guild.getRights()) {
|
||||
return RoomRightLevels.GUILD_RIGHTS;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.eu.habbo.Emulator;
|
||||
import com.eu.habbo.database.SqlQueries;
|
||||
import com.eu.habbo.habbohotel.guilds.Guild;
|
||||
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.permissions.Permission;
|
||||
import com.eu.habbo.habbohotel.users.Habbo;
|
||||
@@ -108,7 +109,8 @@ public class RoomRightsManager {
|
||||
return RoomRightLevels.GUILD_ADMIN;
|
||||
}
|
||||
|
||||
if (guild.getRights()) {
|
||||
if ((member != null) && member.getMembershipStatus() == GuildMembershipStatus.MEMBER
|
||||
&& guild.getRights()) {
|
||||
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