Как обрабатывать аутентифицированный пользовательский доступ к ресурсам в ориентированной на документы системе? - PullRequest
3 голосов
/ 12 января 2010

Я занимаюсь разработкой приложения, ориентированного на документы, и мне необходимо управлять доступом пользователей к документам. У меня есть модуль, который обрабатывает аутентификацию пользователя, и другой модуль, который обрабатывает операции CRUD с документами в хранилище данных. Как только пользователь аутентифицирован, мне нужно принудительно установить, какие операции пользователь может и не может выполнять с документами, основываясь на разрешениях пользователя. Наилучший вариант, который я мог бы придумать для объединения этих двух частей, - это создать еще один модуль, который дублирует API данных, но также принимает аутентифицированного пользователя в качестве параметра. Модуль делегирует проверку авторизации модулю auth и делегирует операцию документа модулю доступа к данным. Что-то вроде:

 -module(auth_data_access).

 % User is authenticated (logged into the system)
 % save_doc validates if user is allowed to save the given document and if so
 % saves it returning ok, else returns {error, permission_denied}
 save_doc(Doc, User) ->
    case auth:save_allowed(Doc, User) of
       ok ->
          data_access:save_doc(Doc);
       denied ->
          {error, permission_denied}
     end
  end. 

Есть ли лучший способ справиться с этим?

1 Ответ

0 голосов
/ 13 января 2010

Согласно моему ответу на вопрос «Как мне элегантно проверить многие условия в Эрланге» Я предпочту что-то вроде

save_doc(Doc, User) ->
    ok = auth:save_allowed(Doc, User),
    data_access:save_doc(Doc).
...