[DISC] Wat doe je met een gedeletete user?

Pagina: 1
Acties:

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
Binnen mijn cms'je kunnen users verschillende soorten content aanmaken: pagina's, artikelen, forum topics, plaatjes (uploaden) etc.

Als een user zich misdraagt, heb ik een mogelijkheid gebouwd om de account te blokkeren. De user kan dan niet meer inloggen, maar alle door hem/haar geleverde content blijft gewoon staan.

Nu hebben veel open source cms'en de mogelijkheid om een user (ook) te deleten, maar zij gaan hier allemaal anders mee om. Sommigen deleten alle door de user geleverde content, anderen voegen iets aan de content toe (bv. "user deleted" achter de naam van de author van een stukje content).

Wat doen jullie als je een user account delete? Of delete je nooit een account maar blokkeer je hem hooguit? Het grootste nadeel van deleten en content verwijderen vind ik dat de integriteit van de website niet meer gewaarborgd kan worden. Stel dat GoT de posts van een bepaalde user zou verwijderen, dan slaan bepaalde draadjes geheid nergens meer op. En als user A een plaatje in een artikel gebruikt dat door user B is geupload, en ik verwijder user B, dan zou het artikel van A ineens geen plaatje meer hebben.

Mijn vraag is dus: hoe gaan jullie hiermee om? Heeft React bv. een mogelijkheid om een user te verwijderen en wat gebeurt er dan? Hoe zit het in jullie cms?

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • om3ega
  • Registratie: Maart 2001
  • Laatst online: 14-02 13:01
Met de grote DB crash een tijdje terug hier is er voor gekozen om 1 ID aan te nemen voor users die het niet gehaald hebben (waarvan de login verloren is gegaan) ..

Het gebeurd ook nog wel eens dat een user eist dat al zijn postings worden verwijderd als de user wordt gedelete (is dit hard te maken eigenlijk?) ..

Als ik een CMS zou maken , zou ik dus 2 opties er in zetten :

1 : Deleted users naar een dummy account zetten zodat de posts niet gek gaan doen.
2 : Na het deleten ook de posts deleten.

D.m.v. een query zou je nog alle links die linken naar de "gedelete" user kunnen updaten naar iets zinvols..

  • flashin
  • Registratie: Augustus 2002
  • Laatst online: 17-12-2023
Mja de oplossing die je nu hebt lijkt me het beste. Account gewoon op inactief zetten maar alle content laten staan. De users is het er niet mee eens? stuur ze even richting je Algemene Voorwaarden of iets dergelijks.

Als je ook de content automatisch verwijdert (foreign key) wanneer je de user verwijdert, verziek je inderdaad je hele forum/website. No-go imho :p

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Reveller schreef op vrijdag 04 augustus 2006 @ 14:09:
Stel dat GoT de posts van een bepaalde user zou verwijderen, dan slaan bepaalde draadjes geheid nergens meer op.
Reden genoeg voor ons om in onze Algemene Voorwaarden op te nemen dat we géén accounts verwijderen. ;) Users verwijderen zou ik in elk geval nooit (meer) fysiek doen. Ik heb dat één keer mogelijk gemaakt bij een website, en daar heb ik nu nog steeds last van. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 30-01 15:48

Not Pingu

Dumbass ex machina

Users verwijderen creeert 2 problemen:

- referentiele integriteit met content die de user geplaatst heeft. dat een user om wat voor reden dan ook de toegang ontnomen wordt, wil niet meteen zeggen dat al zijn content weg moet.
- terughalen van gegevens mbt. deze user. Fysiek verwijderen betekent dat je alle data omtrent deze user kwijt bent (tenzij je moeilijk gaat doen met een soort prullenbak).

Dus gewoon de account deactiveren en eventuele ongewenste content editen/op inactief zetten.

Certified smart block developer op de agile darkchain stack. PM voor info.


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:21

Janoz

Moderator Devschuur®

!litemod

In mijn applicaties die iets met databases te maken hebben delete ik nooit wat. Ik neem meestal een boolean op die aangeeft of het record gedelete is. Deze komt dan in overzichten niet meer terug.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • Speedener
  • Registratie: September 2000
  • Laatst online: 09-02 10:03
