- Spegnimento
- 19 agosto 2026 alle ore 07:54 UTC
- Autore
- Kamo
- Impegno
- 15f942a
Un conto sintetico — un artefatto di prova, un apparecchio di semenza, o un cartello giudicato per essere automatizzato — ora trasporta `users.is fake`, e la piattaforma smette di riconoscerlo. Cancellare un account non è una vera opzione: una riga utente è la radice di sette le tabelle satellitari, ogni Membro che possiede e ogni Organizzazione che ha creato, che in attivare i propri domini, funzionalità, modelli di posta elettronica, ruoli e snapshot di archiviazione. Cancellazione significa fuggire attraverso tutto ciò o lasciare orfani, e distrugge le prove di qualunque cosa abbia fatto il conto. Un booleano è reversibile e costa una colonna. La bandiera vive sull'USER, non sul membro o sull'organizzazione, perché la proprietà è l'unico bordo che raggiunge in modo affidabile i dati derivati: `orgs.user id owner` e `members.user id` entrambi puntano qui, quindi una bandiera risponde "è il creatore di questa riga sintetico" per tutte e tre le spine. La registrazione dell'org invece lascerebbe l'account in grado firmare e creare di più. Quello che la bandiera raggiunge, e perché ognuno è qui piuttosto che nel chiamante: - `UserRepository.findSession` e la proiezione auth: l'account flagged risolve a zero righe, quindi legge come inesistente piuttosto che come bloccato. - `MemberRepository` / `TeamMemberRepo`: esclusi dagli elenchi dei membri di org e da entrambe le ricerche directory, accanto al System User che era già filtrato lì. - No, no. l'enumerazione choke punto nove chiamata i siti condividono. `getOrganizationBy Id` non è deliberatamente filtrato — è indietro scrive ed è come la superficie di amministrazione raggiunge un org flagged per sgonfiarlo. - No, no. un org flagged smette di risuonare dall'ospite, quindi non può continuare ad accettare iscrizioni reali sotto il proprio sottodominio di registro. - filtrato nella query, piuttosto che in quella watcher, perché la spazzata prende un lotto fisso ogni minuto e un dominio nessuno possiede sarebbe altrimenti tenere una di quelle slot per sempre, probing DNS di qualcun altro. Ognuno di questi utilizza un chiaro e alias LEFT JOIN. Un bare `o.owner.isFake` percorso in una clausola WHERE fa Hibernate aggiungere un secondo, implicito INNER unire, che sarebbe silenziosamente cadere ogni riga il cui proprietario è null — e per `findByDomain` che è la risoluzione di login. I ricercatori di cui sopra sono additivi; i ricercatori di identità su UserRepository sono lasciati non filtrato di proposito. La maggior parte di loro sono carica-portante per l'unicità pre-controlla e come per le ricerche, e `USERS.EMAIL`/`ALIAS` sono unici per security-provider — quindi un registrazione duplicato-check che non poteva vedere una riga contrassegnata avrebbe navigato oltre il proprio guardia e morire invece su una violazione di vincolo. Aggiunge anche REGISTRAZIONE, REGISTRATION REJECTED, EMAIL VERIFIED e ORG CREATED a AccessLogEventType. `system access logs` ha tenuto solo login, login fallito e logout, così un account che ha registrato, verificato, ha preso una sessione di auto-login e ha creato cinque organizzazioni prodotte zero righe — nessun evento, nessun IP, nessun utente-agente — e ogni rilevamento regola i tasti fuori eventi di login, lasciando l'intero registro imbuto inosservabile. `users.is fake` esiste già in produzione: KamoInitializer UserIsFakeMigration prima di questa spinta, quindi nessun servizio può costruire contro uno schema non migrato.