Exemplo n.º 1
0
/**
 * @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;
}
Exemplo n.º 2
0
/**
 * @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);
}