Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / İş modülleri

Modül

Auth modülü (auth)

Kullanıcıları, rolleri, izinleri, ABAC politikalarını, onay zincirlerini, bildirim kurallarını, belirteç iptalini ve kullanıcı başına arayüz durumunu tutan auth modülünün sayfası.

src/cluster_erp/modules/auth/ içindeki auth modülü kullanıcıları içeri alır ve ne yapabileceklerine karar verir. Kullanıcıları, rolleri, izin kodlarını, öznitelik politikalarını, onay zincirlerini ve taleplerini, bildirim kurallarını, iptal edilmiş belirteçleri ve her kullanıcının kendi arayüz durumunu yönetir. Ekranlarını yöneticiler kullanır; diğer her modül onu modules/auth/guards.py ve EventBus üzerinden kullanır. Mekanizmalar kimlik ve erişim bölümünün sayfalarında açıklanır; bu sayfa modül özetidir.

Bir bakışta

Öğe Değer Kaynak
Paket src/cluster_erp/modules/auth/ klasör
Modül sınıfı Module src/cluster_erp/modules/auth/module.py:15
name / version auth / 0.1.0 src/cluster_erp/modules/auth/module.py:16-22
API öneki /api/v1/auth (ModuleBase.api_prefix) src/cluster_erp/core/module_base.py:37-38
Alt modüller 10: approval_chains, approvals, login, notification_rules, permissions, policies, roles, token_blacklist, ui_state, users klasör listesi
Tablolar 14 (__tablename__ sayısı), artı modelsiz olarak auth05 göçüyle yaratılan auth_login_budget paket üzerinde grep, migrations/versions/auth05_login_budget.py:33
Metadata'daki varlıklar 6: user, role, abac_policy, approval_chain, approval_step, notification_rule src/cluster_erp/modules/auth/module.py:281-288
Web uygulamasında yeri Katalogdaki settings sistem uygulamasının kapsamında src/cluster_erp/modules/app_store/catalog.json (settings girdisi)
Masaüstünde yeri Yalnızca genel bileşenler; src/cluster_erp/desktop/modules/ içinde klasör yok klasör

Modül ne yapar

Alt modüller

Alt modül Amaç Ana varlıklar Yönlendirici Kaynak
login Giriş, yenileme, çıkış, geçerli kullanıcı yok /api/v1/auth src/cluster_erp/modules/auth/login/routes.py:51
users Kullanıcı hesapları, parola değiştirme ve sıfırlama AuthUser, AuthUserRole /api/v1/auth/users src/cluster_erp/modules/auth/users/routes.py:23
roles Roller ve izinleri AuthRole, AuthRolePermission /api/v1/auth/roles src/cluster_erp/modules/auth/roles/routes.py:20
permissions İzin kataloğunu okuma AuthPermission /api/v1/auth/permissions src/cluster_erp/modules/auth/permissions/routes.py:11
policies ABAC politikaları AuthAbacPolicy /api/v1/auth/policies src/cluster_erp/modules/auth/policies/routes.py:15
approval_chains Zincirler ve adımlar AuthApprovalChain, AuthApprovalStep /api/v1/auth/approval-chains, /api/v1/auth/approval-steps src/cluster_erp/modules/auth/approval_chains/routes.py:20-24
approvals Talepler, kararlar, erteleme AuthApprovalRequest, AuthApprovalDecision, AuthApprovalSnooze /api/v1/auth/approvals src/cluster_erp/modules/auth/approvals/routes.py:22
notification_rules Bildirim kuralı kayıtları NotificationRule /api/v1/auth/notification-rules src/cluster_erp/modules/auth/notification_rules/routes.py:21
token_blacklist İptal edilmiş belirteç kimlikleri TokenBlacklist yok src/cluster_erp/modules/auth/token_blacklist/models.py:11
ui_state Kullanıcı başına arayüz durumu UserUiState /api/v1/auth/ui-state src/cluster_erp/modules/auth/ui_state/routes.py:13-39

Tüm yönlendiriciler tek bir modül yönlendiricisi altında toplanır (src/cluster_erp/modules/auth/module.py:32-70).

Veri modeli

