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_tenantaçıkken bağlanır; aksi hâldeGET /api/v1/signup/{"signup": "closed"}yanıtını verir (src/cluster_erp/server/app.py:1440-1457). signup_enabledayarı çok kiracılı bir düğümde kapıyı kapatır: yoklama kapalı yanıtını verir ve yaratmaSIGNUP_CLOSEDile reddedilir (src/cluster_erp/server/routes/signup.py:129-133,src/cluster_erp/server/signup.py:226-234).- Bir kayıt,
signup_notice_dirvesignup_notice_versionayarları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_emailaçı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_domainDüz anlatımla:
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).POST /api/v1/signup/,control_rate_limitsiçinde sayılan, istemci başına saatliksignup_rate_limit_per_hoursınırını uygular (src/cluster_erp/server/routes/signup.py:63-85,src/cluster_erp/server/routes/signup.py:146-149).start_signupkapı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).- Alan adından bir kiracı anahtarı türetir, bölgeyi denetler, kiracıyı
provisioningdurumuyla kaydeder veactivedurumlu,queuedkurulum durumlu, aydınlatma metni sürümünü ve kabul zamanını taşıyan birMembershipsaklar (src/cluster_erp/server/signup.py:312-353). - 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). POST /api/v1/signup/verifyverified_atdamgası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)._provision_in_backgrounddurumu öncerunning, sonrareadyyapar ve bekleyen özeti siler; hata olursafailedyapar ve ayrıntıyı yalnızca operatör için günlüğe yazar (src/cluster_erp/server/signup.py:534-568).POST /api/v1/signup/statusbir 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ıofflineolur; onaylar vesignup_trial_daysgü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_diriçinde bir JSON dosyası) veyasignup_smtp_*ayarlarıylasmtpolur (src/cluster_erp/server/signup.py:105-176,src/cluster_erp/config/settings.py:283-289). - Doğrulama:
signup_verify_emailvesignup_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_dirsignup_notice.<lang>.mddosyalarını tutar;signup_notice_versionsü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
Refererbaş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_exclusiveile ç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 ucaweb-client/_e2e_tenant_signup.mjs.
Diğer parçalarla etkileşim¶
- Çok kiracılılık: kiracılar, üyelikler ve kayıt defteri.
- Kiracı yaşam döngüsü: kaydın çağırdığı
provisionkomutu. - Operatör konsolu: kayıt kuyruğu görünümü.
Sınırlar ve açık noktalar¶
- Canlı bir ödeme sağlayıcısı kodda yoktur;
payment_port_forofflinedışı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ı.