Jump to content
KAMOUniverse

Changelog

Ada kabar baru.

Setiap perbaikan pada platform, sebagai kapal.

  1. · VOIPService

    Reaktor penyedia multi- instance + penuh FreePBX + Flowroute SMS

    Perubahan model inti: satu org plug banyak VoipProviderInstances (adalah: satu per org). Setiap operator API panggilan sekarang instance- scoped. Antar muka PhoneProvider: - Metode baru untuk ekstensi / user / device CRUD + voicemail audio / transkripsi. - Flag kapabilitas baru (extensionManagement, management, deviceManagement, voicemail transcription). Default throw * * * * * * * * * * * * * * * * (HTTP 501) sehingga penyedia stub tidak istirahat. Frontend cek getCapbilities () untuk menyembunyikan / menonaktifkan aksi per penyedia. - ProviderException (HTTP 502) untuk kegagalan ketergantungan eksternal. PhoneProviderFactory: - getInstance (UUID) / * * * * * * * * * * * * * * * * ganti warisan getProvider (Long orgId); getPrimaryForOrg (Long) terus untuk situs panggilan warisan (CallController, CasabilesController, SipController, webhook inbound). - Token OAuth RingCentral sekarang diskoped oleh (orgId, provider, instanceId) jadi satu org dapat mengothentifikasi multiple deplashment RingCentral independen. Konstruksi FreePBX dibaca config _ json... abaikan SsslErrors} dan instantates sebuah FreePXGraphQLClient yang didedikasikan. RingCentral (RingCentralprovider): - Konstruktor mengambil instanceId untuk konteks log. - Metode baru: listExtensions / createExtension / updateExtension / deleteExtension; listUsers / createUser / updateUser / deleteUser (model RC baik sebagai tipe = Ekstensi pengguna); listDevice / createDevice / updateDevice / delete Device; fetchVoiceAudio (stream lampiran isi) dan fetchVoiceTranscription. FreePBX (FreePBXProvider) - implementasi penuh menggantikan placeholder: - Klien - kredensial OAG2 token caching melalui FreePBXTokenCache (~ 1h TTL, auto- segarkan pada 401, per- instance). - FreePBXGraphQLClient: GraphQL + REST transport dengan opsional skip- SSL- verifikasi untuk self-signed on-prem PBXes. - Ekstensi, pengguna Manajer Pengguna, perangkat Manajer Endpoint, pesan suara daftar / mark-read / delete + audio stream, CDR riwayat panggilan, kredensial SIP berasal dari rahasia pjsip ekstensi, kesehatan melalui fetchAsteriskInfo. - SMS secara eksplisit tidak didukung (kapabilitas = false) - FreePBX tidak menangani Pembawa SMS. Flowroute SMS (FlowrouteTextProvider): - Pesan v2.1 API dengan dasar HTTP (kunci akses, secretKey). - Probe Kesehatan memukul GET / nomor? batasi = 1. - Terdaftar dengan BulkTextProviderFactory melalui nilai FLOWROUTE baru. Pengontrol: - VoipInstanceController (berganti nama dari ProviderConfigcontroller) - full CRUD at / api / voip / instance dengan perstance test / sync. Rahasia dihapus dalam GET tanggapan ('* * *'); merge- update memungkinkan UI round-trip field diected tanpa clobbering mandat disimpan. - BulkTextInstanceController (berganti nama dari BulkTextConfigController) - cermin CRUD di / api / bulktext / misalnya dengan tes / test- kirim / kirim. - OauthorController ditulis ulang untuk instance- scoped OAuth: mulai, callback, status, putuskan semua instanceId. - SmController menyelesaikan contoh dari anggota. instanceId plugorg primary, attaches untuk mendengarkan percakapan. - CallController / CapabylesController / SipController kembali ke org 's instansi aktif primer untuk titik akhir instansi tunggal-instance. Layanan: - InstanceSyncService: tarik melalui cache sync - ekstensi / users / devices / pesan suara disalin dari penyedia ke tabel lokal, baris hilang dengan lembut ditandai TIDAK DIKENAL. Setiap sub- langkah dibungkus sehingga satu kemampuan tidak didukung tidak gagal seluruh sinkronisasi (mis. FreePBX no- SMS + has-ekstensi). - VoipMesgageService: semua percakapan / jalur pesan menyebarkan instanceId. Tes: tes pra- ada VoipProviderConfig- tes spesifik dihapus (tertutup ganti nama tipe; menulis ulang diluar lingkup per spesifikasi desain lewat 10 - tidak ada TDD infrastruktur sedang ditambahkan dalam refactor ini). Membangun hijau dengan kamo- shared terbaru - perpustakaan.

  2. · InitializerService

    Migrasi penyedia telepon / SMS multiinstance

    Runs after Hibernate ddl-auto: update create new tables (VOIP _ PROVIDER _ INSTANCE, BULK _ TEXT _ PROVIDER _ INSTANCE, PHONE _ EXTENSI, PHONE _ END _ USER, PHONE _ DEVICE, PHONE _ VOICEMAIL, SISTEM _ KONFIGURASI) dari entities baru yang diubah namanya / entities dalam kamo- shared-library commit 232d731. Handles apa Hibernasi tidak bisa: - Salin baris dari voip _ provider _ config / massive _ text _ provider _ config kedalam tabel * _ instance baru, mensintesis instance _ name dari tipe penyedia. - Drop baris NOT _ CONFIGURED (ordinal 0) - absen sekarang adalah keadaan "no provider". - Jatuhkan warisan sekarang kosong * _ config tabel. - Backfill instance _ id pada anggota _ voip _ config, voip _ conversations, dan kamerokens.org _ oauth _ token menggunakan setiap org 's instansi aktif tertua. - Bangun ulang org _ oauth _ token unik indeks dari (org _ id, penyedia) ke (org _ id, provider, instance _ id) sehingga beberapa instruksi RingCentral per org bekerja. - Buang indeks unik yatim dari voip _ conversations + provider instance tables. - Benih sistem _ konfigurasi singleton baris (interval sinkronisasi voip 10min baku, diaktifkan true) - operator platform konfigurasi ini melalui konfigurasi platform baru VoIP & SMS tab. Semua pernyataan idempoten; kembali berjalan di already-migrasi DB aman. Pesan 20 - setelah Skema CleanupRunner (1), Organisasi TypeRemovalner (2), KamoCRMAgeReqUpdateRunner (10).

  3. · kamo-shared-library

    Pondasi skema penyedia telepon / SMS multiinstance

    - Ubah nama VoipProviderConfig GNU VoipProviderInstance; drop UNIQUE (org _ id), add instance _ name, config _ json, last _ sync _ at, last _ sync _ error. - Ubah nama BulkTextProviderConfig .org BulkTextProviderInstance; pengobatan multi- instance yang sama. - Entitas baru: PhoneExtension, PhoneEndUser, PhoneDevice, PhoneVoicemail, SystemConfigure. - Tambahkan instance _ id ke MemberVoipConfig, VoipConversation, OrganOAutToken (beberapa instansi RingCentral per org). - New enums: PhoneExtensionStatus, PhoneEndUserStatus, PhoneDeviceType, PhoneDeviceRegistrationStatus. - Deprecate NOT _ CONFIGURED dalam * * * * * * * * * * * * * * * (disimpan di ordinal 0 untuk melestarikan baris yang ada di bawah EnumType.ORDINAL). - Tambahkan FLOWROUTE ke BulkTextProviderType untuk penyedia SMS Flowroute baru. - Provider-abstraksi DTOs (ExtensionDto, PhoneUserDto, DeviceDto, Voicemail EntryDto, InstanceHealthDto, Buat permintaan / Update). Fase pertama dari multi- instance phone / SMS refactor - lihat * * * * * * * * * * * (dalam kamo-login repo). Pengubah layanan migrasi dan migralisalizer KamiInisialanuntuk diikuti.

  4. · KlusterServices

    Sebarkan jembatan FreePBX 17 + Jigasi SIP pada k1m1 dan k2m1

    FreePBX (melelahkan / freebbx: 17- terbaru) dijalankan dengan jaringan host sehingga SIP / RTP mempertahankan IP klien nyata, disematkan satu - per- nodeSelektor. SIP pada 5060 UDP / TCP (5061 TLS), jangkauan RTP 18000- 18999 dipilih untuk menghindari Janus (20000- 20999), Coturn (52000- 65535), dan WireGuard (51820- 51821). Temui Jidasi ditambahkan sebagai sebuah jembatan internal ClusterIP SIP sehingga FreePBX dapat panggilan bagasi ke Pertemuan Meet; Prosody sekarang ketentuan pengguna jigasi dari JIterketi _ XMPP _ PASSWORD. Admin UI terjangkau melalui Traefik di pbx.k1.kluster.kamocrm.com / pbx.k2.kluster.kamocrm.com dengan certs Dihias melalui STATIC _ DOMAINS otomatis.

  5. · kamo-internal

    Platform -admin tampilan, pagination, pencarian langsung, filter, org logo

    Admin platform (pemilik org tingkat atas) sekarang lihat setiap org dalam sistem melalui new / api / security / org / all- jaringan titik akhir daripada keanggotaan mereka sendiri. Judul tajuk dan pembaruan subjudul untuk mencerminkan konteks admin. Tambahan lainnya: - Paginasi: sisi klien, standar 25 / halaman, dapat diatur (10 / 25 / 50 / 100) - Pencarian langsung: penyaring berdasarkan judul, judul pendek, atau domain secara real time - Filter chips: "All", "Orgs I Own", "DNS Not Net Configured" - Jumlah hasil ditampilkan di samping pemilih-ukuran - Nomor tombol halaman dengan elips runtuh untuk jumlah halaman besar - Komponen Organ Logo konsolidasikan logo render (logo pendek via getOrganable LogoUrl) untuk kedua kartu tracet-org dan semua kartu org dalam daftar - ENTER tombol benar dijaga oleh org.memberId (berbagi catatan anggota pengguna +) - ENTER AS SISTEM MEMBER tersedia untuk semua orgs ketika canEnterAsSystemMMber

  6. · SecurityService

    Tambahkan GET / api / keamanan / org / all- jaringan untuk platform admin

    Pemilik org level atas kini dapat mengambil semua organisasi dalam sistem dengan info keanggotaan relatif terhadap penelepon. Orgs mana penelepon memiliki anggota record get isowner / memberId population; others get memberId: null, is owner: false. Endpoint memaksa pemanggil keduanya berada di level atas org dan merupakan pemilik.

  7. · kamo-internal

    Sub-tab dalam penyunting sekuriity- model + pembersihan

    - Editor model Security- pada * * * * * * * * * * * * * * * * sekarang terpecah dalam empat sub- tab: Umum (Info Dasar, Visibilitas, Who Can Create, Pengaturan Platform, Domain Config, Pasar Perdagangan), Penyensoran (alkohol / tembakau / senjata api + anggota + tim-anggota usia berkisar), Diizinkan Apps, dan Bawaan Keamanan Roles. - Baru... memungkinkan sebuah admin menyunting model allowRootSubdomains flag dan orang tua alias bersama sisanya Model pengaturan. Sebelumnya ini hidup di dalam Subdomain org-wide Branches popup. - Subdomain Branches popup disederhanakan ke org- level bit saja - Kredensial GoDaddy + master memungkinkan toggle. Alias per- model pindah dari kedua dialog dan prop permukaan; SecurityRoleManager menjatuhkan Sekarang juga. - Hapus setiap referensi ke tim MenmberPayFeesSetting / PayFeesSetting / TriStateFeeOption - "Employee Self - Pay Kamo Fees" pilih pada model editor dan chip di tabel model hilang, bersama dengan tipe alias dalam useAppliedModel. - / settings / platform / event dan / settings / platform / plans page adalah terhapus (mereka placeholder dari permukaan penagihan sudah ditinggalkan). Halaman pendaratan, Daftar sub-topik StatusStatusWindow, dan route / icon memetakan semua masukan yang cocok. - Manage Group sub- tab pada * * * * * * * * * * * * * * sekarang menampilkan judul Grup Baku sebagai ruas baca-saja dinonaktifkan (was Sebelumnya tersembunyi sepenuhnya di belakang waspada info) sehingga admins dapat melihat nama grup sementara pemahaman itu tidak dapat diubah.

  8. · kamo-internal

    Tombol visibility UI + Subdomain Branches di halaman tipe branch

    SubdomainBranchesDialog: - Editor Alias menggantikan daftar chip dengan daftar baris gaya table yang ditampilkan Anggota dan Anggota Tim checkboxes per alias - kontrol admin yang tipe pencipta lihat setiap induk alias dalam / jaringan / buat - Di UpdateModelSubdomainConfig diperbarui untuk melewatkan objek alias penuh (alias, visibleToMembers, visibleToTeamMembers) daripada polos string SecurityRoleManager: - Full SecurityModel state + loadFullSeccurityModels alias peta dengan * * * * * * * * * * * * * * * tanda - persist ModelSubdomainConfig melewati penuh alias objek ke backend BranchSetupManager * * * * * * * * * * * * * * * - Ditambahkan tombol Branch Subdomain (security- halaman peran) dengan SubdomainBranchesDialog yang sama, status- mengambil di mount, dan model reload ketika dialog dibuka

  9. · SecurityService

    Alias visibility filtering + auto-verify kepemilikan subdomain

    Kontroller Organisasi: - Web-alias org penciptaan sekarang auto- marks ownershiffied = true dan isdisVerified = true on the created Organizain - no TXT record needed since Kami mengatur DNS pada GoDaddy atas nama mereka - Path CUSTOM parentAliasType sekarang memaksa per- alias kenampakan creator- tipe (penyaring cermin / krim sehingga backend tidak dapat dilewati) BranchTypeController / creatble: - Daftar parenAlias sekarang disaring oleh creatorType pemanggil: MINGERS hanya melihat visibleToMembers = alias sejati, TEAM _ MEMBERS hanya melihat visibleToTeamMember = alias benar, OWNERS melihat semua - Setiap alias DTO sekarang termasuk bendera visibleToMembers + visibleToTeamParts SecurityModelController: - processSubdomainBranchConfig sekarang membaca * * * * * * * * * * * * * * * dari berkas peta alias dan panggilan diganti AllFull untuk mempertahankannya

  10. · kamo-shared-library

    Tambah tanda kenampakan per- alias creator- tipe

    Tambahkan kolom visibleToMembers / visibleToTeamMembers boolean ke ChildOrvors SecurityModelAlias sehingga admins dapat membatasi alias induk yang mana muncul pada anggota tim saat membuat organ anak. - Entitas: dua @ Builder. Kolom benar baku dengan BOOL DEFAULT TRUE - SubdomainAliasDTO: mengekspos kedua bendera dalam Entity - * * * * * * * * * * * * * * * rekor AliasEntry baru + pengganti AllFull overload yang tetap visibility dan diganti (string) delegasi ke dalamnya

  11. · kamo-internal

    Dialog pengaturan, path wizard web-alias, dan panel provisioning DNS

    Tambahkan Subdomain Branches UI di tiga permukaan: - * * * * * * * * * * * * * * * * * * * * baru tombol "Subdomain Branches" membuka dialog untuk level org-aktifkan pengubahan + GoDaddy creds, dengan editor per- security- model untuk allowRootSubdomains + induk alias (reuses wizard is ValidAlias / to SafeAlias helps) - / jaringan / buat: BasicsStep sekarang percabangan diantara bring- your--own-domain path dan path web-alias Kamo (gated on the induknya org 's enable flag, Status GoDaddy, dan alias jenis cabang terpilih). Alias Induk daftar dropdown ROOT (ketika diijinkan) plus per- model alias; bantuan langsung pratilik pemutakhiran sebagai pengguna berubah baik field - / setup / dns: baru DnsProvisioning Jajak pendapat dari log pengelolaan org dan surface per- record status GoDaddy dengan aksi coba-gagal Backed by Next.js BFF proxy routes under * * * * * * * * * * * * *

  12. · SecurityService

    Konfig tingkat organis, klien GoDaddy, dan web-alias org membuat path

    Cetak fitur Subdomain Branches akhir-ke-akhir pada backend: - SubdomainBranchesController untuk tingkat org- enable + GoDaddy creds (live- verified) - GoDadddyDnsClient melakukan pemeriksaan idempotent CNAME - DnsProvisioning Layanan async-queues standar KnownAliseas subset dan menulis baris per record ke Organ DnsProvisionLog - SecurityModelController membawa allowRootSubdomains + alias [] on buat / perbarui - * * * * * * * * * * * * * menerima jalur web alias (UseWebAlias + parentAliasType + parentAliasId + webAlias), komputer menghasilkan FQDN di bawah zona akar induk, dan kicks off provisioning DNS setelah transaksional org membuat komplit - BranchTypeController 's / creatable titik akhir mengekspos alias permodel dan induk -org subdomain- cabang status sehingga wizard dapat gerbang UI

  13. · kamo-shared-library

    Tambah entitas, cipher, dan alias / DNS log scaffolding

    Tambahkan creds per-org GoDaddy (AES-GCM dienkripsi), sebuah flag allowRootSubdomains dan kumpulan anak-org alias pada model keamanan, sebuah provisioning DNS audit log, dan secretCipher helper bersama digunakan oleh SecurityService untuk round-trip menyimpan kunci API tanpa pernah mengembalikannya ke frontend.

  14. · kamo-internal

    Prefix / suffix dropdowns, mailbox domain gate, status eksplisit

    - Nama prefiks dan akhiran sekarang dropdowns penduduk dari NamePrefixType / NameSuffixType katalog disampaikan oleh org- config titik akhir. Tampilkan singkatan + nama lengkap setiap opsi. - "Provision organisasi email kotak surat" sekarang dinonaktifkan kecuali domain email organisasi cocok dengan salah satu kotak surat yang diverifikasi org domain (ditarik dari GET / API / email / domain). Bersihkan pesan inline menjelaskan apakah itu dinonaktifkan karena hilang email, tidak diverifikasi domain dikonfigurasi, atau domain tidak cocok - dan nama aktual dikonfigurasi domain sehingga admin tahu apa yang harus digunakan. - Status keanggotaan tim tidak lagi default untuk PROSPECT; admin harus pilih sebuah keadaan lifecycle secara eksplisit atau mengirimkan diblokir. Ringkasan panel menunjukkan "belum diset" sampai sebuah status dipilih.

  15. · SecurityService

    Status tim eksplisit + nama prefiks / suffix katalog

    - GET * * * * * * * * * * * * * * now returns names Prefire and nameSuffix, sumber dari NamePrefixType dan NameSuffixType sehingga Tambahkan Anggota / Bentuk Anggota Tim Tambah tidak perlu kode hard- mereka. - POST / create- anggota tim-sekarang menolak permintaan yang hilang Tim Anggota Status (400). The silent PROSPECT fallback adalah hilang - penelepon harus memilih keadaan lifecycle secara eksplisit jadi tim anggota tidak pernah salah-tag secara baku.

  16. · kamo-internal

    Lebar penuh, tiga panel Tambahkan tata letak bentuk Anggota

    Membuat ulang bentuk pembuatan untuk memakai seluruh isi area 1100px-wide kolom berpusat. - 3- kolom layout responsif: daerah kiri lengket nav (md +), full- lebar formulir (selalu), panel ringkasan langsung di kanan (xl +). - Baris kolom sekarang skala ke lebar yang tersedia: daerah nama adalah 5 -up di md +, baris kontak + baris masuk ke 4-up di breakpoint xl. - Sticky bawah batang aksi bentangan lebar penuh dengan petunjuk status dan gradien CTA primer. - Bagian nav menggunakan scroll-spy untuk menyoroti daerah pengguna berada dalam dan mendukung click-to-scroll. - Gaya kartu polished - batas lembut, melayang halus, gradien bagian - ikon header. Kartu ringkasan panel baru mencerminkan bentuk data langsung (avatar inisial, nama, nama pengguna, email, peran, status chip) dan menampilkan sebuah siap-to-buat indikator sekali validasi lewat.

  17. · kamo-register

    Merge alias / surel / nama / telepon ke langkah "Profil saya" tunggal

    Gabungkan "My E-Mail & Alias" sebelumnya, "My Name", dan "Nomor Telepon" langkah menjadi satu "Profil saya" langkah untuk 13 + pendaftaran, dengan nama alias + e-mail + nama legal dibutuhkan dan nomor telepon opsional (diverifikasi via SMS ketika dimasukkan). Bawah-13 resimen sekarang melihat tunggal diganti nama "Pengguna saya Alias" langkah - tidak ada e-mail, nama hukum, atau telepon. - RegisterFlow: daftar langkah sederhana, validasi handleNext terpadu, Kasus RenderStepContent baru. Langkah profil secara internal scrolable sehingga tiga bagian cocok dalam viewport. - RegisterStatus memperoleh nilai "REGISTERED" untuk pelengkapan bawah-13 dimana tidak ada email untuk memverifikasi - mereka diarahkan langsung ke halaman login dengan? terdaftar = 1 daripada halaman e-verifikasi.

  18. · SecurityService

    Buat surel + nama legal opsional untuk penandatangan bawah-13

    Endpoint / api / keamanan / register sebelumnya ditolak permintaan apapun hilang email, nama depan, atau nama belakang. Yang membuat bawah-13 jalan Tidak mungkin. Akun-akun tersebut secara sah hanya memiliki sebuah kalimat alias + password + benih. Validasi kini memerlukan sandi alias + pada setiap path, dan perlakukan email + nama pertama + nama belakang sebagai all-or-nothing triple: supplying salah satu dari mereka membutuhkan ketiganya. Kiriman - email kirim dan ruas email respon sekarang menjaga pada apakah email sebenarnya disediakan, dan status respon adalah "REGISTERED" (vs yang ada "EMAIL _ VERIFIKASI _ REQUIRED") ketika tidak ada email yang dapat diverifikasi.

  19. · kamo-shared-library

    Tambahkan * * * * * * * * * * * * * * untuk enter-as pemeriksaan

  20. · kamo-internal

    Halaman Konfigurasi Pengguna Sistem + jaringan ENTER AS MEMBER SISTEM

    Tambahkan Administrasi Platform (Administrasi Platform) Konfigurasi, suatu parent- org- owner- saja halaman yang memberikan atau mencabut izin untuk meniru platform Sistem Pengguna oleh departemen, judul pekerjaan, atau anggota tim individu. Terdaftar di tiga lokasi navigasi (daftar tile halaman pengaturan, SettingStatusWindow route + sub- topik, dan halaman itu sendiri). Pemutakhiran / jaringan untuk memakai baru / api / keamanan / masuk sebagai titik akhir bagi tombol ENTER yang ada, sehingga domain tujuan menerima sebuah sesi dibangun dari anggota target org (memperbaiki bug dimana sumber Aksen / orgID org bocor ke sesi baru). Tambahkan ENTER AS Tombol SISTEM MEMBER di sebelah ENTER yang hanya menghasilkan setelah * * * * * * * * * * * * * * * Mengkonfirmasi si penelpon memenuhi syarat.

  21. · SecurityService

    Backfill, enter- sebagai flow, mutasi penjaga, config API

    Self--cure provisioning: SystemUserBackfilllService berjalan di setiap Boot SecurityService (dari DataLoader) untuk menambah kolom is _ system _ user dan sistem _ user _ access tabel jika hilang, pastikan sistem singleton Rekor pengguna telah ada, dan membuat suatu Administrator - peran Timber di setiap bukan -top-level org itu belum milik. Juga berjalan di createOrganization time so new orgs get a System User keanggotaan langsung daripada menunggu untuk restart berikutnya. Cross-org masukkan flow: mengganti lama / api / generate-otk hand-off (yang mana membocorkan sesi source-org pemanggil ke domain tujuan) dengan / api / keamanan / masuk. Titik akhir baru membangun sebuah * * * segar scoped ke target org sebenarnya anggota, jadi memberID / orgID / hak selalu cocok org sedang dimasukkan. Tambahkan sebuah ruas SUDO _ MEMBER _ ID ke sesi JSON jadi bahwa peniruan Sistem Pengguna membawa anggota operator manusia untuk audit atdects. Penjaga: SystemUserGuard menolak mutasi API- yang didorong ke Sistem Catatan pengguna atau salah satu keanggotaannya (kabel ke MenmberController, Anggota SecurityController, * * * * * * * * * * * * * * * * * Menyembunyikan Pengguna Sistem dari GetMegas dan Subscriber, mendapatkan Anggota Tim dan Kontraktor, dan mendapatkan Anggota ByDepartment titik akhir sehingga penyewa tidak pernah melihatnya dalam daftar. Config permukaan: SystemUserConfigController mengekspos CRUD atas hibah tabel untuk top-level-org pemilik saja, dan SystemUserUserCapabilitler mengembalikan suatu halaman boolean / jaringan yang dipakai untuk memutuskan apakah akan membuat ENTER AS SISTEM MEMBER button.

  22. · kamo-shared-library

    Tambah Flag Pengguna Sistem + access-grant entitas

    Memperkenalkan model Sistem Sistem-lebar platform: sebuah flag Pengguna User.isSystemUser (Indeks parsial unik memaksa singleton), ditambah tabel SystemUserAccess bahwa catatan yang top-level-org departemen, judul pekerjaan, atau anggota tim mungkin meniru Pengguna Sistem untuk memasukkan organ anak. Baris akses adalah platform- internal (bukan masukan RoleRightType) jadi mereka tetap keluar dari Tenanti- menghadap permukaan hak.

  23. · kamo-register

    Tambahkan langkah pertanyaan verifikasi telepon + keamanan

    Masukkan dua langkah baru antara Sandi dan Pemulihan Akun untuk 13 + registrants: sebuah langkah nomor telepon (opsional, skippable, dengan kode SMS verifikasi) dan security-pertanyaan langkah (dibutuhkan, 3 berbeda pertanyaan dengan jawaban). Bawah-13 resimen terus melewati keduanya dan mengandalkan benih mereka untuk pemulihan. - FormPhoneNumber: idle - > entering-code - > diverifikasi mesin keadaan, per- step Capcha widget gating SMS kirim, change- number dan lewati jalur. - FormSecurityQuestions: 3 dropdowns + jawaban, keunikan ditegakkan, katalog yang diambil dari backend publik baru titik akhir. - RegisterFlow: bidang formData baru, langkah kondisional, handleNext validasi, telepon + securityQuestions ditransfer ke tubuh pengiriman. - / api / proksi keamanan sekarang maju X-Forwarded- Host sehingga backend dapat meresolf org untuk pemilihan penyedia SMS.

  24. · SecurityService

    Kumpulkan ponsel + pertanyaan keamanan selama pendaftaran

    Pindahkan nomor telepon dan security- koleksi pertanyaan ke dalam layanan diri arus pendaftaran (di mana mereka awalnya dimaksudkan) daripada membutuhkan halaman pengaturan post- sign up. - New RegistrationPhone Service: menghasilkan / memverifikasi kode SMS 6-digit melalui BulkTextSmssClient, 10- minute TTL, 5- per- jam batas kecepatan per angka. - Layanan Pendaftaran sekarang menerima Rekor Registrasi dengan opsional Diverifikasi Telepon dan daftar pertanyaan security-entry; pertanyaan keamanan adalah bcrypt- hashed dengan yang ada jawaban - aturan normalisasi. - / api / keamanan / register menerima Dan... mengklaim ponsel yang diverifikasi terhadap kode sebelum mempertahankan pengguna. - Endpoints publik baru POST / register / phone / started (Capcha-gated), POST / register / phone / verify, and GET * * * * * * * * * * * * * *

  25. · kamo-shared-library

    Tambahkan entitas RegistrationPhoneCode + repositori

    Tabel baru 'registrasi _ phone _ codes' toko satu - ditembak kode verifikasi SMS diterbitkan selama pendaftaran layanan diri sendiri, sebelum entitas Pengguna ada. Disimpan terpisah dari AccountVerificationCode untuk menghindari membawa surat NULL di meja itu.

  26. · kamo-internal

    Tambah Halaman Anggota / Tambah Anggota Tim

    - / akun: ganti tombol ambigu tunggal dengan tombol tab-scoped Tambahkan < Anggota > pada tab Anggota, Tambahkan < Anggota Tim > pada tab Anggota Tim. Setiap rute tombol ke halaman pembuatan yang didedikasikan daripada yang lama rusak fall-through ke tampilan detail anggota. - Baru / pengaturan / anggota / baru dan / pengaturan / anggota / halaman baru, baik Didukung oleh HimberCreateForm bersama dengan prop "varian". - Formulir adalah halaman tunggal, tata letak seksional (nama, identitas, kontak, org kotak surat, team-member-only role / location, review). Siaran langsung - cari di surel dan nama pengguna memperingatkan ketika pengguna sudah ada atau telah dihubungkan sebagai anggota di org ini. - Honors the org 's AgeReqType: jika kebutuhan memungkinkan pengguna di bawah 13, ruas surel pribadi dan organisasi disembunyikan dan nama pengguna menjadi identifikasi primer. - Opsional "Provisi organisasi kotak surat email" membuat checkbox kotak surat melalui EmailService dan assign sebagai anggota apos; s kotak surat utama. - Tab profil pada / konfigurasi / anggota / [id] sekarang termasuk Lokasi Kerja, Tim Status Keanggotaan, dan Judul Tugas Resmi untuk catatan Anggota Team, kabel ke titik akhir PUT / API / keamanan / anggota / {id} yang ada.

  27. · SecurityService

    Tambah aliran pembuatan Anggota / Tambah Anggota Tim

    - Pengontrol Anggota Baru: * GET * * * * * * * * * * * * * * - age-req, zona waktu, departemen, judul pekerjaan * GET * * * * * * * * * * * * * - debounded pemeriksaan eksistensi oleh email atau nama pengguna * POST / api / keamanan / anggota / buat - buat Anggota dalam penelepon org * POST * * * * * * * * * * * * * * * - buat Anggota Tim dengan departemen / pekerjaan judul / lokasi kerja / status keanggotaan / tingkat keamanan - Mengulang pengguna yang telah ada ketika surel atau nama pengguna sudah cocok; sebaliknya Membuat suatu net- baru Pengguna dan mengirim template EMAIL _ VERIFIKASI. SELAMAT DATANG template selalu dikirim pada pembuatan. - Untuk orgs yang AgeReqType perizinan bawah -13 pengguna, koleksi email adalah dilewati dan nama pengguna menjadi identifier primer. - Extenting GET / anggota / {id} untuk mengembalikan lokasi + TimbershipStatus + Pemilik Organisasi untuk Anggota Tim, dan PUT untuk mempertahankan lokasi, Status Pengantar Tim, dan JobTitleOfficial ketika catatan adalah Anggota Tim. - Penugasan peran baku + hak cipta yang didelegasikan ke Anggota Layanan jadi setiap anggota baru mendarat dengan hak efektif mereka sudah diterapkan. - Perbaiki Layanan Entitlement: getter boolean dieja getIsOrganization Pemilik (Lombok menghasilkan Adalah Organisasi Untuk bidang boolean primitif).

  28. · kamo-shared-library

    Tambahkan AgeReqType.allowsUnder13 () pembantu

    Digunakan oleh Tambah Anggota / Tambah Aliran Anggota Tim untuk melewati koleksi email untuk orgs yang usia persyaratan memungkinkan pengguna di bawah 13 (ALL _ AGES, KIDS _ ONLY, ALL _ COPPA _ GRADS).

  29. · kamo-internal

    Membangun ulang anggota Plan & Billing sekitar Grup Billing

    - Anggota halaman Plan & Billing tab sekarang right- selaras dengan cahaya berdenyut dan sebuah ikon StarRate pada tab bar. Terlihat ketika anggota yang dilihat adalah Signed-in pengguna OR yang signed-in pengguna memiliki org. Dipisah isi dalam empat subtab: subscriptions, Invoices, Pembayaran Info, Manage Group. Tombol ikon Billing- grup dropdown + "Add Billing Group" di sebelah kanan sub- tab bar; pemilihan grup drive setiap panel. - Panel langganan menunjukkan satu kartu per pasar aktif (FREE _ DEFAULT KamoCRM selalu hadir), dengan perubahan rencana / batalkan / aktivasi dan sebuah per-seat lisensi-tugas grid. Prioritas oto- menonaktifkan berjalan server- sisi pada pengurangan kursi. - Pembayaran Info panel membungkus Elemen StripeProvider melalui StripeProvider + a refactored Paytment MethoodForm yang menempel ke kelompok penagihan (bukan pelanggan org-level lama). - Manage Group panel editits title / billing permission kontak / anggota (Licensee, Manajer Rencana Grup, ManageSubscription, canManageBilling) dan menambah / menghapus anggota. Grup Baku baca-saja - daftar nya adalah implisit (semua orang tidak dalam sebuah grup eksplisit), dan tidak ada judul atau izin edits diperbolehkan. - / pengaturan / akun? tab = colling dihapus langsung. Manajer Billing+ PlanKalkulator dihapus. Taut dimana-mana diperbarui ke anggota baru Rencana & Tagihan tab. - SettingsStatusWindow + / settings landing nav baik pruned (tiga-cara sync per aturan nav-sync). - BranchSetupManager mendapat bagian baru "Dagang" di dalam Editor security- model, menggunakan SecurityModelMarketController baru ke pasang / lepaskan pasar SUBSCRIPSI dengan per- scope Publik / Anggota / Team- Kentut Anggota. - * * * * * * * * * * * * * * ditulis ulang untuk menampilkan per-org Billing Grup + per- grup subscriptions + MRR. / settings / platform / event dan / konfigurasi / platform / rencana menjadi halaman placeholder (isi lama mereka hilang dengan potongan bersih). - Proksi API baru: / api / keamanan / hak dan * * * * * * * * * * * * * * * Kait yang digunakan baru consummes SecurityService Entitlement Service for feature- gating in the UI. Berkas konsumen Legacy (StatsManager, Manajer Fitur, BranchSetupManager) membawa @ ts-nocheck sampai subscription mereka berbasis Menjalankan kode bekerja kembali ke utiEntitelities.

  30. · SecurityService

    Tambahkan Entitlement Service + SecurityModel pasar perdagangan

    - Entitlement Service menghitung per- fitur anggota dengan unioning aktif Rencana Grup BillingLicense fitur + KamoCRM Dasar yang lebih bebas. Caches Proyeksi 15 menit di Redis keyed pada keanggotaan. - Entitlements InvalidationListener subsators ke kamo.reallements.invalidate Saluran Redis (MEMBER: / GROUP: / ORG: payload) sehingga Mutasi Layanan BillingService Menyebarkan segera. - Entitlement Controller di / api / keamanan / hak mengekspos / aku, * * * * * * * * * * * * * dan cache- invalidation POST. - SecurityModelMarketController di * * * * * * * * * * * * * * * attaches / detaches CommerceMarkets to a ChildOrgans SeccurityModel dan membalik Publik / Anggota / Tim-Anggota-Teropong lingkup.

Alam semestamu menunggu.

Mulai gratis dalam beberapa menit. Tambahkan produk kapanpun Anda siap — tidak ada migrasi, tidak ada login baru.

Gratis selamanya — tidak diperlukan kartu kredit