Implementation of basic permission checks.

This commit is contained in:
2016-03-11 14:13:40 +01:00
parent 2c49209b8e
commit 96685d2bed
9 changed files with 128 additions and 11 deletions
+43
View File
@@ -0,0 +1,43 @@
#include "permissionevaluator.h"
#include <QSharedPointer>
#include "data/core-data.h"
#include "context.h"
PermissionEvaluator::PermissionEvaluator(QObject *parent)
:QObject(parent)
{
}
PermissionEvaluator::~PermissionEvaluator()
{
}
bool PermissionEvaluator::hasPermission(const QString &pluginId, const QString &permission)
{
if (Context::instance().currentUser()->isAdmin())
{
return true;
}
bool ret;
QList<QSharedPointer<Role> > roles = Context::instance().currentUser()->listRoles();
ret = std::find_if(ALL(roles), [&pluginId, &permission](QSharedPointer<Role> role) -> bool {
foreach (QSharedPointer<Permission> perm, role->listPermissions()) {
if (perm->pluginId() == pluginId && perm->permissionName() == permission) {
return true;
}
}
return false;
}) != roles.end();
if (!ret)
{
emit permissionDenied(permission);
}
return ret;
}