hasPermission for Ice

git-svn-id: https://mumble.svn.sourceforge.net/svnroot/mumble/trunk@1548 05730e5d-ab1b-0410-a4ac-84af385074fa
This commit is contained in:
Thorvald Natvig 2009-02-18 20:27:17 +00:00
parent 5001daa721
commit b36bfdf9c3
4 changed files with 27 additions and 6 deletions

View File

@ -484,6 +484,14 @@ module Murmur
*/
void sendMessage(int session, string text) throws ServerBootedException, InvalidSessionException;
/** Check if player is permitted to perform action.
* @param session Connection ID of player. See [Player::session].
* @param channelid ID of Channel. See [Channel::id].
* @param perm Permission bits to check.
* @return true if any of the permissions in perm were set for the user.
*/
bool hasPermission(int session, int channelid, int perm) throws ServerBootedException, InvalidSessionException, InvalidChannelException;
/** Add a context callback. This is done per player, and will add a context menu action for the player.
*
* @param session Session of user which should receive context entry.

View File

@ -75,6 +75,8 @@ class ServerI : virtual public Server {
const ::std::string&,
const Ice::Current&);
virtual void hasPermission_async(const ::Murmur::AMD_Server_hasPermissionPtr&, ::Ice::Int, ::Ice::Int, ::Ice::Int, const ::Ice::Current&);
virtual void addContextCallback_async(const ::Murmur::AMD_Server_addContextCallbackPtr&, ::Ice::Int, const ::std::string&, const ::std::string&, const ::Murmur::ServerContextCallbackPrx&, int, const ::Ice::Current&);
virtual void removeContextCallback_async(const ::Murmur::AMD_Server_removeContextCallbackPtr&, const ::Murmur::ServerContextCallbackPrx&, const ::Ice::Current&);

View File

@ -658,7 +658,7 @@ static void impl_Server_delete(const ::Murmur::AMD_Server_deletePtr cb, int serv
cb->ice_response();
}
static void impl_Server_addCallback(const Murmur::AMD_Server_addCallbackPtr &cb, int server_id, const Murmur::ServerCallbackPrx& cbptr) {
static void impl_Server_addCallback(const Murmur::AMD_Server_addCallbackPtr cb, int server_id, const Murmur::ServerCallbackPrx& cbptr) {
NEED_SERVER;
QList< ::Murmur::ServerCallbackPrx> &qmList = mi->qmServerCallbacks[server_id];
@ -672,7 +672,7 @@ static void impl_Server_addCallback(const Murmur::AMD_Server_addCallbackPtr &cb,
}
}
static void impl_Server_removeCallback(const Murmur::AMD_Server_removeCallbackPtr &cb, int server_id, const Murmur::ServerCallbackPrx& cbptr) {
static void impl_Server_removeCallback(const Murmur::AMD_Server_removeCallbackPtr cb, int server_id, const Murmur::ServerCallbackPrx& cbptr) {
NEED_SERVER;
QList< ::Murmur::ServerCallbackPrx> &qmList = mi->qmServerCallbacks[server_id];
@ -865,7 +865,14 @@ static void impl_Server_sendMessage(const ::Murmur::AMD_Server_sendMessagePtr cb
cb->ice_response();
}
static void impl_Server_addContextCallback(const Murmur::AMD_Server_addContextCallbackPtr &cb, int server_id, ::Ice::Int session, const ::std::string& action, const ::std::string& text, const ::Murmur::ServerContextCallbackPrx& cbptr, int ctx) {
static void impl_Server_hasPermission(const ::Murmur::AMD_Server_hasPermissionPtr cb, int server_id, ::Ice::Int session, ::Ice::Int channelid, ::Ice::Int perm) {
NEED_SERVER;
NEED_PLAYER;
NEED_CHANNEL;
cb->ice_response(server->hasPermission(user, channel, static_cast<ChanACL::Perm>(perm)));
}
static void impl_Server_addContextCallback(const Murmur::AMD_Server_addContextCallbackPtr cb, int server_id, ::Ice::Int session, const ::std::string& action, const ::std::string& text, const ::Murmur::ServerContextCallbackPrx& cbptr, int ctx) {
NEED_SERVER;
NEED_PLAYER;
@ -893,7 +900,7 @@ static void impl_Server_addContextCallback(const Murmur::AMD_Server_addContextCa
server->sendMessage(user, &mcaa);
}
static void impl_Server_removeContextCallback(const Murmur::AMD_Server_removeContextCallbackPtr &cb, int server_id, const Murmur::ServerContextCallbackPrx& cbptr) {
static void impl_Server_removeContextCallback(const Murmur::AMD_Server_removeContextCallbackPtr cb, int server_id, const Murmur::ServerContextCallbackPrx& cbptr) {
NEED_SERVER;
QMap<int, QMap<QString, ::Murmur::ServerContextCallbackPrx> > & qmPrx = mi->qmServerContextCallbacks[server_id];
@ -1297,7 +1304,7 @@ static void impl_Meta_getVersion(const ::Murmur::AMD_Meta_getVersionPtr cb, cons
cb->ice_response(major, minor, patch, toStdUtf8String(txt));
}
static void impl_Meta_addCallback(const Murmur::AMD_Meta_addCallbackPtr &cb, const Ice::ObjectAdapterPtr, const Murmur::MetaCallbackPrx& cbptr) {
static void impl_Meta_addCallback(const Murmur::AMD_Meta_addCallbackPtr cb, const Ice::ObjectAdapterPtr, const Murmur::MetaCallbackPrx& cbptr) {
try {
const Murmur::MetaCallbackPrx &oneway = Murmur::MetaCallbackPrx::checkedCast(cbptr->ice_oneway());
if (! mi->qmMetaCallbacks.contains(oneway))
@ -1308,7 +1315,7 @@ static void impl_Meta_addCallback(const Murmur::AMD_Meta_addCallbackPtr &cb, con
}
}
static void impl_Meta_removeCallback(const Murmur::AMD_Meta_removeCallbackPtr &cb, const Ice::ObjectAdapterPtr, const Murmur::MetaCallbackPrx& cbptr) {
static void impl_Meta_removeCallback(const Murmur::AMD_Meta_removeCallbackPtr cb, const Ice::ObjectAdapterPtr, const Murmur::MetaCallbackPrx& cbptr) {
try {
const Murmur::MetaCallbackPrx &oneway = Murmur::MetaCallbackPrx::uncheckedCast(cbptr->ice_oneway());
mi->qmMetaCallbacks.removeAll(oneway);

View File

@ -86,6 +86,10 @@ void ::Murmur::ServerI::sendMessage_async(const ::Murmur::AMD_Server_sendMessage
IceEvent *ie = new IceEvent(boost::bind(&impl_Server_sendMessage, cb, QString::fromStdString(current.id.name).toInt(), p1, p2));
QCoreApplication::instance()->postEvent(mi, ie);
};
void ::Murmur::ServerI::hasPermission_async(const ::Murmur::AMD_Server_hasPermissionPtr &cb, ::Ice::Int p1, ::Ice::Int p2, ::Ice::Int p3, const ::Ice::Current &current) {
IceEvent *ie = new IceEvent(boost::bind(&impl_Server_hasPermission, cb, QString::fromStdString(current.id.name).toInt(), p1, p2, p3));
QCoreApplication::instance()->postEvent(mi, ie);
};
void ::Murmur::ServerI::addContextCallback_async(const ::Murmur::AMD_Server_addContextCallbackPtr &cb, ::Ice::Int p1, const ::std::string& p2, const ::std::string& p3, const ::Murmur::ServerContextCallbackPrx& p4, ::Ice::Int p5, const ::Ice::Current &current) {
IceEvent *ie = new IceEvent(boost::bind(&impl_Server_addContextCallback, cb, QString::fromStdString(current.id.name).toInt(), p1, p2, p3, p4, p5));
QCoreApplication::instance()->postEvent(mi, ie);