Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / Kimlik ve erişim

Açıklama

Kayıt

Çok kiracılı kipte bir kiracı ve üyeliğini yaratan self servis kayıt; alan adı doğrulaması, aydınlatma metni ve kurulum.

Kayıt, bir şirketin üyelik satın aldığı ve kendi kiracısını aldığı anonim, herkese açık giriştir. Yalnızca çok kiracılı kipte vardır. Uçlar server/routes/signup.py, akış server/signup.py içindedir; ikisi de kiracı veritabanında değil, kontrol düzleminde çalışır. Bu sayfa doğrulamayı, aydınlatma metnini, alan adı doğrulamasını, ödemeyi, kurulumu ve anonim durum sorgusunu açıklar. Kiracı modelinin kendisi çok kiracılılık sayfasındadır; web formu mail ve profil ekranları sayfasında anlatılır.

Kısaca

  • Uçlar yalnızca multi_tenant açıkken bağlanır; aksi hâlde GET /api/v1/signup/ {"signup": "closed"} yanıtını verir (src/cluster_erp/server/app.py:1440-1457).
  • signup_enabled ayarı çok kiracılı bir düğümde kapıyı kapatır: yoklama kapalı yanıtını verir ve yaratma SIGNUP_CLOSED ile reddedilir (src/cluster_erp/server/routes/signup.py:129-133, src/cluster_erp/server/signup.py:226-234).
  • Bir kayıt, signup_notice_dir ve signup_notice_version ayarlarından okunan güncel aydınlatma metni sürümünü ister; yapılandırılmış metin yoksa kayıtlar reddedilir (src/cluster_erp/server/signup.py:206-253).
  • Kurucunun e-postası iddia edilen posta alan adında olmalıdır; signup_verify_email açıkken kurulum, o adrese gönderilen bağlantı onaylanana kadar bekler (src/cluster_erp/server/signup.py:256-280, src/cluster_erp/server/signup.py:336-372).
  • Anonim yüzey yalnızca istek gövdelerindeki yetki belirteçlerini kabul eder; kontrol düzlemi bunların SHA-256 özetlerini saklar (src/cluster_erp/server/routes/signup.py:8-15, src/cluster_erp/core/tenancy.py:73-84, src/cluster_erp/core/tenancy.py:233-239).

Nasıl çalışır

Adımlar

Dizi, e-posta doğrulaması açık bir kaydı gösterir.

sequenceDiagram
    participant V as ziyaretçi tarayıcısı
    participant R as kayıt uçları
    participant S as start_signup
    participant T as TenantRegistry
    participant P as provision
    V->>R: GET /api/v1/signup/
    R-->>V: açık veya kapalı, bölgeler, aydınlatma metni
    V->>R: POST /api/v1/signup/
    R->>S: SignupRequest
    S->>T: domain_owner, create_tenant, Membership
    S-->>V: signup_token, durum queued
    V->>R: verify_token ile POST /api/v1/signup/verify
    R->>P: _provision_in_background
    V->>R: signup_token ile POST /api/v1/signup/status
    R-->>V: durum, hazırsa tenant_domain

Düz anlatımla:

  1. GET /api/v1/signup/ kapının açık olup olmadığını, bölgeleri, varsayılan bölgeyi, düğüm ülkesini, ülkeden düğüme haritayı ve aydınlatma metnini döndürür (src/cluster_erp/server/routes/signup.py:114-143).
  2. POST /api/v1/signup/, control_rate_limits içinde sayılan, istemci başına saatlik signup_rate_limit_per_hour sınırını uygular (src/cluster_erp/server/routes/signup.py:63-85, src/cluster_erp/server/routes/signup.py:146-149).
  3. start_signup kapıyı denetler, isteği doğrular, güncel aydınlatma metnini ister, canlı bir kiracının zaten sahip olduğu alan adını reddeder ve ödeme bağlantı noktasından ödeme ister (src/cluster_erp/server/signup.py:291-310).
  4. Alan adından bir kiracı anahtarı türetir, bölgeyi denetler, kiracıyı provisioning durumuyla kaydeder ve active durumlu, queued kurulum durumlu, aydınlatma metni sürümünü ve kabul zamanını taşıyan bir Membership saklar (src/cluster_erp/server/signup.py:312-353).
  5. Doğrulama açıkken kontrol düzleminde yalnızca kurucu parolasının Argon2 özeti bekler ve bir doğrulama postası gider (src/cluster_erp/server/signup.py:344-364). Doğrulama kapalıyken kurulum hemen başlar (src/cluster_erp/server/signup.py:366-372).
  6. POST /api/v1/signup/verify verified_at damgasını basar ve saklanan kimlikle kurulumu başlatır; süresi dolmuş bağlantı HTTP 410 döner (src/cluster_erp/server/routes/signup.py:171-189, src/cluster_erp/server/signup.py:472-516).
  7. _provision_in_background durumu önce running, sonra ready yapar ve bekleyen özeti siler; hata olursa failed yapar ve ayrıntıyı yalnızca operatör için günlüğe yazar (src/cluster_erp/server/signup.py:534-568).
  8. POST /api/v1/signup/status bir kayıt belirteci için durumu ve yalnızca hazır olduğunda giriş alan adını döndürür (src/cluster_erp/server/routes/signup.py:222-243).

