- Shipped
- 11 agosto 2026 alle ore 16:25 UTC
- Author
- Kamo
- Commit
- 8ade029
Iscrizioni com.kamo.z.shared.hr.training in @EnableJpaRepositories — @EntityScan è ampio in modo che il le entità si trovano in entrambi i modi, ma i repository non lo sono. Due imbuti di autorizzazione, deliberatamente separati, che rispecchiano il modulo legale: TrainingAccess gates /api/docs/training/** su MANAGE TRAINING (RoleRightType 185) leggi e scrivi, che deve rimanere esattamente l'app/hr/hrTabs.ts giusta porta la scheda su. Un server più stretto rispetto al scheda lascia un membro in grado di aprire la scheda e raccogliere un 403 su una griglia vuota; più ampio, ed è un endpoint raggiungibile da qualcuno che l'UI non l'ha mai offerto. I diritti sono letti da member rights applied, mai from the token, perché la mappa della sessione di OTK non ha diritti. TrainingAssignmentOwnership autorizza la superficie del membro da IDENTITY. FormazioneMemberController quindi non detiene campo TrainingAccess affatto — un membro che ha preso un corso che è stato assegnato non ha L'HR ha ragione, e il routing attraverso l'imbuto delle risorse umane significherebbe bloccare ogni dipendente da la propria formazione o ampliamento del set di destra HR fino al catalogo e il pubblico roster aperto al Tutto org. La proprietà risponde 404, mai 403: un 403 conferma che l'id è reale e gira il endpoint in un oracolo per chi è stato assegnato cosa, e un record di valutazione non deve essere enumerabile da un pari. TrainingMemberSurfaceAuthTest pins tutte e tre le proprietà per riflessione, perché la modalità di guasto è qualcuno che aggiunge il campo in seguito "così il punto finale è assicurato troppo". GET /assegnazioni e GET /assegnazioni/conto in sospeso. Nessuna mappatura prende un membro o un org id — entrambi vengono dalla sessione. stato è un param RIPEATABLE, mai CSV: APIService consegna la sua URL a monte RestTemplate come String, che ri-encodes %2C a %252C, quindi una virgola arriva come un token letterale non corrispondere costante enum. Un filtro non riconosciuto significa "nessun filtro", mai "match nothing", quindi un stale bookmark mostra tutto piuttosto che una griglia vuota che legge come perdita di dati. The paged read è un repository DocsService-local sull'entità condivisa, ordinato (deliveredAt DESC, uid DESC) — paging su una chiave non unitaria duplicati e salta righe, e un'assegnazione di 200 membri scrive consegnatoAll'interno dello stesso millisecondo. in attesa-count restituisce la stessa forma JSON come il telaio spinto del distintivo in modo che un cliente parser serve Entrambi. Le righe sono mappate all'interno della transazione; corso e versione sono LAZY. 413 test passano.