Kullanıcı Hesabı Askıya Alma ve Kalıcı Kapatma
2026-02-26 21:03:33
#1

Bu doküman, kullanıcının kendi hesabını askıya alması (geçici) ve kalıcı kapatması özelliklerini açıklar. Askıya alınan hesap daha sonra tekrar açılabilir; kapatılan hesap kesinlikle açılamaz.

Hesabı askıya al (geçici)

  • Kullanıcı profil ayarlarından hesabını geçici olarak askıya alabilir.

  • İşlem: Mevcut şifre ile onay → is_suspended = 1, suspended_at = now() → oturum kapatılır, giriş sayfasına yönlendirilir.

  • Tekrar açma: Giriş sayfasında “Hesabımı tekrar aç” bağlantısı veya doğrudan /reactivate-account sayfası; kullanıcı adı/e-posta + şifre ile hesap tekrar açılır ve giriş yapılır.

Hesabı kalıcı kapat

  • Kullanıcı profil ayarlarından hesabını kalıcı olarak kapatabilir.

  • İşlem: Mevcut şifre + onay metni (TR: KAPAT, EN: CLOSE) ile iki aşamalı onay → closed_at = now() → oturum kapatılır.

  • Kalıcı kapatılan hesap tekrar açılamaz; giriş denemelerinde “Bu hesap kalıcı olarak kapatılmıştır” mesajı gösterilir.

Davranış (Auth)

Oturum (AuthService::user)

  • Giriş yapmış kullanıcı yüklenirken closed_at !== null ise kullanıcı “giriş yapmamış” kabul edilir (null döner). Böylece kapatılmış hesaplar oturum kullanamaz.

Giriş (AuthService::login)

Sıra ile kontrol:

  1. Kullanıcı yok → false

  2. is_bannedfalse

  3. closed_at dolu'closed' (kalıcı kapatılmış)

  4. is_suspended dolu'suspended' (askıda)

  5. Şifre hatalı → false

  6. E-posta doğrulanmamış / onay bekliyor → ilgili kod

  7. Başarılı → oturum açılır, true döner

AuthController

  • login:'closed'auth.account_closed mesajı, login sayfasına yönlendirme. 'suspended'auth.account_suspended mesajı + flash ile auth_show_reactivate; login sayfasında “Hesabımı tekrar aç” linki gösterilir.

  • reactivateForm: Askıya alınmış hesabı tekrar açma formu (kullanıcı adı/e-posta + şifre).

  • reactivate: Form POST; AuthService::reactivateAccount() ile şifre doğrulanır, hesap askıdan çıkarılır (is_suspended = 0, suspended_at = null), oturum açılır ve ana sayfaya yönlendirilir.

Reactivate (AuthService::reactivateAccount)

  • Giriş (kullanıcı adı veya e-posta) + şifre ile kullanıcı bulunur.

  • closed_at dolu ise → 'closed' (tekrar açılamaz).

  • Askıda değilse → 'not_suspended'.

  • Şifre yanlışsa → false.

  • Uygunsa: is_suspended = 0, suspended_at = null güncellenir, oturum açılır, true döner.


Profil: Askıya al / Kapat sayfası

Sayfa ve formlar

  • GET /profile/account — “Hesap askıya alma ve kapatma” sayfası (ProfileController::accountForm).

  • İki bölüm:

    1. Hesabı askıya al: Mevcut şifre, “Hesabı askıya al” butonu. Gönderim öncesi JS ile onay sorulur.

    2. Hesabı kalıcı kapat: Mevcut şifre + onay metni alanı (dil dosyasındaki profile.close_confirm_phrase: TR “KAPAT”, EN “CLOSE”). Gönderim öncesi JS ile onay sorulur.

İşlemler

  • POST /profile/suspend-account (ProfileController:😖uspendAccount):

    • CSRF ve mevcut şifre kontrolü.

    • is_suspended = 1, suspended_at = now() güncellenir.

    • Çıkış yapılır, login sayfasına auth_success ile yönlendirilir (suspend_success mesajı).

  • POST /profile/close-account (ProfileController::closeAccount):

    • CSRF, mevcut şifre ve onay metni (tam eşleşme: profile.close_confirm_phrase) kontrolü.

    • closed_at = now() güncellenir.

    • Çıkış yapılır, login sayfasına auth_error ile yönlendirilir (close_success mesajı).


Şablonlar

  • profile/accounttemplates/frontend/default/views/profile/account.html.twigAskıya al ve kalıcı kapat kartları, şifre ve onay metni alanları, JS confirm.

  • reactivate-accounttemplates/frontend/default/views/reactivate-account.html.twigKullanıcı adı/e-posta + şifre formu.

  • profile/edit — “Hesabı askıya al / Kapat” linki eklendi (profile/account).

  • login — Askıda hesap için hata kutusunda auth_show_reactivate flash’ı varsa “Hesabımı tekrar aç” linki (reactivate-account) gösterilir.


Admin panel

  • Güvenlik → Spam & Zombie → Askıya alınan kullanıcılar listesinde:

    • closed_at dolu kullanıcılar için “Askıyı kaldır” butonu yerine “Kalıcı kapatıldı” rozeti gösterilir.

    • Unsuspend işlemi yalnızca closed_at boş kullanıcılar için yapılır; kalıcı kapatılmış hesap askıdan çıkarılamaz.

Yazdığımız şeyler bizi temsil eder, Efendilik iyidir.
Please Login or Register.