/** * @fn editUserPermissionPrivate */ QueuedResult<bool> QueuedCorePrivateHelper::editUserPermissionPrivate( const long long _id, const QueuedEnums::Permission &_permission, const bool _add) { qCDebug(LOG_LIB) << "Edit permissions" << static_cast<int>(_permission) << "for user" << _id << "add" << _add; auto userObj = users()->user(_id); if (!userObj) { qCWarning(LOG_LIB) << "Could not find user with ID" << _id; return QueuedError("User does not exist", QueuedEnums::ReturnStatus::InvalidArgument); } // edit runtime permissions to get value auto perms = _add ? userObj->addPermission(_permission) : userObj->removePermission(_permission); auto permissions = static_cast<uint>(perms); qCInfo(LOG_LIB) << "New user permissions" << perms; // modify in database now QVariantHash payload = {{"permissions", permissions}}; bool status = database()->modify(QueuedDB::USERS_TABLE, _id, payload); if (!status) { qCWarning(LOG_LIB) << "Could not modify user record" << _id << "in database, do not edit it in memory"; // rollback in-memory values if (_add) userObj->removePermission(_permission); else userObj->addPermission(_permission); return QueuedError("", QueuedEnums::ReturnStatus::Error); } return true; }
/** * @brief Revokes any permissions in the queue policy that matches the * specified \a label. * * @param queueUrl URL of the Amazon SQS queue to take action on. * @param label Identification of the permission to remove. * * @return A pointer to a related response object. * * @note The caller is to take responsbility for the resulting pointer. * * @see SqsRemovePermissionRequest */ SqsRemovePermissionResponse * SqsClient::removePermission( const QString &queueUrl, const QString &label) { const SqsRemovePermissionRequest request(queueUrl, label); return removePermission(request); }