Ich entwickle eine dokumentenorientierte Anwendung und muss den Benutzerzugriff auf die Dokumente verwalten. Ich habe ein Modul, das für die Benutzerauthentifizierung zuständig ist, und ein weiteres Modul, das die CRUD-Operationen für Dokumente im Datenspeicher übernimmt. Sobald ein Benutzer authentifiziert ist, muss ich erzwingen, welche Operationen der Benutzer auf Dokumente durchführen kann und welche nicht, basierend auf den Berechtigungen des Benutzers. Die beste Option, die ich mir vorstellen kann, um diese beiden Teile zu integrieren, wäre die Erstellung eines weiteren Moduls, das die Daten-API dupliziert, aber auch den authentifizierten Benutzer als Parameter nimmt. Das Modul würde die Berechtigungsprüfung an das Auth-Modul delegieren und die Dokumentenoperation an das Datenzugriffsmodul delegieren. Etwa so:
-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.
Gibt es einen besseren Weg, wie ich das machen kann?