| Thema: |
|
||
| Autor: | Rocco | ||
| Datum: | 15.04.23 09:42 | ||
| Antwort auf: | Der maniac-forum.DEV Videotagebuch-Thread von Rocco | ||
Nach Ostern war das nochmal eine recht kurze Woche (Kinder hatten Mo+Di noch Ferien), so dass ich nicht ganz so viel am Forum programmiert habe, aber ich hatte ja im Video #2 ([https://www.youtube.com/watch?v=ytDIFfv69rA]) auch schon angekündigt, dass ich mich ohnehin eher im Backend aufhalten werde und es daher nicht viel zu "sehen" geben würde. Kleinigkeiten im Frontend haben sich dennoch getan und zwar wurden die elementaren Funktionen "Thema erstellen" und "Editieren" eingebaut. Editieren hat jetzt die Besonderheit, dass hier nicht einfach der alte Beitrag in der Datenbank überschrieben wird sondern eine neue Fassung entsteht. So kann man dann ggf. die Edit-Historie zurückverfolgen. Außerdem wurde der Editor aus der starren Position unter dem Kommentarbaum gelöst so dass der Blick beim Antworten nicht immer zwangsläufig nach ganz unten wandern muss, da sich die Position des Editors nun nach dem verfügbaren vertikalen Platz im Browser orientiert. Das (wirklich) allerwichtigste Thema im Backend bin ich dann gestern angegangen: das neue Rechtesystem. Das in unserem Forum bestehende Rollensystem, d.h. die Unterscheidung zwischen Mod, User und die Abwandlung "gesperrter User", wird komplett rausgeschmissen, da man damit die Probleme eines wachsenden Community-Forums noch nie wirklich beherrschen konnte. Ein registrierter User hat aktuell alle Rechte, die man als Nutzer des Forums eben so hat. Dieser kann - außer in geschlossenen Boards/Themen - also überall schreiben und darüber hinaus private Nachrichten an jeden versenden. Ein Versuch das zu verbessern war meine Hauruck-Implementierung einer Blockierfunktion, aber auch das war nichts Halbes und nichts Ganzes zumal das Arbeiten im alten Code für mich persönlich eine Tortur war. Nicht weil der Code schlecht wäre - ganz im Gegenteil - aber Infrastruktur und Programmiersprache war einfach nicht (mehr) meine Welt und mit jeder Änderung bestand die Gefahr, dass mir an anderer Stelle - z.B. bei den vom Web-Code unabhängigen mobilen Apps - etwas um die Ohren flog. Das rudimentäre Rollensystem war jedenfalls imho schon damals™ nicht wirklich effektiv und man behalf sich aus der Not heraus mit Security through Obscurity, z.B. wurden irgendwann ein paar der bekannten Freemail-Adressen für eine Nutzerregistrierung ausgeschlossen oder man begann damit, neue Registrierungen händisch freizuschalten. Allerdings hatte man auch zu diesem Zeitpunkt keine Infos über den User außer dessen verwendete Emailadresse und den gewählten Nutzernamen. Gemündet ist das dann vor ein paar Jahren in den radikalen Schritt, neue Registrierungen komplett zu unterbinden und nur noch auf Anfrage neue User händisch anzulegen - eine echte Bankrotterklärung meinerseits. Das neue System wird sich nun nicht mehr um eine starre Nutzerrolle mit einem entsprechenden Set an Funktionen bzw. Einschränkungen drehen, sondern einzelne Rechte werden pro Nutzer, Aktion und Aktionsziel individuell evaluiert. Programmierer kennen diese Unterscheidung als "Role-based Access Control (RBAC) vs Attribute-based Access Control (ABAC)". Das kommende ABAC-System ist also ein Authorisierungsmechanismus, der den Zugriff dynamisch auf der Grundlage von Benutzermerkmalen, Umgebungskontext, Aktionsarten und mehr gewährt. Zum Glück gibt es bereits diverse ABAC-Implementierungen, die man im eigenen Code nutzen kann und ich muss das Rad auf dieser abstrakten Ebene nicht neu erfinden sondern kann mich auf das eigentliche Design der Rechte konzentrieren, also Fragen beantworten wie etwa "Was darf ein neu registriertes Mitglied überhaupt machen?" (z.B. nicht jedes andere Mitglied anschreiben oder nur eine Anzahl X an Themen pro Tag eröffnen) oder "Wie kann man bei einem kontroversen Thema für Ruhe sorgen, ohne einzelne Nutzer händisch zu ermahnen oder zu sperren?". Das ABAC-System wird darüberhinaus durch einen Vertrauenslevel-Mechanismus unterstützt, d.h. je aktiver ein Nutzer und je unproblematischer sein Auftreten, desto mehr Vertrauen wird ihm über die Zeit zugesprochen und der Funktionsumfang entsprechend erweitert bzw. im entgegengesetzten Falle automatisch eingeschränkt. Da die Mitgliedschaftsdauer und die Anzahl bisheriger Posts hier mit reinspielen, müsst ihr euch da übrigens als Alt-User null Gedanken machen, ihr geniest zu 99.9% die höchste Vertrauensstufe. Neue Mitglieder werden sich hier aber in einem absolut schaffbaren Rahmen beweisen müssen. Mit dem Thema bin ich jedenfalls mit Sicherheit die nächsten Wochen beschäftigt. Die ersten Tests am gestrigen Tag waren aus technischer Sicht schon mal ermutigend. Damit man erkennen kann, wie sich das in der Praxis bewähren würde, steht noch Einiges an Arbeit an - ich bin aber zuversichtlich. Vielleicht kann ich nächste Woche dazu schon was zeigen. Greets Rocco |
|||
| < antworten > | |||