Author: ngn
Date: Wed Sep 9 21:07:55 2009
New Revision: 813118
URL: http://svn.apache.org/viewvc?rev=813118&view=rev
Log:
Implement not letting non-mmbers entering member only rooms
Modified:
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/Room.java
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerEnterRoomTestCase.java
Modified:
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java?rev=813118&r1=813117&r2=813118&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
(original)
+++
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandler.java
Wed Sep 9 21:07:55 2009
@@ -30,6 +30,7 @@
import org.apache.vysper.xmpp.delivery.failure.DeliveryException;
import org.apache.vysper.xmpp.delivery.failure.IgnoreFailureStrategy;
import org.apache.vysper.xmpp.modules.core.base.handler.DefaultPresenceHandler;
+import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Affiliation;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Conference;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Occupant;
import org.apache.vysper.xmpp.modules.extension.xep0045_muc.model.Role;
@@ -189,6 +190,10 @@
// outcast
return createPresenceErrorStanza(roomJid, newOccupantJid,
stanza.getID(), "auth", "forbidden");
}
+ if(room.isRoomType(RoomType.MembersOnly) &&
newOccupant.getAffiliation() == Affiliation.None) {
+ // non-member can not enter members only room
+ return createPresenceErrorStanza(roomJid, newOccupantJid,
stanza.getID(), "auth", "registration-required");
+ }
// relay presence of all existing room occupants to the now joined
occupant
for(Occupant occupant : room.getOccupants()) {
Modified:
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/Room.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/Room.java?rev=813118&r1=813117&r2=813118&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/Room.java
(original)
+++
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/model/Room.java
Wed Sep 9 21:07:55 2009
@@ -112,9 +112,14 @@
// default to none
if(affiliation == null) affiliation = Affiliation.None;
+
Role role = Role.getRole(affiliation, roomTypes);
Occupant occupant = new Occupant(occupantJid, name, affiliation,
role);
- occupants.put(occupantJid, occupant);
+ if(isRoomType(RoomType.MembersOnly) && affiliation ==
Affiliation.None) {
+ // don't add non member to room
+ } else {
+ occupants.put(occupantJid, occupant);
+ }
return occupant;
}
Modified:
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerEnterRoomTestCase.java
URL:
http://svn.apache.org/viewvc/mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerEnterRoomTestCase.java?rev=813118&r1=813117&r2=813118&view=diff
==============================================================================
---
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerEnterRoomTestCase.java
(original)
+++
mina/sandbox/vysper/trunk/server/extensions/xep0045-muc/src/test/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCPresenceHandlerEnterRoomTestCase.java
Wed Sep 9 21:07:55 2009
@@ -18,7 +18,6 @@
import org.apache.vysper.xmpp.server.TestSessionContext;
import org.apache.vysper.xmpp.stanza.MessageStanza;
import org.apache.vysper.xmpp.stanza.MessageStanzaType;
-import org.apache.vysper.xmpp.stanza.PresenceStanza;
import org.apache.vysper.xmpp.stanza.Stanza;
import org.apache.vysper.xmpp.stanza.StanzaBuilder;
import org.apache.vysper.xmpp.xmlfragment.Attribute;
@@ -126,6 +125,14 @@
assertEquals(0, room.getOccupants().size());
}
+ public void testEnterAsNonMember() throws Exception {
+ Room room = conference.createRoom(ROOM2_JID, "Room",
RoomType.MembersOnly);
+
+ Stanza error = enterRoom(OCCUPANT1_JID, ROOM2_JID_WITH_NICK);
+ assertPresenceErrorStanza(error, ROOM2_JID, OCCUPANT1_JID, "auth",
"registration-required");
+
+ assertEquals(0, room.getOccupants().size());
+ }
public void testEnterRoomWithDuplicateNick() throws Exception {
assertNull(enterRoom(OCCUPANT1_JID, ROOM1_JID_WITH_NICK));