GetDomainById および check-dns エンドポイントで高まるアクセスを許可
GetDomainBy でトップレベルの org オーナーとシステムメンバーが 403 を獲得しました ログイン そしてそれらのエンドポイントはisUserMemberOfをチェックしたので、検証-dns 直接オーグ。 hasElevatedCrossOrgAccessヘルパーを追加し、メンバーチェックと一緒に適用しま...
重複ルートドメインを防止し、プライマリドメイン表示を修正
ONE DOMAIN PER ORG チェックを誤って .kamocrm.com web-alias ドメインは、複数のルートドメイン(および10)を蓄積するorgを許可します 異なるエイリアスと再試すことで各エイリアスを。 今、すべてのカウント 接尾辞に関係なくトップレベルのドメイン(親はNULL)。 ネットワーク...
Org作成レイテンシーを削減し、翻訳カスケードの失敗を修正
- 組織管理者:TeamMembersForAllOrgs(完全なorg)を確実に交換する TeamMemberForOrg(単一オーガニゼーション)を確実なテーブルスキャン 〜400ms×N DB 往復 /network/create 送信 がスタック - 組織管理者:メールを移動しますTemplateSeedCli...
既存のorgsにbootstrap-billingエンドポイントを追加
メニュー 同じトリガー サブオーガニゼーション・ホック(BillingSetupService)としての意図的なセットアップ .setupForSubOrgCreation はオーガナイザーのオーナーがオンデマンドと呼ぶことができます。 課金レファクタの前に作成されたorgsを扱います。 そのため、アカウント+アカウン...
自動座席は床、より広いorgの無効として、床として、放します
BillingSetupService は、作成者の最初のオープンライセンススロットを有効にします。 サブ・オーガナイゼーション(およびプロモート・トゥ・ビルリング・オーナーと同じ)を見るとき — そうでなければ、新鮮なサブオーガニの所有者は、あるにもかかわらず、無料のベースラインを参照してください シードプランのライ...
トップレベルのorgメンバーはプラットフォームオーナープラン、バイパス課金ゲートを受け取ります
KamoCRM (トップレベル) orgのメンバーは、課金システムではなく、 OWNER UNLIMITEDプランの機能行列アウトライト(無料) 所有者の計画が欠落している場合の防御的なフォールバック)、プラスは、活動的なライセンス と has-Kamo-CRM-access true なので、すべての UI ゲート ...
サブオーガニ作成のオートプロビジョンKamoCRMシート; 推進ビルリングオーナーエンドポイント
EntitlementService は、サブスクリプションメンバー (アカウントメンバーではなく) を計算する 会員資格 — アクティブ・ライセンシー・サブを横断する機能の連合、プラス 無料ベースライン。 Redis のリスナーが SUBSCRIPTION:<uid> ハンドラを獲得しました。 新しい Billin...
アカウントグループ -> AccountTier; エンドポイント /groups -> /tiers
口座グループエンドポイント(顧客セグメンテーション層、請求なし) "tier" 用語を一貫して使用するために全名前を変更しました 共有リブの名前: - /api/security/account/groups -> /api/security/account/tiers ディレクティブ メニュー -> /retail/...
ユーザ/masterAccountHolder をドロップし、Account.members + プライマリメンバーを使用します
AccountController は、Account-as-group モデルを反映しています。 - computeDisplayName / ExtractEmail / ExtractPhone は、 ドロップマスターの代わりにプライマリ(メンバー)アカウントホルダー - getCustomerDetail はア...
パーシストメンバーの言語/タイムゾーン/通貨のサインアップ
/register エンドポイントは、言語、タイムゾーン、デフォルト通貨を受け付けます。 既存の国のフィールドと共に。 登録サービスセット 国 新規ユーザのタイムゾーンと、すべての4つの地域フィールドを適用する 新しく作成されたメンバーは、国の通貨からデフォルトの通貨を導きます 1 が供給されていない場合の主流マッピン...
BillingGroup からアカウントベースのライセンスに移動
EntitlementServiceは、AccountLicenseに対するメンバーの資格を解決します 会員の課金アカウントが保有するレコード。 会員資格 形状は、古いの代わりに、countUid + accountDisplayName を公開します。 ******************** ペア. Entitl...
ネストされた名前/メール/電話番号+アドレス管理エンドポイントをサポート
- AccountController は POST/PUT でネストされた名前/電子メール/phoneNumbers JSON を受け入れます - POST の初期アドレスは SHIPPING (および BILLING を useAsBillingToo セット) を作成しましたり、第一次ポインタを置きます - 5つ...
GET /{id}/history と /{id}/history/filters エンドポイントを追加
バッチの俳優のローディング(N+1なし)と、パギン化、濾過、検索可能なリード履歴エンドポイント。 フィルタエンドポイントは、使用されるフィールド、すべてのレジストリフィールド、異なる俳優、およびすべてのイベントタイプを返します。 すべてのミューティングエンドポイントは、コールメンバーを俳優としてLeadHistoryS...
システム構成の録音のstats +録音処理のtunables
メニュー 4つのカウンターを返す kamo内部設定 → プラットフォーム → 設定 → VoIP/SMS で公開 タブ (vmPending, callPending, vmError, callError). - PUT /api/security/system-config は voipVmBatchSize, v...
Config.json に org の説明を含める
BuildConfigJson() に説明フィールドを追加し、org.getDescription() を渡します。 writeConfigFiles() から、 それらは config.json が org's を継承します。 HTMLメタタグで使用するフロントエンドの記述.
Expose には、intake-config および Market-config 応答の企業が含まれます
メニュー メニュー 現在、includeCompany フラグが含まれているので、フロントエンドは表示するかどうかを知っています リード作成の会社名フィールド.
/namesエンドポイントに診断ロギングを追加
ログorgId、メンバーカウント、およびパーメンバーの名前の解像度を診断する 割り当てられたメンバーの名前が正しく解決しない理由.
実名/Last 名を display に優先します
usernameAliasは機能的にログインハンドル(多くの場合、ユーザー名と等しい)です。 表示名ではありません。 User.name (EmbNameFull) で、実際の人間が読める名前が住んでいます。 /name と /by-department エンドポイントの両方に適用します.
/names エンドポイントを state に関係なく、すべてのメンバーに対して id→name を返すようにします
実行中のエンドポイントフィルタは、アクティブなチームメンバーのみ、ただし拡張機能 割り当ては、ベースメンバーまたは非アクティブメンバーを参照することができます。 /name を使う 活動状態以上のカバレッジが重要であるID→nameの決断.
メニュー エンドポイント
SalesType、subType、および customForms を MarketId で返す Add リードフォームは、サブタイプフィールドとインテークカスタムフォームをレンダリングできます 最初にリードを作成することなく.
分割エンドポイントの正しい優先度で表示名を解決
優先順位: Member.usernameAlias → user.name.formatFull() → user.alias → user.username
ログを追加してアップロードバックグラウンドエンドポイントへ
Org/index, ファイル情報, userId, auth の決定, および MinIO のステージング バックグラウンドアップロードがステージングバケットに表示されない理由を追跡するキー.
会員JsonIdentityをピックアップする改造 kamo-shared-libraryからの情報修正
kamo-shared-library b57d156 は @JsonIdentityInfo(property = "uniqueId") を修正しました。 →「id」は、PUT /api/security/org/{id} で 400 エラーを解決します.
重複したCorsFilterのビーンを削除して、二重Access-Control-Allow-Originヘッダーを引き起こします
Explicit CorsFilterの豆はばねと2番目のCORSフィルターを引き起こしました セキュリティの組み込みの CORS サポート (CorsConfigurationSource を使用する). どちらのフィルタもオリジンパターンを解決し、同じヘッダを書いたり、 複製 'https://www.kamocr...
システムユーザーが org ブランディングを管理し、ロゴ auth を固定することを可能にします
- canManageOrgBranding のプラットホームの最初の監視としてシステム ユーザーバイパスを加えて下さい システム ユーザーはすべての非親のorgs上のフル ブランディング制御を持っています - ロードされた生のorg所有者のみチェックを持っていたアップロードLogoエンドポイントを修正 両方canMa...
System-config + プラットフォーム・オーバービューエンドポイント
プラットフォーム全体の構成面、既存のトップレベルの所有者によってゲート ガード(SystemUserConfigControllerのrequireTopLevelOwnerパターンにマッチ)。 エンドポイント: - GET /api/security/system-config — シングルトン行を返す - PUT...
GoDaddy 400の間違いの背後にある実質の理由
GoDaddy は code=UNABLE TO AUTHENTICATE と body で HTTP 400 を返すようになりました 口座が現在のところ満たない場合は「悪いリクエスト」 生産 ドメイン API の適格性 (10+ ドメイン アカウントまたはアカウント) アクティブな割引ドメインクラブ会員). 資格情報...
プラットフォーム管理者にGET /api/security/org/all-networks を追加
トップレベルのオーガナの所有者は、システム内のすべての組織を獲得できるようになりました 発信者に対する会員情報。 発信者がメンバーを持っているオラグ レコードは isOwner/memberId がポップアップし、 他の人は memberId: null, isOwner: false を取得します。 Endpoint...
ドロップチームMemberPayFeesSetting パラメータ
共有ライブラリの変更をミラーリング — SecurityModelController, MasterModelController および AppliedModelController は読み書きしません チームメンバーPayFeesSetting。 ブランチタイプのエディタのモデルごとのセルフペイ 「Billing...
FindByIdWithDomainsによるEager-loadドメイン、drop @Transactional
コントローラーメソッドの@Transactionalは、DB接続を間接的に保持します。 MinIOアップロード全体で、LazyInitializationExceptionもリスク 解決前の内部 getOrganizationById トランザクションコミットPrimaryDomain org.getDomains()...
エイリアス可視性フィルタリング+サブドメイン所有権の自動検証
組織管理者: - Web-alias org の作成は、所有権を自動マークしますVerified=true と 作成した OrgDomain で isDnsVerified=true — 以来必要な TXT レコードなし 私たちは、GoDaddyに代わってDNSを約束しました - CUSTOM ParentAliasT...
直接アップロード/{domain-folder}/img/ ではなく、ステージングバケット
UploadLogo エンドポイントはハードコードされた 'sumtingwong' プレースホルダーに書いていました (unfilled set) の代わりに org の実際のパブリックテーマパス。 今のロゴ 直接****************またはロゴフル.{ext}に移動します。 - copyFolder は...
エッジノードのデフォルトからダウンした k2m1 ノードを削除します
k2m1 (10.8.2.1)は永久にダウンします。 フェイルオーバーリストでそれを残す 新しいOkHttpのタイムアウト火まで掛けるためにリトリートをアップロードしました。 デフォルト k1m1-only; k0m1コールドノードはフォールバックとして残っています.
Org-level config、GoDaddy クライアント、Web-alias org はパスを作成します
新しいサブドメインブランチをワイヤーで縛ると、バックエンドのエンドツーエンドが機能します。 - orgレベルのSubdomainBranchesControllerは+GoDaddyのcrudsを可能にしました(live-verified) - GoDaddyDnsClient は、重要な CNAME の upsert...
サインアップ時に電話フィールドのSMS認証をドロップ
セルフサービス登録時に収集した電話番号は、現在 プレーンオプションのテキストフィールド — /register/phone/initiate、SMSコードなし、 /register/phone/verify なし レジスタエンドポイントは番号をそのまま受け入れます 入力、空白/句読化を正規化し、E.164-ishを検証...
Explicit チームステータス + 名前 プレフィックス/サフィックス カタログ
- GET******************** が namePrefixs を返すようになりました。 namePrefixType と NameSuffixType からソースされる チームメンバーの追加/チームメンバーフォームの追加は、それらをハードコードする必要はありません。 - POST /create-te...
電子メール + 法的名は、下-13のサインアップのためにオプション
/api/security/register エンドポイントは、以前にリクエストを拒否しました 電子メール、名前、または最後の名前を欠落させます。 アンダー13 パスを作った (KIDS ONLY orgs, または ALL AGES を sub-13 registrant) 不可能 — これらのアカウントは正当にエイ...