18 #include "roleacl_p.h" 22 #include <Cutelyst/Plugins/Authentication/authentication.h> 23 #include <Cutelyst/Controller> 24 #include <Cutelyst/Dispatcher> 132 return AroundExecute;
138 Q_UNUSED(application)
144 qFatal(
"RoleACL: Action %s requires at least one RequiresRole or AllowedRole attribute", qPrintable(d->actionReverse));
147 for (
const QString &role : required) {
148 d->requiresRole.
append(role);
152 for (
const QString &role : allowed) {
153 d->allowedRole.
append(role);
157 auto it = attributes.constFind(
QLatin1String(
"ACLDetachTo"));
158 if (it == attributes.constEnd() || it.value().isEmpty()) {
159 qFatal(
"RoleACL: Action %s requires the ACLDetachTo(<action>) attribute", qPrintable(d->actionReverse));
161 d->aclDetachTo = it.value();
189 for (
const QString &role : required) {
195 for (
const QString &role : allowed) {
200 }
else if (!required.
isEmpty()) {
201 for (
const QString &role : required) {
207 }
else if (!allowed.
isEmpty()) {
208 for (
const QString &role : allowed) {
223 d->detachTo = controller->
actionFor(d->aclDetachTo);
227 qFatal(
"RoleACL: Action '%s' requires a valid action set on the ACLDetachTo(%s) attribute",
228 qPrintable(d->actionReverse), qPrintable(d->aclDetachTo));
235 #include "moc_roleacl.cpp" virtual bool init(Application *application, const QVariantHash &args) override
bool contains(const QString &str, Qt::CaseSensitivity cs) const
void detach(Action *action=nullptr)
Action * actionFor(const QString &name) const
virtual bool aroundExecute(Context *c, QStack< Component *> stack) override
The Cutelyst Component base class.
Cutelyst Controller base class
void append(const T &value)
bool canVisit(Context *c) const
User role-based authorization action class.
virtual Modifiers modifiers() const override
The Cutelyst namespace holds all public Cutelyst API.
RoleACL(QObject *parent=nullptr)
virtual bool dispatcherReady(const Dispatcher *dispatcher, Controller *controller) override
QStringList toStringList() const
virtual bool aroundExecute(Context *c, QStack< Component *> stack)
The Cutelyst Application.
static AuthenticationUser user(Context *c)
Action * getActionByPath(const QString &path) const
const T value(const Key &key, const T &defaultValue) const