Varlık Tablo Anahtar alanlar Notlar Kaynak
AuthUser auth_users username, email, password_hash, is_active, failed_login_count, locked_until, last_logout_at, employee_id kullanıcı adı ve e-posta canlı satırlar arasında benzersiz src/cluster_erp/modules/auth/users/models.py:17-91
AuthUserRole auth_user_roles user_id, role_id canlı satırlar arasında benzersiz çift src/cluster_erp/modules/auth/users/models.py:94-123
AuthRole auth_roles code, name, is_system, is_active kod canlı satırlar arasında benzersiz src/cluster_erp/modules/auth/roles/models.py:17-65
AuthRolePermission auth_role_permissions role_id, permission_id canlı satırlar arasında benzersiz çift src/cluster_erp/modules/auth/roles/models.py:68-97
AuthPermission auth_permissions code, resource, action, module kod canlı satırlar arasında benzersiz src/cluster_erp/modules/auth/permissions/models.py:15-55
AuthAbacPolicy auth_abac_policies code, permission_code, condition, is_active condition JSONB'dir src/cluster_erp/modules/auth/policies/models.py:12-55
AuthApprovalChain auth_approval_chains code, resource, action, is_active src/cluster_erp/modules/auth/approval_chains/models.py:13-61
AuthApprovalStep auth_approval_steps chain_id, step_order, role_code zincir başına benzersiz step_order src/cluster_erp/modules/auth/approval_chains/models.py:64-106
AuthApprovalRequest auth_approval_requests chain_id, entity_type, entity_id, current_step, status, requested_by src/cluster_erp/modules/auth/approvals/models.py:26-74
AuthApprovalDecision auth_approval_decisions request_id, step_id, decided_by, decision src/cluster_erp/modules/auth/approvals/models.py:77-112
AuthApprovalSnooze auth_approval_snoozes request_id, user_id, until talep ve kullanıcı başına tek canlı satır src/cluster_erp/modules/auth/approvals/models.py:115-156
NotificationRule platform_notification_rules event_type, recipient_type, channel, template_key src/cluster_erp/modules/auth/notification_rules/models.py:9-44
TokenBlacklist auth_token_blacklist token_jti, expires_at token_jti benzersiz src/cluster_erp/modules/auth/token_blacklist/models.py:11-23
UserUiState auth_user_ui_state user_id, key, value kullanıcı ve anahtar başına tek canlı satır src/cluster_erp/modules/auth/ui_state/models.py:13-35

Her varlık BaseModel sınıfından türer; bu yüzden satırlar yumuşak silinir; bkz. yumuşak silme ve kullanımdan kaldırma.

Ekranlar ve metadata

get_metadata, İngilizcede Authorization, Türkçede Yetkilendirme adlı tek bir kenar çubuğu grubu bildirir; üç bölümü vardır: Kullanıcılar (user listesi), Roller (role listesi) ve abac_policy, approval_chain ve notification_rule sekmeli Ayarlar (src/cluster_erp/modules/auth/module.py:236-280). Etiketler dil dosyalarından değil metadata'dan gelir. Onaylayan gelen kutusu Onaylarım (webapp/i18n/tr.json anahtarı approvals.inbox_title) web uygulamasının bir ana ekran bileşenidir; bkz. ana ekran bileşenleri.

Durumlar ve aksiyonlar

Auth metadata'sı hiçbir ActionMeta bildirmez; modules/auth içinde ActionMeta( için grep hiçbir şey bulmaz. Onay talepleri durumlarını kendi uçlarıyla değiştirir; bkz. onaylar ve onay zincirleri.

Aksiyon Etiket Koşul Uç İzin Kaynak
decide Onayla veya Reddet (approvals.approve, approvals.reject) talep pending, çağıran adım rolünü taşır POST /api/v1/auth/approvals/{request_id}/decide adım rolü, serviste denetlenir src/cluster_erp/modules/auth/approvals/routes.py:90-131
defer Ertele (approvals.defer) talep pending, çağıran uygun POST /api/v1/auth/approvals/{request_id}/defer adım rolü, serviste denetlenir src/cluster_erp/modules/auth/approvals/routes.py:134-154
cancel metadata'da yok talep pending, çağıran talep eden veya yönetici POST /api/v1/auth/approvals/{request_id}/cancel serviste denetlenir src/cluster_erp/modules/auth/approvals/routes.py:171-186

İş kuralları

  • Bir sistem rolü silinemez (src/cluster_erp/modules/auth/roles/routes.py:104-105, src/cluster_erp/modules/auth/roles/services.py:72-80).
  • Rol ve izin vermeleri yetki tavanına uyar (src/cluster_erp/modules/auth/users/services.py:205-221, src/cluster_erp/modules/auth/roles/services.py:139-163).
  • Alınmış bir kullanıcı adıyla kullanıcı yaratmak çakışma yanıtı verir (src/cluster_erp/modules/auth/users/routes.py:104-106).
  • İlk yönetici yalnızca boş bir veritabanında yaratılır (src/cluster_erp/modules/auth/users/services.py:412-453).
  • Değiştirilen bir parola önceki tüm oturumları bitirir (src/cluster_erp/modules/auth/users/services.py:273-276).

Olaylar ve sorgular

Yön Sözleşme sınıfı İşleyici veya yayan Kaynak
sorguyu yanıtlar GetUserById _handle_get_user src/cluster_erp/modules/auth/module.py:81, src/cluster_erp/modules/auth/module.py:110-128
sorguyu yanıtlar GetUserPermissions _handle_get_permissions src/cluster_erp/modules/auth/module.py:82, src/cluster_erp/modules/auth/module.py:130-144
sorguyu yanıtlar GetApprovalChainForAction _handle_get_approval_chain src/cluster_erp/modules/auth/module.py:83-86
sorguyu yanıtlar SubmitForApproval _handle_submit_for_approval src/cluster_erp/modules/auth/module.py:87
sorguyu yanıtlar GetApprovalRequestById _handle_get_approval_request src/cluster_erp/modules/auth/module.py:88-91
yayar ApprovalCompleted decide_approval src/cluster_erp/modules/auth/approvals/routes.py:116-127
abone olur CollectSubjectData collect_subject_data src/cluster_erp/modules/auth/module.py:101-104
abone olur AnonymiseSubject anonymise_subject src/cluster_erp/modules/auth/module.py:105-108

