summaryrefslogtreecommitdiff
path: root/src/common/permissionmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/permissionmanager.cpp')
-rw-r--r--src/common/permissionmanager.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/common/permissionmanager.cpp b/src/common/permissionmanager.cpp
index 8966f11f..d7c1a7a2 100644
--- a/src/common/permissionmanager.cpp
+++ b/src/common/permissionmanager.cpp
@@ -18,6 +18,8 @@
* along with The Mana Server. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <cstring>
+
#include "common/permissionmanager.hpp"
#include "game-server/character.hpp"
@@ -160,3 +162,21 @@ unsigned char PermissionManager::getMaskFromAlias(const std::string &alias)
return i->second;
}
}
+
+std::list<std::string> PermissionManager::getPermissionList(const Character* character)
+{
+ std::list<std::string> result;
+ std::map<std::string, unsigned char>::iterator i;
+
+ unsigned char mask = character->getAccountLevel();
+
+ for (i = permissions.begin(); i != permissions.end(); i++)
+ {
+ if (i->second & mask)
+ {
+ result.push_back(i->first);
+ }
+ }
+
+ return result;
+}