Oturum modeli

Panel çerezle çalışır: giriş başarılı olunca 8 saatlik, kayan yenilemeli bir oturum çerezi yazılır. API’nin JWT’si makineler içindir; panel onu kullanmaz. Giriş formu hesap keşfine kapalıdır — kullanıcı yok ile parola yanlış aynı mesajı döner. Birden çok işyerinde üyeliğiniz varsa girişte işyeri kodu istenir.

İki adımlı doğrulama (TOTP)

Poyra, RFC 6238 standardında zamana dayalı tek kullanımlık kod kullanır — Google Authenticator, Aegis, 1Password gibi her TOTP uygulamasıyla çalışır.
  • Kurulumdaki QR ayrı bir uçtan servis edilir; sır ne HTML’e ne adrese yazılır.
  • Kurtarma kodları bir kez gösterilir (84213-90711 biçiminde 8 kod); veritabanında yalnız özetleri durur. Yazıcıdan çıkarın ya da parola kasanıza koyun — her kod tek kullanımlıktır.
  • Girişte kod ekranında “Bu cihazı 30 gün hatırla” seçeneği vardır: tarayıcıya opak bir cihaz çerezi yazılır, sunucuda yalnız özeti tutulur.
  • 2FA’yı kapatmak oturum yetmez: mevcut uygulama kodu ya da kurtarma kodu ister ve onay kutuludur. Kapatınca kurtarma kodları ve hatırlanan cihazlar da iptal olur.
  • İşyeri sahibi, ayrıcalıklı roller (owner/admin) için 2FA’yı zorunlu kılabilir. Zorunluluk açıkken 2FA’sız ayrıcalıklı kullanıcı kilitlenmez — girişte Güvenlik sayfasına, kuruluma yönlendirilir; sahibi dışarıda bırakmak onarımı imkânsız kılardı.

Parola akışları

  • Parolamı unuttum: yanıt, adresin kayıtlı olup olmamasından bağımsız aynıdır. Bağlantı 1 saat geçerli ve tek kullanımlıktır; aynı anda tek geçerli bağlantı olur (yenisi eskisini geçersiz kılar).
  • Sıfırlama parolayı değiştirir, tüm oturumları ve yenileme jetonlarını kapatır; jeton adres satırında bırakılmaz, gizli alanda taşınır.
  • Parola değişti e-postası hesap sahibine her durumda gider — ele geçirmeyi fark etmenin yolu budur.
  • E-posta doğrulama girişi engellemez; her sayfanın üstünde uyarı bandı çıkar. Doğrulama bağlantısı GET ile tüketilmez (posta tarayıcıları tek kullanımlık jetonu yakıyordu) — sayfadaki onay düğmesi tüketir.

Roller

Altı rol, artan yetkiyle sıralanır; her aksiyonun asgari eşiği vardır ve sunucu tarafında yeniden denetlenir: Ekip sayfasındaki korkuluklar: kimse kendi rütbesinin üstünde rol dağıtamaz, kendi rolünü düşüremez, kendi erişimini kaldıramaz; son sahip indirilmez ve kaldırılamaz. Erişimi kaldırılan kullanıcının açık oturumları anında kapanır.