Yetkiler

İzin anahtarı Kullanan Kaynak
user.read, user.create, user.update, user.delete, user.reset_password kullanıcı uçları src/cluster_erp/modules/auth/users/routes.py:59-194
role.read, role.create, role.update, role.delete rol uçları src/cluster_erp/modules/auth/roles/routes.py:42-119
permission.read, permission.assign katalog, izin verme, onay okumaları ve talep yaratma src/cluster_erp/modules/auth/permissions/routes.py:18, src/cluster_erp/modules/auth/roles/routes.py:122-150, src/cluster_erp/modules/auth/approvals/routes.py:27-80
abac_policy.read, abac_policy.create, abac_policy.update, abac_policy.delete politika uçları src/cluster_erp/modules/auth/policies/routes.py:18-87
approval_chain.read, approval_chain.create, approval_chain.update, approval_chain.delete zincir ve adım uçları src/cluster_erp/modules/auth/approval_chains/routes.py:32-181
notification_rule.read, notification_rule.create, notification_rule.update, notification_rule.delete bildirim kuralı uçları src/cluster_erp/modules/auth/notification_rules/routes.py:24-93

user.reset_password bir CRUD kodu değildir; ek tohum listesindedir (src/cluster_erp/server/app.py:675). admin rolü tohumlanan her kodu alır (src/cluster_erp/modules/auth/roles/services.py:213-276).

Gizlilik, saklama ve geçmiş

privacy_handlers.py giriş hesabını (kullanıcı adı, e-posta, adlar, etkinlik bayrağı, rol kodları, giriş ve çıkış zamanları, yaratılma zamanı) döndürür; silmede tanımlayıcı sütunların üzerine yazar, hesabı pasifleştirir ve last_logout_at damgasını basar (src/cluster_erp/modules/auth/privacy_handlers.py:1-104). Parola özeti asla dışa aktarılmaz ve değişiklik geçmişinde gizlenir (src/cluster_erp/modules/auth/privacy_handlers.py:7-8). Süresi dolmuş kara liste satırlarını günlük kayıt saklama siler (src/cluster_erp/server/app.py:1168-1192). auth_token_blacklist değişiklik geçmişinin dışında tutulur; bkz. değişiklik geçmişi.

Analitik olguları

Bu modülün analytics_facts.py dosyası yoktur.

Ayarlar ve başvuru verileri

Modülün kullandığı ayarlar: secret_key, jwt_access_expire_minutes, jwt_refresh_expire_days, jwt_session_hours, jwt_refresh_reuse_grace_seconds, login_rate_limit_per_minute, auth_cache_seconds, abac_strict_permission_codes ve bootstrap_admin_* ayarları (src/cluster_erp/config/settings.py:186-205, src/cluster_erp/config/settings.py:307-339). Bkz. ayarlar başvurusu. İzin kodları her açılışta tohumlanır (src/cluster_erp/server/app.py:634-948). password_min_length ayarı tanımlıdır (src/cluster_erp/config/settings.py:327), ama bu commit'te hiçbir kod onu okumaz (git grep password_min_length).

Testler

Dosya adıyla, tests/ içinde modules.auth içe aktarma aramasıyla ve web-client/ içinde adla bulundu.

Tür Dosya Kapsam
pytest tests/test_abac_evaluator.py işleçler, öznitelikler, koşul mantığı
pytest tests/test_abac_enforcement.py check_abac ve enforce_abac
pytest tests/test_abac_policy_condition.py politika koşulu kurucusu
pytest tests/test_admin_bootstrap.py ilk açılış yönetici bekçisi
pytest tests/test_auth_cache_stamp.py işçiler arası bellek geçersizleştirme
pytest tests/test_login_identifier.py giriş tanımlayıcısı çözümleme
pytest tests/test_login_budget_live.py ortak hata bütçesi (canlı sunucu)
pytest tests/test_authz_conformance.py katmanlı yetkilendirme modeli
e2e web-client/_e2e_auth_panels.mjs auth ekranları
e2e web-client/_e2e_approvals.mjs, web-client/_e2e_approval_role.mjs, web-client/_e2e_approvals_integrity.mjs, web-client/_e2e_approvals_widget.mjs onay akışı ve gelen kutusu
e2e web-client/_e2e_login_rate_limit.mjs, web-client/_e2e_session_remember.mjs giriş sınırları ve oturum uzunluğu
e2e web-client/_e2e_ui_states.mjs kullanıcı başına arayüz durumu

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
user AuthUser Bir kiracıdaki bir kişinin giriş hesabı. Kullanıcı (webapp/i18n/tr.json anahtarı resource.user) src/cluster_erp/modules/auth/users/models.py:17
user UI state UserUiState Bir kullanıcının kısa bir adla anahtarlanmış saklı arayüz tercihi. kullanıcı arayüz durumu src/cluster_erp/modules/auth/ui_state/models.py:13

İlgili sayfalar


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

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