Janoz schreef op vrijdag 04 augustus 2006 @ 14:51:
In mijn applicaties die iets met databases te maken hebben delete ik nooit wat. Ik neem meestal een boolean op die aangeeft of het record gedelete is. Deze komt dan in overzichten niet meer terug.
Levert dat geen (preformance) problemen op? Ik kan me voorstellen dat sommige tabellen dan onwijs groot worden.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 14-02 12:34

gorgi_19

Kruimeltjes zijn weer op :9

Speedener schreef op vrijdag 04 augustus 2006 @ 15:01:
[...]

Levert dat geen (preformance) problemen op? Ik kan me voorstellen dat sommige tabellen dan onwijs groot worden.
Wat vind je onwijs groot? :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Speedener
  • Registratie: September 2000
  • Laatst online: 09-02 10:03
Sessie tabel van een middelgrote website 8)7 . Maar ik merk het regelmatig ook al bij gastenboeken die 5000+ posts hebben, dat de laad tijd soms flink op kan lopen.

  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 30-01 15:48

Not Pingu

Dumbass ex machina

Speedener schreef op vrijdag 04 augustus 2006 @ 15:01:
[...]

Levert dat geen (preformance) problemen op? Ik kan me voorstellen dat sommige tabellen dan onwijs groot worden.
Als het aantal records in je database inverse invloed heeft op je performance, doe je iets fout.
(Tenzij je natuurlijk continu de hele tabel wilt ophalen.)

[ Voor 8% gewijzigd door Not Pingu op 04-08-2006 15:09 ]

Certified smart block developer op de agile darkchain stack. PM voor info.


  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Sessies ruim je sowieso regelmatig op, die hoef je echt niet te bewaren. En 5000 records is natuurlijk niks voor een database. Als dat traag is dan is de opbouw van de database slecht (indexes verkeerd e.d.), of het schilletje eromheen is traag (geschreven).

Sole survivor of the Chicxulub asteroid impact.


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 17:21

Creepy

Tactical Espionage Splatterer

Speedener schreef op vrijdag 04 augustus 2006 @ 15:07:
[...]

Sessie tabel van een middelgrote website 8)7 . Maar ik merk het regelmatig ook al bij gastenboeken die 5000+ posts hebben, dat de laad tijd soms flink op kan lopen.
5000+ rijen in een DB is niks. Die paar extra records die je hebt in een tabel van eventueel verwijderde users zijn echt te verwaarlozen.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
-NMe- schreef op vrijdag 04 augustus 2006 @ 14:27:
[...]
Reden genoeg voor ons om in onze Algemene Voorwaarden op te nemen dat we géén accounts verwijderen. ;)
"[...] Een lid is te alle tijde gerechtigd om zijn/haar account op te zeggen. De gegevens van het desbetreffende account zullen worden verwijderd. Geplaatste reacties kunnen niet worden verwijderd, aangezien zij integraal onderdeel uitmaken van de discussies." (bron)
Netjes hoor :) Ik moet er wel aan denken om dat dan ook in de voorwaarden op te nemen. Alleen: hoe rechtsgeldig is dit eigenlijk? Want in punt 13 van de Algemene Voorwaarden staat:
"[...] Het copyright van reacties berust bij de individuele auteurs."
Geef je daarmee de auteur niet het recht te eisen dat zijn berichten verwijderd worden? Een beetje off-topic, maar ik wil niet zien dat achteraf blijkt dat je verplicht gesteld kunt worden om berichten van een user te verwijderen, zonder dat ik daarmee rekening gehouden had. Nu ben ik nog in de fase dat ik beslissingen kan nemen die de teloorgang van de integriteit kunnen beperken (bijvoorbeeld door geen threaded comments te implementeren zoals op tweakers.net).

[ Voor 3% gewijzigd door Reveller op 04-08-2006 15:15 ]

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Auteursrecht is wat anders dan eigendomsrechten. Als je een boek koopt, dan is dat boek van jou, maar de schrijver heeft het auteursrecht. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
Dat is overtuigend :)

