Как неявно получить ACL записи ParseUser
неявно, имея ввиду роли, в которых находится пользователь, предоставьте мне права на запись для этого пользователя для этого объекта, и мои подходы неэффективны, я думаю:
- Функция облачного кода для запроса ролей пользователя и проверки прав доступа пользователя или его ролей к объекту.
Parse.Cloud.define("hasWriteAccess", function(request, response){ var query = new Parse.Query(Parse.Role); query.equalTo("users", request.user); query.find().then(function(roles){ var hasWriteAccess = false; for (var i = 0; i < roles.length; i++) { if (request.params.parseObject.getACL().getRoleWriteAccess(roles[i])) { hasWriteAccess = true; break; } } response.success(hasWriteAccess); }); });
Запрос ролей пользователя Android и локальная проверка прав записи
public static Task<Boolean> hasWriteAccess(final ParseObject parseObject) { final TaskCompletionSource<Boolean> voidTaskCompletionSource = new TaskCompletionSource<>(); ParseRole.getQuery().whereEqualTo("users", ParseUser.getCurrentUser()).findInBackground().continueWith(new Continuation<List<ParseRole>, Object>() { @Override public Object then(Task<List<ParseRole>> task) throws Exception { if (task.getError() == null) { List<ParseRole> parseRoles = task.getResult(); boolean hasWriteAccess = false; for (ParseRole parseRole : parseRoles) { if (parseObject.getACL().getRoleWriteAccess(parseRole)) { hasWriteAccess = true; break; } } voidTaskCompletionSource.trySetResult(hasWriteAccess); } else { voidTaskCompletionSource.trySetError(task.getError()); } return null; } }); return voidTaskCompletionSource.getTask(); }
от
Parse Documentation
- Получите, разрешено ли данному идентификатору пользователя явно писать этот объект. Даже если это
- возвращает {@code false}, пользователь все еще может написать его, если getPublicWriteAccess вернет
- {@code true} или роль, к которой принадлежит пользователь, имеет право на запись. */
Я не могу использовать эти методы в своих основных публикациях, потому что они медленные network requests
и ожидание завершения запроса, прежде чем запрашивать сообщения, приводит к ухудшению работы пользователя.
Это решение не будет работать, потому что запрос не вернет вложенные роли roles relation
Итак, есть предложения?