@objectstack/service-settings 9.8.0 → 9.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1277,6 +1277,61 @@ var manifest = {
1277
1277
  default: false,
1278
1278
  visible: "${data.email_password_enabled !== false}"
1279
1279
  },
1280
+ {
1281
+ type: "group",
1282
+ id: "password_policy",
1283
+ label: "Password policy",
1284
+ required: false,
1285
+ description: "Length bounds enforced by the auth provider on sign-up and password reset."
1286
+ },
1287
+ {
1288
+ type: "number",
1289
+ key: "password_min_length",
1290
+ label: "Minimum password length",
1291
+ required: false,
1292
+ default: 8,
1293
+ min: 6,
1294
+ max: 64,
1295
+ visible: "${data.email_password_enabled !== false}"
1296
+ },
1297
+ {
1298
+ type: "number",
1299
+ key: "password_max_length",
1300
+ label: "Maximum password length",
1301
+ required: false,
1302
+ default: 128,
1303
+ min: 16,
1304
+ max: 256,
1305
+ description: "Upper bound guards against denial-of-service via very long password hashing.",
1306
+ visible: "${data.email_password_enabled !== false}"
1307
+ },
1308
+ {
1309
+ type: "group",
1310
+ id: "sessions",
1311
+ label: "Sessions",
1312
+ required: false,
1313
+ description: "How long a signed-in session stays valid."
1314
+ },
1315
+ {
1316
+ type: "number",
1317
+ key: "session_expiry_days",
1318
+ label: "Session lifetime (days)",
1319
+ required: false,
1320
+ default: 7,
1321
+ min: 1,
1322
+ max: 365,
1323
+ description: "A session expires this many days after sign-in."
1324
+ },
1325
+ {
1326
+ type: "number",
1327
+ key: "session_refresh_days",
1328
+ label: "Refresh threshold (days)",
1329
+ required: false,
1330
+ default: 1,
1331
+ min: 1,
1332
+ max: 90,
1333
+ description: "An active session is extended when it is older than this."
1334
+ },
1280
1335
  {
1281
1336
  type: "group",
1282
1337
  id: "social",
@@ -2431,9 +2486,262 @@ var manifest5 = {
2431
2486
  };
2432
2487
  var knowledgeSettingsManifest = manifest5;
2433
2488
 
2489
+ // src/manifests/localization.manifest.ts
2490
+ var localizationSettingsManifest = {
2491
+ namespace: "localization",
2492
+ version: 1,
2493
+ label: "Localization",
2494
+ icon: "Globe",
2495
+ description: "Default timezone, language, currency, and date/number formats.",
2496
+ scope: "tenant",
2497
+ readPermission: "setup.access",
2498
+ writePermission: "setup.write",
2499
+ category: "Workspace",
2500
+ order: 2,
2501
+ specifiers: [
2502
+ // ── Region ────────────────────────────────────────────────────────────
2503
+ { type: "group", id: "region", label: "Region", required: false },
2504
+ {
2505
+ type: "select",
2506
+ key: "timezone",
2507
+ label: "Default timezone",
2508
+ required: false,
2509
+ default: "UTC",
2510
+ description: "IANA zone used to resolve today()/daysFromNow, analytics date buckets, and rendered datetimes.",
2511
+ options: [
2512
+ { value: "UTC", label: "UTC" },
2513
+ { value: "America/Los_Angeles", label: "(UTC\u221208/\u221207) Los Angeles" },
2514
+ { value: "America/Denver", label: "(UTC\u221207/\u221206) Denver" },
2515
+ { value: "America/Chicago", label: "(UTC\u221206/\u221205) Chicago" },
2516
+ { value: "America/New_York", label: "(UTC\u221205/\u221204) New York" },
2517
+ { value: "America/Sao_Paulo", label: "(UTC\u221203) S\xE3o Paulo" },
2518
+ { value: "Europe/London", label: "(UTC\xB100/+01) London" },
2519
+ { value: "Europe/Paris", label: "(UTC+01/+02) Paris" },
2520
+ { value: "Europe/Berlin", label: "(UTC+01/+02) Berlin" },
2521
+ { value: "Europe/Moscow", label: "(UTC+03) Moscow" },
2522
+ { value: "Asia/Dubai", label: "(UTC+04) Dubai" },
2523
+ { value: "Asia/Kolkata", label: "(UTC+05:30) Kolkata" },
2524
+ { value: "Asia/Singapore", label: "(UTC+08) Singapore" },
2525
+ { value: "Asia/Shanghai", label: "(UTC+08) Shanghai" },
2526
+ { value: "Asia/Tokyo", label: "(UTC+09) Tokyo" },
2527
+ { value: "Australia/Sydney", label: "(UTC+10/+11) Sydney" },
2528
+ { value: "Pacific/Auckland", label: "(UTC+12/+13) Auckland" }
2529
+ ]
2530
+ },
2531
+ {
2532
+ type: "select",
2533
+ key: "locale",
2534
+ label: "Default language",
2535
+ required: false,
2536
+ default: "en-US",
2537
+ description: "BCP-47 locale for message catalogs and number/date formatting.",
2538
+ options: [
2539
+ { value: "en-US", label: "English (US)" },
2540
+ { value: "zh-CN", label: "\u7B80\u4F53\u4E2D\u6587" },
2541
+ { value: "ja-JP", label: "\u65E5\u672C\u8A9E" },
2542
+ { value: "es-ES", label: "Espa\xF1ol (Espa\xF1a)" }
2543
+ ]
2544
+ },
2545
+ {
2546
+ type: "text",
2547
+ key: "default_country",
2548
+ label: "Default country",
2549
+ required: false,
2550
+ default: "US",
2551
+ description: "ISO 3166-1 alpha-2 code (e.g. US, GB, CN). Used for address and phone defaults.",
2552
+ pattern: "^[A-Za-z]{2}$",
2553
+ minLength: 2,
2554
+ maxLength: 2
2555
+ },
2556
+ // ── Formats ───────────────────────────────────────────────────────────
2557
+ { type: "group", id: "formats", label: "Formats", required: false },
2558
+ {
2559
+ type: "select",
2560
+ key: "date_format",
2561
+ label: "Date format",
2562
+ required: false,
2563
+ default: "YYYY-MM-DD",
2564
+ options: [
2565
+ { value: "YYYY-MM-DD", label: "2026-06-17 (ISO)" },
2566
+ { value: "MM/DD/YYYY", label: "06/17/2026 (US)" },
2567
+ { value: "DD/MM/YYYY", label: "17/06/2026 (EU)" },
2568
+ { value: "DD.MM.YYYY", label: "17.06.2026" },
2569
+ { value: "DD-MMM-YYYY", label: "17-Jun-2026" }
2570
+ ]
2571
+ },
2572
+ {
2573
+ type: "select",
2574
+ key: "time_format",
2575
+ label: "Time format",
2576
+ required: false,
2577
+ default: "24h",
2578
+ options: [
2579
+ { value: "24h", label: "24-hour (14:30)" },
2580
+ { value: "12h", label: "12-hour (2:30 PM)" }
2581
+ ]
2582
+ },
2583
+ {
2584
+ type: "select",
2585
+ key: "number_format",
2586
+ label: "Number format",
2587
+ required: false,
2588
+ default: "1,234.56",
2589
+ description: "Grouping and decimal separators for displayed numbers.",
2590
+ options: [
2591
+ { value: "1,234.56", label: "1,234.56 (comma / dot)" },
2592
+ { value: "1.234,56", label: "1.234,56 (dot / comma)" },
2593
+ { value: "1 234,56", label: "1 234,56 (space / comma)" },
2594
+ { value: "1,23,456.78", label: "1,23,456.78 (Indian)" }
2595
+ ]
2596
+ },
2597
+ {
2598
+ type: "select",
2599
+ key: "first_day_of_week",
2600
+ label: "First day of week",
2601
+ required: false,
2602
+ default: "monday",
2603
+ description: "Anchors weekly analytics buckets and calendar grids.",
2604
+ options: [
2605
+ { value: "monday", label: "Monday (ISO)" },
2606
+ { value: "sunday", label: "Sunday" },
2607
+ { value: "saturday", label: "Saturday" }
2608
+ ]
2609
+ },
2610
+ // ── Finance ───────────────────────────────────────────────────────────
2611
+ { type: "group", id: "finance", label: "Finance", required: false },
2612
+ {
2613
+ type: "select",
2614
+ key: "currency",
2615
+ label: "Default currency",
2616
+ required: false,
2617
+ default: "USD",
2618
+ description: "ISO 4217 code applied when a currency field omits its own.",
2619
+ options: [
2620
+ { value: "USD", label: "USD \u2014 US Dollar" },
2621
+ { value: "EUR", label: "EUR \u2014 Euro" },
2622
+ { value: "GBP", label: "GBP \u2014 British Pound" },
2623
+ { value: "JPY", label: "JPY \u2014 Japanese Yen" },
2624
+ { value: "CNY", label: "CNY \u2014 Chinese Yuan" },
2625
+ { value: "INR", label: "INR \u2014 Indian Rupee" },
2626
+ { value: "AUD", label: "AUD \u2014 Australian Dollar" },
2627
+ { value: "CAD", label: "CAD \u2014 Canadian Dollar" },
2628
+ { value: "BRL", label: "BRL \u2014 Brazilian Real" }
2629
+ ]
2630
+ },
2631
+ {
2632
+ type: "select",
2633
+ key: "fiscal_year_start",
2634
+ label: "Fiscal year start",
2635
+ required: false,
2636
+ default: "january",
2637
+ description: 'First month of the fiscal year \u2014 drives "this quarter / fiscal year" in reports.',
2638
+ options: [
2639
+ { value: "january", label: "January" },
2640
+ { value: "february", label: "February" },
2641
+ { value: "march", label: "March" },
2642
+ { value: "april", label: "April" },
2643
+ { value: "may", label: "May" },
2644
+ { value: "june", label: "June" },
2645
+ { value: "july", label: "July" },
2646
+ { value: "august", label: "August" },
2647
+ { value: "september", label: "September" },
2648
+ { value: "october", label: "October" },
2649
+ { value: "november", label: "November" },
2650
+ { value: "december", label: "December" }
2651
+ ]
2652
+ }
2653
+ ]
2654
+ };
2655
+
2656
+ // src/manifests/company.manifest.ts
2657
+ var companySettingsManifest = {
2658
+ namespace: "company",
2659
+ version: 1,
2660
+ label: "Company",
2661
+ icon: "Building2",
2662
+ description: "Legal entity identity \u2014 registered name, address, tax IDs, and primary contact.",
2663
+ scope: "tenant",
2664
+ readPermission: "setup.access",
2665
+ writePermission: "setup.write",
2666
+ category: "Workspace",
2667
+ order: 3,
2668
+ specifiers: [
2669
+ // ── Identity ──────────────────────────────────────────────────────────
2670
+ { type: "group", id: "identity", label: "Identity", required: false },
2671
+ {
2672
+ type: "text",
2673
+ key: "legal_name",
2674
+ label: "Legal name",
2675
+ required: false,
2676
+ description: "Registered legal name of the organization (may differ from the workspace name).",
2677
+ maxLength: 200
2678
+ },
2679
+ {
2680
+ type: "text",
2681
+ key: "registration_number",
2682
+ label: "Registration number",
2683
+ required: false,
2684
+ description: "Company registration / incorporation number (e.g. EIN, company no.).",
2685
+ maxLength: 80
2686
+ },
2687
+ {
2688
+ type: "text",
2689
+ key: "tax_id",
2690
+ label: "Tax / VAT ID",
2691
+ required: false,
2692
+ description: "Tax identifier shown on invoices (e.g. VAT, GST, ABN).",
2693
+ maxLength: 80
2694
+ },
2695
+ // ── Registered address ────────────────────────────────────────────────
2696
+ { type: "group", id: "address", label: "Registered address", required: false },
2697
+ { type: "text", key: "address_line1", label: "Address line 1", required: false, maxLength: 200 },
2698
+ { type: "text", key: "address_line2", label: "Address line 2", required: false, maxLength: 200 },
2699
+ { type: "text", key: "city", label: "City", required: false, maxLength: 120 },
2700
+ { type: "text", key: "state", label: "State / Province", required: false, maxLength: 120 },
2701
+ { type: "text", key: "postal_code", label: "Postal code", required: false, maxLength: 32 },
2702
+ {
2703
+ type: "text",
2704
+ key: "country",
2705
+ label: "Country",
2706
+ required: false,
2707
+ description: "ISO 3166-1 alpha-2 code (e.g. US, GB, CN).",
2708
+ pattern: "^[A-Za-z]{2}$",
2709
+ minLength: 2,
2710
+ maxLength: 2
2711
+ },
2712
+ // ── Contact ───────────────────────────────────────────────────────────
2713
+ { type: "group", id: "contact", label: "Contact", required: false },
2714
+ {
2715
+ type: "text",
2716
+ key: "phone",
2717
+ label: "Phone",
2718
+ required: false,
2719
+ description: "Primary business phone (E.164 recommended, e.g. +1 415 555 0100).",
2720
+ maxLength: 40
2721
+ },
2722
+ {
2723
+ type: "url",
2724
+ key: "website",
2725
+ label: "Website",
2726
+ required: false,
2727
+ description: "Example: https://example.com"
2728
+ },
2729
+ { type: "text", key: "primary_contact_name", label: "Primary contact name", required: false, maxLength: 120 },
2730
+ {
2731
+ type: "email",
2732
+ key: "primary_contact_email",
2733
+ label: "Primary contact email",
2734
+ required: false,
2735
+ description: "Example: ops@example.com"
2736
+ }
2737
+ ]
2738
+ };
2739
+
2434
2740
  // src/manifests/index.ts
2435
2741
  var builtinSettingsManifests = [
2436
2742
  brandingSettingsManifest,
2743
+ companySettingsManifest,
2744
+ localizationSettingsManifest,
2437
2745
  authSettingsManifest,
2438
2746
  mailSettingsManifest,
2439
2747
  storageSettingsManifest,
@@ -2504,6 +2812,50 @@ var en = {
2504
2812
  logo_url: { label: "Logo URL", help: "Example: https://\u2026/logo.svg" }
2505
2813
  }
2506
2814
  },
2815
+ company: {
2816
+ title: "Company",
2817
+ description: "Legal entity identity \u2014 registered name, address, tax IDs, and primary contact.",
2818
+ groups: {
2819
+ identity: { title: "Identity" },
2820
+ address: { title: "Registered address" },
2821
+ contact: { title: "Contact" }
2822
+ },
2823
+ keys: {
2824
+ legal_name: { label: "Legal name", help: "Registered legal name (may differ from the workspace name)." },
2825
+ registration_number: { label: "Registration number", help: "Company registration / incorporation number (e.g. EIN)." },
2826
+ tax_id: { label: "Tax / VAT ID", help: "Shown on invoices (e.g. VAT, GST, ABN)." },
2827
+ address_line1: { label: "Address line 1" },
2828
+ address_line2: { label: "Address line 2" },
2829
+ city: { label: "City" },
2830
+ state: { label: "State / Province" },
2831
+ postal_code: { label: "Postal code" },
2832
+ country: { label: "Country", help: "ISO 3166-1 alpha-2 code (e.g. US, GB, CN)." },
2833
+ phone: { label: "Phone", help: "E.164 recommended, e.g. +1 415 555 0100." },
2834
+ website: { label: "Website", help: "Example: https://example.com" },
2835
+ primary_contact_name: { label: "Primary contact name" },
2836
+ primary_contact_email: { label: "Primary contact email", help: "Example: ops@example.com" }
2837
+ }
2838
+ },
2839
+ localization: {
2840
+ title: "Localization",
2841
+ description: "Default timezone, language, currency, and date/number formats.",
2842
+ groups: {
2843
+ region: { title: "Region" },
2844
+ formats: { title: "Formats" },
2845
+ finance: { title: "Finance" }
2846
+ },
2847
+ keys: {
2848
+ timezone: { label: "Default timezone", help: "IANA zone for today()/daysFromNow, analytics date buckets, and rendered datetimes." },
2849
+ locale: { label: "Default language", help: "BCP-47 locale for message catalogs and number/date formatting." },
2850
+ default_country: { label: "Default country", help: "ISO 3166-1 alpha-2 code (e.g. US, GB, CN)." },
2851
+ date_format: { label: "Date format" },
2852
+ time_format: { label: "Time format", options: { "24h": "24-hour (14:30)", "12h": "12-hour (2:30 PM)" } },
2853
+ number_format: { label: "Number format" },
2854
+ first_day_of_week: { label: "First day of week", options: { monday: "Monday (ISO)", sunday: "Sunday", saturday: "Saturday" } },
2855
+ currency: { label: "Default currency" },
2856
+ fiscal_year_start: { label: "Fiscal year start" }
2857
+ }
2858
+ },
2507
2859
  auth: {
2508
2860
  title: "Authentication",
2509
2861
  description: "Sign-in, registration, and built-in auth feature controls.",
@@ -2512,6 +2864,14 @@ var en = {
2512
2864
  title: "Email and password",
2513
2865
  description: "Control local email/password sign-in and self-service registration."
2514
2866
  },
2867
+ password_policy: {
2868
+ title: "Password policy",
2869
+ description: "Length bounds enforced by the auth provider on sign-up and password reset."
2870
+ },
2871
+ sessions: {
2872
+ title: "Sessions",
2873
+ description: "How long a signed-in session stays valid."
2874
+ },
2515
2875
  social: {
2516
2876
  title: "Social sign-in",
2517
2877
  description: "Configure the built-in Google sign-in provider. Deployment env vars still win."
@@ -2521,6 +2881,10 @@ var en = {
2521
2881
  email_password_enabled: { label: "Enable email/password login" },
2522
2882
  signup_enabled: { label: "Allow self-service registration" },
2523
2883
  require_email_verification: { label: "Require email verification" },
2884
+ password_min_length: { label: "Minimum password length" },
2885
+ password_max_length: { label: "Maximum password length", help: "Guards against denial-of-service via very long password hashing." },
2886
+ session_expiry_days: { label: "Session lifetime (days)", help: "A session expires this many days after sign-in." },
2887
+ session_refresh_days: { label: "Refresh threshold (days)", help: "An active session is extended when it is older than this." },
2524
2888
  google_enabled: {
2525
2889
  label: "Enable Google login",
2526
2890
  help: "Requires a Google OAuth client ID and secret from Google Cloud Console."
@@ -2851,6 +3215,50 @@ var zhCN = {
2851
3215
  logo_url: { label: "Logo \u94FE\u63A5", help: "\u793A\u4F8B:https://\u2026/logo.svg" }
2852
3216
  }
2853
3217
  },
3218
+ company: {
3219
+ title: "\u516C\u53F8",
3220
+ description: "\u6CD5\u5F8B\u5B9E\u4F53\u4FE1\u606F\u2014\u2014\u6CE8\u518C\u540D\u79F0\u3001\u5730\u5740\u3001\u7A0E\u53F7\u53CA\u4E3B\u8981\u8054\u7CFB\u4EBA\u3002",
3221
+ groups: {
3222
+ identity: { title: "\u4E3B\u4F53\u4FE1\u606F" },
3223
+ address: { title: "\u6CE8\u518C\u5730\u5740" },
3224
+ contact: { title: "\u8054\u7CFB\u65B9\u5F0F" }
3225
+ },
3226
+ keys: {
3227
+ legal_name: { label: "\u6CD5\u5B9A\u540D\u79F0", help: "\u6CE8\u518C\u7684\u6CD5\u5B9A\u540D\u79F0(\u53EF\u80FD\u4E0E\u5DE5\u4F5C\u533A\u540D\u79F0\u4E0D\u540C)\u3002" },
3228
+ registration_number: { label: "\u6CE8\u518C\u53F7", help: "\u516C\u53F8\u6CE8\u518C/\u5DE5\u5546\u767B\u8BB0\u53F7(\u5982 EIN\u3001\u7EDF\u4E00\u793E\u4F1A\u4FE1\u7528\u4EE3\u7801)\u3002" },
3229
+ tax_id: { label: "\u7A0E\u53F7 / VAT", help: "\u53D1\u7968\u4E0A\u663E\u793A\u7684\u7A0E\u52A1\u6807\u8BC6(\u5982 VAT\u3001GST\u3001ABN)\u3002" },
3230
+ address_line1: { label: "\u5730\u5740\u884C 1" },
3231
+ address_line2: { label: "\u5730\u5740\u884C 2" },
3232
+ city: { label: "\u57CE\u5E02" },
3233
+ state: { label: "\u7701/\u5DDE" },
3234
+ postal_code: { label: "\u90AE\u653F\u7F16\u7801" },
3235
+ country: { label: "\u56FD\u5BB6/\u5730\u533A", help: "ISO 3166-1 \u4E8C\u4F4D\u4EE3\u7801(\u5982 US\u3001GB\u3001CN)\u3002" },
3236
+ phone: { label: "\u7535\u8BDD", help: "\u5EFA\u8BAE E.164 \u683C\u5F0F,\u5982 +86 21 5555 0100\u3002" },
3237
+ website: { label: "\u7F51\u7AD9", help: "\u793A\u4F8B:https://example.com" },
3238
+ primary_contact_name: { label: "\u4E3B\u8981\u8054\u7CFB\u4EBA" },
3239
+ primary_contact_email: { label: "\u4E3B\u8981\u8054\u7CFB\u4EBA\u90AE\u7BB1", help: "\u793A\u4F8B:ops@example.com" }
3240
+ }
3241
+ },
3242
+ localization: {
3243
+ title: "\u672C\u5730\u5316",
3244
+ description: "\u9ED8\u8BA4\u65F6\u533A\u3001\u8BED\u8A00\u3001\u8D27\u5E01\u53CA\u65E5\u671F/\u6570\u5B57\u683C\u5F0F\u3002",
3245
+ groups: {
3246
+ region: { title: "\u533A\u57DF" },
3247
+ formats: { title: "\u683C\u5F0F" },
3248
+ finance: { title: "\u8D22\u52A1" }
3249
+ },
3250
+ keys: {
3251
+ timezone: { label: "\u9ED8\u8BA4\u65F6\u533A", help: "\u7528\u4E8E today()/daysFromNow\u3001\u5206\u6790\u65E5\u671F\u5206\u6876\u548C datetime \u6E32\u67D3\u7684 IANA \u65F6\u533A\u3002" },
3252
+ locale: { label: "\u9ED8\u8BA4\u8BED\u8A00", help: "\u7528\u4E8E\u6D88\u606F\u6587\u6848\u548C\u6570\u5B57/\u65E5\u671F\u683C\u5F0F\u7684 BCP-47 \u8BED\u8A00\u3002" },
3253
+ default_country: { label: "\u9ED8\u8BA4\u56FD\u5BB6/\u5730\u533A", help: "ISO 3166-1 \u4E8C\u4F4D\u4EE3\u7801(\u5982 US\u3001GB\u3001CN)\u3002" },
3254
+ date_format: { label: "\u65E5\u671F\u683C\u5F0F" },
3255
+ time_format: { label: "\u65F6\u95F4\u683C\u5F0F", options: { "24h": "24 \u5C0F\u65F6\u5236(14:30)", "12h": "12 \u5C0F\u65F6\u5236(2:30 PM)" } },
3256
+ number_format: { label: "\u6570\u5B57\u683C\u5F0F" },
3257
+ first_day_of_week: { label: "\u6BCF\u5468\u8D77\u59CB\u65E5", options: { monday: "\u5468\u4E00(ISO)", sunday: "\u5468\u65E5", saturday: "\u5468\u516D" } },
3258
+ currency: { label: "\u9ED8\u8BA4\u8D27\u5E01" },
3259
+ fiscal_year_start: { label: "\u8D22\u5E74\u8D77\u59CB\u6708" }
3260
+ }
3261
+ },
2854
3262
  auth: {
2855
3263
  title: "\u8BA4\u8BC1",
2856
3264
  description: "\u767B\u5F55\u3001\u6CE8\u518C\u4EE5\u53CA\u5185\u7F6E\u8BA4\u8BC1\u529F\u80FD\u7684\u63A7\u5236\u9879\u3002",
@@ -2859,6 +3267,14 @@ var zhCN = {
2859
3267
  title: "\u90AE\u7BB1\u4E0E\u5BC6\u7801",
2860
3268
  description: "\u63A7\u5236\u672C\u5730\u90AE\u7BB1/\u5BC6\u7801\u767B\u5F55\u4E0E\u81EA\u52A9\u6CE8\u518C\u3002"
2861
3269
  },
3270
+ password_policy: {
3271
+ title: "\u5BC6\u7801\u7B56\u7565",
3272
+ description: "\u7531\u8BA4\u8BC1\u63D0\u4F9B\u5546\u5728\u6CE8\u518C\u548C\u91CD\u7F6E\u5BC6\u7801\u65F6\u5F3A\u5236\u7684\u957F\u5EA6\u9650\u5236\u3002"
3273
+ },
3274
+ sessions: {
3275
+ title: "\u4F1A\u8BDD",
3276
+ description: "\u767B\u5F55\u4F1A\u8BDD\u7684\u6709\u6548\u65F6\u957F\u3002"
3277
+ },
2862
3278
  social: {
2863
3279
  title: "\u793E\u4EA4\u767B\u5F55",
2864
3280
  description: "\u914D\u7F6E\u5185\u7F6E\u7684 Google \u767B\u5F55\u63D0\u4F9B\u5546\u3002\u90E8\u7F72\u73AF\u5883\u53D8\u91CF\u4ECD\u4F18\u5148\u751F\u6548\u3002"
@@ -2868,6 +3284,10 @@ var zhCN = {
2868
3284
  email_password_enabled: { label: "\u542F\u7528\u90AE\u7BB1/\u5BC6\u7801\u767B\u5F55" },
2869
3285
  signup_enabled: { label: "\u5141\u8BB8\u81EA\u52A9\u6CE8\u518C" },
2870
3286
  require_email_verification: { label: "\u8981\u6C42\u90AE\u7BB1\u9A8C\u8BC1" },
3287
+ password_min_length: { label: "\u5BC6\u7801\u6700\u5C0F\u957F\u5EA6" },
3288
+ password_max_length: { label: "\u5BC6\u7801\u6700\u5927\u957F\u5EA6", help: "\u9632\u6B62\u8D85\u957F\u5BC6\u7801\u54C8\u5E0C\u5BFC\u81F4\u7684\u62D2\u7EDD\u670D\u52A1\u3002" },
3289
+ session_expiry_days: { label: "\u4F1A\u8BDD\u6709\u6548\u671F(\u5929)", help: "\u767B\u5F55\u540E\u4F1A\u8BDD\u5728\u6B64\u5929\u6570\u540E\u8FC7\u671F\u3002" },
3290
+ session_refresh_days: { label: "\u5237\u65B0\u9608\u503C(\u5929)", help: "\u6D3B\u8DC3\u4F1A\u8BDD\u5728\u8D85\u8FC7\u6B64\u65F6\u957F\u540E\u81EA\u52A8\u7EED\u671F\u3002" },
2871
3291
  google_enabled: {
2872
3292
  label: "\u542F\u7528 Google \u767B\u5F55",
2873
3293
  help: "\u9700\u8981\u5728 Google Cloud Console \u4E2D\u521B\u5EFA\u7684 Google OAuth \u5BA2\u6237\u7AEF ID \u4E0E\u5BC6\u94A5\u3002"