- Shipped
- 11. August 2026 um 16:25 UTC
- Author
- Kamo
- Commit
- 8ade029
Registriert com.kamo.z.shared.hr.training in @EnableJpaRepositories . @EntityScan ist breit gerückt, so dass die Entitäten werden so oder so gefunden, aber Repositorien sind es nicht. Zwei Berechtigungsentzugsentrichter, absichtlich getrennt, Spiegelung des rechtlichen Moduls: TrainingAccess-Gatter /api/docs/training/** auf MANAGE_TRAINING (RoleRightType 185) lesen UND schreiben, die genau die richtige app/hr/hrTabs.ts verbietet die Registerkarte. Ein Server, der schmaler eingestellt ist als tab's lässt ein Mitglied in der Lage, die Registerkarte zu öffnen und sammeln Sie eine 403 über ein leeres Gitter; breiter, und es ist ein endpoint erreichbar durch jemanden, dem die UI es nie angeboten hat. Rechte werden gelesen member_rights_applied, nie aus dem Token, weil die OTK-Sitzungskarte keine Rechte hat. TrainingAssignmentOwnership autorisiert die eigene Oberfläche des Mitglieds durch IDENTITY. TrainingMemberController hat daher überhaupt kein Schulungszugriffsfeld - ein Mitglied, das einen ihm zugewiesenen Kurs hat, keinen HR richtig, und sie durch den HR-Trichter zu leiten würde bedeuten, entweder jeden Mitarbeiter auszusperren ihre eigene Ausbildung oder Erweiterung der HR-Rechts-Set, bis der Katalog und Publikum Dienstplan offen für die ganze Org. Eigentumsantworten 404, nie 403: ein 403 bestätigt, dass die Uid echt ist und dreht den Endpunkt in ein Orakel für die, die was zugewiesen wurde, und eine Bewertung Aufzeichnung darf nicht von einem Peer aufzählen. TrainingMemberSurfaceAuthTest pinnt alle drei Eigenschaften durch Reflexion, weil der Ausfallmodus ist Jemand, der das Feld später hinzufügt, "so ist auch der Endpunkt gesichert". GET /zusenmächtigungen und GET /zuweisen/Ausgaben-Zählung. Keine Mapping nimmt ein Mitglied oder org id - beide kommen von der Sitzung. Status ist ein REPEATABLE Param, nie CSV: APIService gibt seine upstream URL an Resttemplate as a String, der %2C bis %252C neu kodiert, so dass ein Komma als ein buchstäbliches Zeichen ankommt passend keine enum Konstante. Ein unerkennzeichneter Filter bedeutet "kein Filter", nie "nichts passen", also Abgestandenes Lesezeichen zeigt alles und nicht ein leeres Raster, das sich als Datenverlust liest. Die gespendete Seite ist ein DocsService-Lokal-Repository über die gemeinsame Entität, sortiert (gereicht an DESC, uid DESC) - übt sich auf ein nicht-unique Key Duplikate und überspringt Zeilen, und eine 200-köpfige Zuordnung schreibt geliefertIm Inneren der gleichen Millisekunde. Bündel-Zähler gibt die gleiche JSON-Form wie der Druckrahmen der Plakette, so dass ein Client-Pser serviert beides. Reihen werden innerhalb der Transaktion abgebildet; Kurs und Version sind LAZY. 413 Tests bestehen.