Üyelik durumları

Alan Değerler Kaynak
Membership.status pending, active, suspended, cancelled src/cluster_erp/core/tenancy.py:276-279
Membership.provision_state queued, running, ready, failed src/cluster_erp/core/tenancy.py:280-283
Durum ucunun gösterdiği durum kurulum durumu veya açık bir doğrulama belirteci varken awaiting_verification src/cluster_erp/server/routes/signup.py:229-232

Diğer uçlar

Uç Etki Kaynak
POST /api/v1/signup/resend Doğrulama belirtecini döndürür ve yeni bir bağlantı postalar; hız sınırlıdır src/cluster_erp/server/routes/signup.py:192-202, src/cluster_erp/server/signup.py:415-441
POST /api/v1/signup/cancel queued veya failed durumundaki bir kaydı geri çeker; alan adını serbest bırakır src/cluster_erp/server/routes/signup.py:205-219, src/cluster_erp/server/signup.py:444-469

Bağlantı noktaları ve ayarlar

  • Ödeme: signup_payment_provider; koddaki tek sağlayıcı offline olur; onaylar ve signup_trial_days günlük bir deneme dönemi koyar (src/cluster_erp/server/signup.py:85-103, src/cluster_erp/server/signup.py:179-188).
  • Posta: signup_mail_transport, spool (signup_mail_spool_dir içinde bir JSON dosyası) veya signup_smtp_* ayarlarıyla smtp olur (src/cluster_erp/server/signup.py:105-176, src/cluster_erp/config/settings.py:283-289).
  • Doğrulama: signup_verify_email ve signup_verify_ttl_hours (src/cluster_erp/config/settings.py:277-279). Bağlantı belirtecini URL parça kısmında taşır (src/cluster_erp/server/signup.py:384-389).
  • Aydınlatma metni: signup_notice_dir signup_notice.<lang>.md dosyalarını tutar; signup_notice_version sürümü adlandırır (src/cluster_erp/server/signup.py:206-223, src/cluster_erp/config/settings.py:299-306).

Türler ve varsayılanlar ayarlar başvurusu sayfasındadır.

Neden böyle kurulmuştur

  • Sorgu tanıtıcısı anonim yüzeyin kabul ettiği tek anahtardır; böylece kayıt durumu kiracıları saymak için kullanılamaz (src/cluster_erp/server/signup.py:17-22).
  • Belirteçler gövdelerde ve parçalarda taşınır; böylece hiçbir erişim günlüğüne, tarayıcı geçmişine veya Referer başlığına ulaşmazlar; sayfa bir POST ile onaylar, böylece bir posta tarayıcısının GET isteği hiçbir şey değiştirmez (src/cluster_erp/server/routes/signup.py:8-15).
  • Belirteçler özet olarak saklanır; böylece tablonun bir kopyası yeniden oynatılamaz (src/cluster_erp/core/tenancy.py:233-238).
  • İddia edilen alan adındaki bir bağlantıyla doğrulama, başka bir şirketin alan adını ilk gelenin kapmasını durdurur (src/cluster_erp/core/tenancy.py:240-243).
  • Hız sınırı kontrol veritabanında sayılır; böylece tüm işçiler ve düğümler bir istemciyi birlikte sayar (src/cluster_erp/server/routes/signup.py:41-44).

Kurallar ve sınırlar

  • Kurucu yeni kiracının tek yöneticisi olur: kurulum bootstrap_admin_exclusive ile çalışır ve önce tohumlanmış varsayılan hesapları pasifleştirir (src/cluster_erp/config/settings.py:253-258, src/cluster_erp/server/app.py:882-890).
  • Başarısız bir kurulum hatası anonim sorgulayana asla gösterilmez (src/cluster_erp/server/signup.py:564-568).
  • Testler: tests/test_signup_closed.py (4), tests/test_signup_notice.py (4), tests/test_signup_tokens.py (3), tests/test_signup_validation.py (5), grep -c "def test_" ile sayıldı; uçtan uca web-client/_e2e_tenant_signup.mjs.

Diğer parçalarla etkileşim

Sınırlar ve açık noktalar

  • Canlı bir ödeme sağlayıcısı kodda yoktur; payment_port_for offline dışındaki her sağlayıcıyı reddeder (src/cluster_erp/server/signup.py:179-188).
  • Terk edilmiş kayıtların saklanması kontrol düzlemi saklama geçişinde çalışır; kuralları zamanlanmış işler ve saklama sayfasındadır.

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
signup token signup_token Kaydı yapanın sorgulamak, yeniden göndermek veya iptal etmek için kullandığı yetki tanıtıcısı. kayıt belirteci src/cluster_erp/core/tenancy.py:239
verify token verify_token Postalanan bağlantıdaki, iddia edilen alan adının denetimini kanıtlayan yetki. doğrulama belirteci src/cluster_erp/core/tenancy.py:244
provisioning state provision_state Bir kaydın kiracı veritabanının yaratılmasının ne kadar ilerlediği. kurulum durumu src/cluster_erp/core/tenancy.py:257
payment port PaymentPort Bir ödeme sağlayıcısının kayıt ödemesini aldığı arayüz. ödeme bağlantı noktası src/cluster_erp/server/signup.py:85

İlgili sayfalar


92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.

Doğrulanan commit 92f8051 · 2026-11-13