in server/extensions/xep0045-muc/src/main/java/org/apache/vysper/xmpp/modules/extension/xep0045_muc/handler/MUCIqAdminHandler.java [87:135]
protected List<Stanza> handleGet(IQStanza stanza, ServerRuntimeContext serverRuntimeContext,
SessionContext sessionContext, StanzaBroker stanzaBroker) {
try {
Entity roomEntity = stanza.getTo();
Room room = conference.findRoom(roomEntity);
Affiliation fromAffiliation = room.getAffiliations().getAffiliation(stanza.getFrom());
XMLElement query = stanza.getSingleInnerElementsNamed("query", NamespaceURIs.XEP0045_MUC_ADMIN);
XMLElement itemElm = query.getSingleInnerElementsNamed("item", NamespaceURIs.XEP0045_MUC_ADMIN);
StanzaBuilder result = StanzaBuilder.createDirectReply(stanza, false, IQStanzaType.RESULT);
result.startInnerElement("query", NamespaceURIs.XEP0045_MUC_ADMIN);
IqAdminItem item = IqAdminItem.getWrapper(itemElm);
Affiliation affiliation = item.getAffiliation();
if (affiliation != null) {
// check access
if (affiliation == Affiliation.Outcast || affiliation == Affiliation.Member) {
if (fromAffiliation.compareTo(Affiliation.Admin) > 0) {
return Collections.singletonList(MUCHandlerHelper.createErrorReply(stanza,
StanzaErrorType.CANCEL, StanzaErrorCondition.NOT_ALLOWED));
}
} else if (affiliation == Affiliation.Owner || affiliation == Affiliation.Admin) {
if (fromAffiliation.compareTo(Affiliation.Owner) > 0) {
return Collections.singletonList(MUCHandlerHelper.createErrorReply(stanza,
StanzaErrorType.CANCEL, StanzaErrorCondition.NOT_ALLOWED));
}
}
// Retrieve ban list
Collection<Entity> users = room.getAffiliations().getByAffiliation(affiliation);
for (Entity user : users) {
IqAdminItem resultItem = new IqAdminItem(user, affiliation);
result.addPreparedElement(resultItem);
}
}
return Collections.singletonList(result.build());
} catch (XMLSemanticError e) {
logger.debug("Invalid MUC admin stanza", e);
return Collections.singletonList(
createBadRequestError(stanza, serverRuntimeContext, sessionContext, "Invalid IQ stanza"));
} catch (EntityFormatException e) {
return Collections
.singletonList(createBadRequestError(stanza, serverRuntimeContext, sessionContext, "Invalid JID"));
}
}