Skip to content

Commit

Permalink
Don't soft-delete sites; remove immediately
Browse files Browse the repository at this point in the history
In all these years no one has asked me to undelete it, and it's caused
plenty of confusion because people delete sites to clear data, and then
re-create a new site with the same name.

So just delete it.

Still do the deletion in cron as it may take a while.
  • Loading branch information
arp242 committed Apr 9, 2024
1 parent a10fd66 commit 75a4241
Show file tree
Hide file tree
Showing 13 changed files with 18 additions and 105 deletions.
2 changes: 1 addition & 1 deletion handlers/backend_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ func TestBackendTpl(t *testing.T) {
{"/settings/users/1", "Password"},
{"/settings/purge", "Remove or merge pageviews"},
{"/settings/export", "includes all pageviews"},
{"/settings/delete-account", "The site will be marked as deleted"},
{"/settings/delete-account", "The site and all associated data will be permanently removed"},
{"/settings/change-code", "Change your site code and login domain"},

// Shared
Expand Down
6 changes: 0 additions & 6 deletions i18n/de-DE.toml
Original file line number Diff line number Diff line change
Expand Up @@ -976,12 +976,6 @@ Eigene Domain, z.B. <em>„stats.example.com“</em>.
["p/csv-file-format"]
default = "Das Format der CSV-Datei ist %[hier dokumentiert]"

["p/delete-account-multi-site"]
default = "Diese Website und alle verbundenen Websites werden als gelöscht markiert, und es ist kein Zugriff mehr möglich. Nach 7 Tagen werden alle zugehörigen Daten endgültig gelöscht."

["p/delete-account-one-site"]
default = "Diese Website wird als gelöscht markiert, und es ist kein Zugriff mehr möglich. Nach 7 Tagen werden alle zugehörigen Daten endgültig gelöscht."

["p/disable-mfa"]
default = "Für diesen Account ist MFA aktiviert."

Expand Down
6 changes: 0 additions & 6 deletions i18n/es-CL.toml
Original file line number Diff line number Diff line change
Expand Up @@ -982,12 +982,6 @@ Martin
["p/csv-file-format"]
default = "El formato del CSV está %[documentado aquí]."

["p/delete-account-multi-site"]
default = "El sitio y todos los sitios asociados serán marcados para ser eliminados y no tendrán acceso, pero ningún dato se va a eliminar. Después de 7 días todos los datos serán permanentemente eliminados."

["p/delete-account-one-site"]
default = "Este sitio será marcado para ser eliminado y no tendrá más acceso, pero ningún dato se va a eliminar aún. Después de 7 días todos los datos serán permanentemente eliminados."

["p/disable-mfa"]
default = "MFA está activado para esta cuenta."

Expand Down
6 changes: 0 additions & 6 deletions i18n/fr-FR.toml
Original file line number Diff line number Diff line change
Expand Up @@ -972,12 +972,6 @@ Nécessite un plan Personal Plus ou Business (vous êtes sur le plan \\"%(plan)\
["p/csv-file-format"]
default = "Le format du fichier CSV est %[documenté ici]."

["p/delete-account-multi-site"]
default = "Le site et tous les sites associés seront marqués comme supprimé et ne seront plus accessibles, mais aucune donnée ne sera réellement supprimée dans l'immédiat. Attention : après 7 jours, toutes les données seront définitivement supprimées."

["p/delete-account-one-site"]
default = "Le site sera marqué comme supprimé et ne sera plus accessible, mais aucune donnée ne sera réellement supprimée dans l'immédiat. Attention : après 7 jours, toutes les données seront <strong>définitivement</strong> supprimées."

["p/disable-mfa"]
default = "L'authentification MFA est activée pour ce compte."

Expand Down
6 changes: 0 additions & 6 deletions i18n/id-ID.toml
Original file line number Diff line number Diff line change
Expand Up @@ -981,12 +981,6 @@ Verifikasi akan dijalankan setiap 2 jam.
["p/csv-file-format"]
default = "Format berkas CSV %[didokumentasikan di sini]."

["p/delete-account-multi-site"]
default = "Situs dan situs yang terkait akan ditandai sebagai dihapus dan tidak akan lagi tersedia, tetapi tidak ada data yang dihapus. Setelah 7 hari semua data akan dihapus secara permanen."

["p/delete-account-one-site"]
default = "Situs ini akan ditandai sebagai dihapus dan tidak akan lagi tersedia, tetapi tidak ada data yang dihapus. Setelah 7 hari semua data akan dihapus secara permanen."

["p/disable-mfa"]
default = "Autentikasi multifaktor saat ini diaktifkan untuk akun ini."

Expand Down
6 changes: 0 additions & 6 deletions i18n/it-IT.toml
Original file line number Diff line number Diff line change
Expand Up @@ -990,12 +990,6 @@ e il vecchio codice potrà essere utilizzato da chiunque; se lo stai già utiliz
["p/csv-file-format"]
default = "Il formato del file CSV è %[documentato qui]."

["p/delete-account-multi-site"]
default = "Il sito e tutti i siti associati saranno marcati come cancellati e non saranno più accessibili, ma nessun dato verrà rimosso. Dopo 7 giorni tutti i dati verranno cancellati permanentemente."

["p/delete-account-one-site"]
default = "Il sito sarò marcato come cancellato e non sarà più accessibile, ma nessun dato verrà rimosso. Dopo 7 giorni tutti i dati verranno cancellati permanentemente."

["p/disable-mfa"]
default = "MFA abilitata per questo account."

Expand Down
6 changes: 0 additions & 6 deletions i18n/ja-JP.toml
Original file line number Diff line number Diff line change
Expand Up @@ -967,12 +967,6 @@ Martin
["p/csv-file-format"]
default = "CSV ファイルの形式については%[こちらのドキュメント]をご覧ください。"

["p/delete-account-multi-site"]
default = "サイトと関連するすべてのサイトは削除されたとマークされアクセスできなくなりますが、データは即座には削除されません。7 日後に、すべてのデータは完全に削除されます。"

["p/delete-account-one-site"]
default = "サイトは削除されたとマークされアクセスできなくなりますが、データは即座には削除されません。7 日後に、すべてのデータは完全に削除されます。"

["p/disable-mfa"]
default = "このアカウントでは、現在 MFA が有効です。"

Expand Down
14 changes: 0 additions & 14 deletions i18n/nl-NL.toml
Original file line number Diff line number Diff line change
Expand Up @@ -989,20 +989,6 @@ site (de oude en nieuwe code) om te voorkomen dat pageviews verloren gaan.</p>
["p/csv-file-format"]
default = "Het CSV-formaat is %[hier gedocumenteerd]."

["p/delete-account-multi-site"]
default = """
De site en alle data wordt gemarkeerd als verwijderd en is niet meer
toegankelijk, maar er wordt nog nog niks daadwerkelijk verwijderd. Na 7 dagen
wordt alle data permanent verwijderd.
"""

["p/delete-account-one-site"]
default = """
De site en alle data wordt gemarkeerd als verwijderd en is niet meer
toegankelijk, maar er wordt nog nog niks daadwerkelijk verwijderd. Na 7 dagen
wordt alle data permanent verwijderd.
"""

["p/disable-mfa"]
default = "MFA is aan voor deze account."

Expand Down
6 changes: 0 additions & 6 deletions i18n/pl-PL.toml
Original file line number Diff line number Diff line change
Expand Up @@ -991,12 +991,6 @@ kody (ze starym i nowym), aby zapobiec utracie zliczenia jakichkolwiek odsłon.<
["p/csv-file-format"]
default = "Format pliku CSV jest %[udokumentowany tutaj]."

["p/delete-account-multi-site"]
default = "Witryna i inne z nią powiązane zostaną oznaczone jako usunięte i staną się niedostępne, ale dane zostaną zachowane przez 7 dni."

["p/delete-account-one-site"]
default = "Witryna zostanie oznaczona jako usunięta i stanie się niedostępna, ale dane zostaną zachowane przez 7 dni."

["p/disable-mfa"]
default = "MFA jest aktualnie włączone dla tego konta"

Expand Down
15 changes: 2 additions & 13 deletions i18n/template.toml
Original file line number Diff line number Diff line change
Expand Up @@ -1424,20 +1424,9 @@ codes (with the old and new code) to prevent the loss of any pageviews.</p>
loc = ["tpl/settings_export.gohtml:6"]
default = "The format of the CSV file is %[documented over here]."

["p/delete-account-multi-site"]
["p/delete-account"]
loc = ["tpl/settings_delete.gohtml:7"]
default = """
The site and all associated sites will be marked as deleted and will no
longer be accessible, but no data is removed. After 7 days all data will be
permanently removed.
"""

["p/delete-account-one-site"]
loc = ["tpl/settings_delete.gohtml:13"]
default = """
The site will be marked as deleted and will no longer be accessible, but no
data is removed. After 7 days all data will be permanently removed.
"""
default = "The site and all associated data will be permanently removed with no possibility of recovery."

["p/disable-mfa"]
loc = ["tpl/user_auth.gohtml:34"]
Expand Down
13 changes: 0 additions & 13 deletions i18n/tr-TR.toml
Original file line number Diff line number Diff line change
Expand Up @@ -990,19 +990,6 @@ geçici bir süreliğine iki tane kod (eski ve yeniyi beraber) kullanın.</p>
["p/csv-file-format"]
default = "CSV dosyasının formatı %[burada belgelenmiştir] şeklindedir."

["p/delete-account-multi-site"]
default = """
Bu site ve tüm ilişkili siteler silinmiş olarak işaretlenecek
ve erişilmez olacaktır, ancak hiçbir veri silinmeyecektir.
7 gün sonra tüm veriler tamamen silinecektir.
"""

["p/delete-account-one-site"]
default = """
Bu site silinmiş olarak işaretlenecek ve erişilmez olacaktır, ancak hiçbir
veri silinmeyecektir. 7 gün sonra tüm veriler tamamen silinecektir.
"""

["p/disable-mfa"]
default = "ÇFKD şu anda bu hesap için etkin."

Expand Down
15 changes: 9 additions & 6 deletions site.go
Original file line number Diff line number Diff line change
Expand Up @@ -334,10 +334,14 @@ func (s *Site) Delete(ctx context.Context, deleteChildren bool) error {
}
}

// Update the site code so people can delete a site and then immediatly
// re-create a new site with the same name.
q := `update sites set state=$1, updated_at=$2, code=random() where site_id=$3 or parent=$3`
if zdb.SQLDialect(ctx) == zdb.DialectPostgreSQL {
q = `update sites set state=$1, updated_at=$2, code=gen_random_uuid() where site_id=$3 or parent=$3`
}
t := ztime.Now()
err := zdb.Exec(ctx,
`update sites set state=$1, updated_at=$2 where site_id=$3 or parent=$3`,
StateDeleted, t, s.ID)
err := zdb.Exec(ctx, q, StateDeleted, t, s.ID)
if err != nil {
return errors.Wrap(err, "Site.Delete")
}
Expand Down Expand Up @@ -669,9 +673,8 @@ func (s *Sites) ContainsCNAME(ctx context.Context, cname string) (bool, error) {
// OldSoftDeleted finds all sites which have been soft-deleted more than a week
// ago.
func (s *Sites) OldSoftDeleted(ctx context.Context) error {
return errors.Wrap(zdb.Select(ctx, s, fmt.Sprintf(`/* Sites.OldSoftDeleted */
select * from sites where state=$1 and updated_at < %s`, interval(ctx, 7)),
StateDeleted), "Sites.OldSoftDeleted")
err := zdb.Select(ctx, s, `select * from sites where state=$1`, StateDeleted)
return errors.Wrap(err, "Sites.OldSoftDeleted")
}

// Find sites: by ID if ident is a number, or by host if it's not.
Expand Down
22 changes: 6 additions & 16 deletions tpl/settings_delete.gohtml
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,12 @@
{{template "_settings_nav.gohtml" .}}

<h2 id="delete">{{.T "header/delete-account|Delete account"}}</h2>

{{if gt (len .Sites) 1}}
<p>{{.T `p/delete-account-multi-site|
The site and all associated sites will be marked as deleted and will no
longer be accessible, but no data is removed. After 7 days all data will be
permanently removed.
`}}</p>
{{else}}
<p>{{.T `p/delete-account-one-site|
The site will be marked as deleted and will no longer be accessible, but no
data is removed. After 7 days all data will be permanently removed.
`}}</p>
{{end}}
<br>
<div class="flash flash-e">
<p><strong>{{.T `p/delete-account|
The site and all associated data will be permanently removed with no possibility of recovery.
`}}</strong></p>
</div>

{{if gt (len .Sites) 1}}
<div class="flash flash-e" style="text-align: left;">
Expand Down Expand Up @@ -46,8 +39,5 @@

<button type="submit">{{.T "button/delete-account|Delete account, all sites, and all data"}}</button>
</form>
{{.T "p/request-data-recovery|%[Contact] within 7 days if you changed your mind and want to recover your data."
(tag "a" `href="/contact"`)
}}</p>

{{template "_backend_bottom.gohtml" .}}

0 comments on commit 75a4241

Please sign in to comment.