Dan een praktische kwestie. Tweakers zegt de gegevens van de account te verwijderen, maar niet de reakties. Ik heb hier nog een aantal vragen over:
  • worden met de account gegevens de NAW gegevens etc. bedoeld?
  • blijft de username wel bestaan en wat gebeurt er als ik op zo'n username klik? Ga ik dan gewoon naar het profiel van die user (waar dus alleen een username, registratiedatum en aantal posts zal staan)?
  • wordt ook het email adres verwijderd en kan deze persoon later met zijn eigen email adres weer een nieuw account aanmaken, of blijft het email adres wel staan?

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 14-02 19:13
Het lijkt me dat je een voorwaarde opneemt die stelt dat de website een onherroepelijk, niet-exclusief recht heeft geplaatste reacties in hun oorspronkelijke context weer te geven. Daarmee dragen gebruikers niet hun auteursrecht over, maar het betekent wel dat bijdragen niet verwijderd hoeven te worden, als de gebruiker geblokkeerd wordt.

Ik weet niet precies wat Tweakers.net daarover in de voorwaarden heeft staan, maar ik ga er in ieder geval vanuit dat dingen die ik hier post nooit meer kan verwijderen (en zorg dus ook dat ik geen dingen post die ik niet gepubliceerd wil hebben).

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 16:33
-NMe- schreef op vrijdag 04 augustus 2006 @ 15:18:
Auteursrecht is wat anders dan eigendomsrechten. Als je een boek koopt, dan is dat boek van jou, maar de schrijver heeft het auteursrecht. ;)
Dat klopt, maar het recht tot openbaarmaking is essentieel onderdeel van het auteursrecht. In principe ga je bij het posten akkoord met openbaarmaking (je geeft T.net het recht om dat te doen). Het punt waar het dan om draait is of je dat terug kunt draaien. Ik denk dat de passage uit de AV voldoende is om te zorgen dat hier geen discussie om kan intstaan (en dus posts on-line mogen blijven), maar goed je weet nooit.
Het behoud van auteursrecht voor posters lijkt me verder vrij essentieel. Anders zou elk stukje code dat je hier post in eens "van T.net zijn". Dan post geen mens nog bruikbare code, a) omdat je het dan kwijt bent en b) omdat iedereen die het gebruikt het risico loopt om door tweakers gedaagd te worden wegen copyrightschending ;)

Regeren is vooruitschuiven


  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 12-02 12:22
Wat betreft posts op een forum is het heel simpel. Gewoon in je gebruiksvoorwaarden opnemen dat de auteur dient in te stemmen met het altijd durende recht tot publicatie op het forum van de geleverde postings.

Een bijzonder punt is echter moderatie op een forum. In principe worden dan zaken gewijzigd waar de auteur het niet mee eens kan zijn.

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
The - DDD schreef op vrijdag 04 augustus 2006 @ 16:15:
Een bijzonder punt is echter moderatie op een forum. In principe worden dan zaken gewijzigd waar de auteur het niet mee eens kan zijn.
Ja, maar het lijkt me dat je dat kunt ondervangen door iets als "<website> heeft het recht reakties te wijzigen wanneer de inhoud hiervan niet in overeenstemming is met de gebruikersvoorwaarden" of zoiets :)

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Reveller schreef op vrijdag 04 augustus 2006 @ 16:31:
[...]

Ja, maar het lijkt me dat je dat kunt ondervangen door iets als "<website> heeft het recht reakties te wijzigen wanneer de inhoud hiervan niet in overeenstemming is met de gebruikersvoorwaarden" of zoiets :)
9. Tweakers.net BV houdt zich uitdrukkelijk het recht voor om de vormgeving en/of inhoud van berichten, reacties of welke andere vorm van content ook, te wijzigen of te verwijderen.
:P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • JJvG
  • Registratie: Juli 2003
  • Laatst online: 02-12-2025
In de applicaties die ik heb gebouwd doe ik over het algemeen twee dingen bij ex-users:
- Boolean bij de user omzetten zodat user niet meer getoond wordt in de querys
- Alle rechten van een gebruiker verwijderen

Just my 2 cents...

  • Guru Evi
  • Registratie: Januari 2003
  • Laatst online: 23-12-2025
De meeste voorwaarden nemen inderdaad op dat wijzigingen mogelijk zijn door moderetters. Om beter te zijn zouden Moderetters eigenlijk enkel maar de post mogen verbergen met een klein notaatje zoals op GoT gebeurt. Als iemand de post veranderd om het beter te maken kom je inderdaad met andere legale problemen.

