Голанг, ГОРМ, Постгрес, ACL - PullRequest
0 голосов
/ 02 октября 2018

У меня есть вопрос относительно дизайна контрольного потока 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)
 }

Это правильный путь?А как насчет утверждений типа лимита или смещения?Они больше не будут работать, или?Какие-либо лучшие практики по этой теме?

...