У меня есть вопрос относительно дизайна контрольного потока ACL.В настоящее время я сохраняю объект в одной таблице и связанный объект ACL, который содержит разрешения для данного пользователя, в 2 отдельных таблицах.Для проверки разрешений я использую 1 вызов БД, где я объединяю обе таблицы и проверяю, есть ли у данного пользователя разрешения на доступ к данному объекту.Я подумал, что может быть лучше перенести вызов базы данных и проверку ACL на 2 разные функции, fx (псевдокод):
func getAllObjects(requester_id) {
objects = getAllObjects()
results = []
for each obj in objects {
ok = checkPermission(obj.id, requester_id, "read")
if ok {
add_obj_to_results
}
}
return results
}
func checkPermission(object_id, requester_id, required_scopes) {
// check acl checks the db if there is a acl with the required permissions for a given user
ok = checkACL(object_id, requester_id, required_scopes)
}
Это правильный путь?А как насчет утверждений типа лимита или смещения?Они больше не будут работать, или?Какие-либо лучшие практики по этой теме?