Wat ik doe is gewoon de user disablen (1/0) in een database. In een goed opgezette database staan de users in een aparte tabel dan de posts en comments. Een fout die ik ook soms zie is dat je een SQL achteraf in je code filtert. Imho moet een SQL query het kleinste mogelijk aantal records verkrijgen die je rechtstreeks in je code kunt flikkeren. Ik heb inderdaad mensen gezien die de rechten vaststellen in code (if($rights=="poster") { echo $username }) terwijl ze evengoed een WHERE rights="poster" hadden kunnen doen en dan die if functie eruit kunnen halen en opeens 400 records minder moeten verwerken.

Pandora FMS - Open Source Monitoring - pandorafms.org


  • DexterDee
  • Registratie: November 2004
  • Laatst online: 13-02 16:00

DexterDee

I doubt, therefore I might be

Als toevoeging kan ik nog even zeggen dat de populaire messageboard software phpBB een concept gebruikt met een user tabel én een username veldje in de phpbb_posts tabel. Dit username veldje is standaard leeg en er wordt naar een user_id gelinkt, maar als iemand zichzelf uitschrijft als gebruiker gaat het systeem eerst de naam van de uitgeschreven gebruiker in alle posts zetten van die gebruiker en gooit daarna het username record weg in de phpb_users tabel.

Dit is een andere benadering dan de meesten hierboven aandragen. Het ligt helemaal aan de situatie hoe je het wil aanpakken. phpBB heeft geen referentiele integriteit, er zijn nergens constraints in het datamodel. Ik ben daar op zich wel voorstander van, omdat het je helpt de data consistent te houden op database niveau. Een programmeerfoutje op je 2e tier hoeft dan geen drastische gevolgen te hebben.

Klik hier om mij een DM te sturen • 3245 WP op ZW


Verwijderd

DexterDee schreef op vrijdag 04 augustus 2006 @ 23:26:
x heeft geen referentiele integriteit, er zijn nergens constraints in het datamodel. Ik ben daar op zich wel voorstander van, omdat het je helpt de data consistent te houden op database niveau.
:?
DexterDee schreef op vrijdag 04 augustus 2006 @ 23:26:
Een programmeerfoutje op je 2e tier hoeft dan geen drastische gevolgen te hebben.
Integendeel, een programmeerfout kan volgens mij juist wel drastische gevolgen hebben.
Het doel van constraints is om de integriteit van de database te waarborgen.

[ Voor 13% gewijzigd door Verwijderd op 05-08-2006 21:30 ]


  • DexterDee
  • Registratie: November 2004
  • Laatst online: 13-02 16:00

DexterDee

I doubt, therefore I might be

Verwijderd schreef op zaterdag 05 augustus 2006 @ 18:16:
Integendeel, een programmeerfout kan volgens mij juist wel drastische gevolgen hebben.
Het doel van constraints is om de integriteit van de database te waarborgen.
Je hebt me verkeerd begrepen. Ik zei dat het geen grote gevolgen hoeft te hebben, niet dat het niet alsnog kan. Constraints kunnen je gewoon in sommige gevallen helpen om minder schade toe te brengen aan de data door een programmeerfout. Als je bijvoorbeeld een where clause in je SQL vergeet waardoor alle gebruikers worden weggegooid, terwijl je er er maar 1 wilde weggooien, dan kan het handig zijn dat je een constraint hebt gelegd naar een tabel met geschreven artikelen, waardoor er een stuk minder gebruikersrecords naar de prullenbak gaan. Of nog beter, als je een record insert met een missende foreign key relatie, dan resulteert de query in een error en niet in een nieuw record die niet meer referentieel integer is.

Natuurlijk zijn er nog tig voorbeelden te bedenken van programmeerfouten waarbij dit absoluut niet opgaat. Maar dat was mijn punt niet, ik wilde alleen duidelijk maken dat je in sommige gevallen door constraints de schade van programmeerfouten kunt beperken.

De reden dat ik phpBB aanhaalde is dat daar allerlei synchronisatiescriptjes in zitten die de referentiele integriteit 'scriptmatig' moeten herstellen van data waartussen geen constraints bestaan. Als administrator van een groot bulletinboard gebaseerd op phpBB kan ik uit eigen hand vertellen hoe vervelend data inconsistency binnen je database is.

Klik hier om mij een DM te sturen • 3245 WP op ZW

Pagina: 1