@nocobase/plugin-auth 2.1.0-alpha.4 → 2.1.0-alpha.40

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.
Files changed (54) hide show
  1. package/LICENSE +201 -661
  2. package/README.md +79 -10
  3. package/client-v2.d.ts +2 -0
  4. package/client-v2.js +1 -0
  5. package/dist/client/{8f805ee5814fd9b4.js → 443.634aca1f12f4906b.js} +1 -1
  6. package/dist/client/611.bf903b6a5490becc.js +10 -0
  7. package/dist/client/680.c44d0f336fd828c0.js +10 -0
  8. package/dist/client/basic/SignInForm.d.ts +0 -4
  9. package/dist/client/basic/hooks.d.ts +12 -0
  10. package/dist/client/basic/index.d.ts +1 -0
  11. package/dist/client/index.d.ts +1 -4
  12. package/dist/client/index.js +1 -1
  13. package/dist/client-v2/217.67ac4fe4bbc76329.js +10 -0
  14. package/dist/client-v2/795.6fbe6abacb03f9a6.js +10 -0
  15. package/dist/client-v2/841.83e6cab5e9918668.js +10 -0
  16. package/dist/client-v2/9.e88efa64328b39d7.js +10 -0
  17. package/dist/client-v2/authenticator.d.ts +19 -0
  18. package/dist/client-v2/forms/BasicAuthAdminSettings.d.ts +21 -0
  19. package/dist/client-v2/forms/BasicSignInForm.d.ts +13 -0
  20. package/dist/client-v2/forms/BasicSignUpForm.d.ts +14 -0
  21. package/dist/client-v2/hooks.d.ts +13 -0
  22. package/dist/client-v2/index.d.ts +20 -0
  23. package/dist/client-v2/index.js +10 -0
  24. package/dist/client-v2/locale.d.ts +188 -0
  25. package/dist/client-v2/pages/AuthLayout.d.ts +10 -0
  26. package/dist/client-v2/pages/AuthenticatorsPage.d.ts +10 -0
  27. package/dist/client-v2/pages/ForgotPasswordPage.d.ts +10 -0
  28. package/dist/client-v2/pages/ResetPasswordPage.d.ts +10 -0
  29. package/dist/client-v2/pages/SignInPage.d.ts +10 -0
  30. package/dist/client-v2/pages/SignUpPage.d.ts +10 -0
  31. package/dist/client-v2/plugin.d.ts +55 -0
  32. package/dist/client-v2/providers/AuthProvider.d.ts +11 -0
  33. package/dist/client-v2/providers/AuthenticatorsContextProvider.d.ts +11 -0
  34. package/dist/constants.d.ts +5 -0
  35. package/dist/constants.js +7 -0
  36. package/dist/externalVersion.js +14 -11
  37. package/dist/index.d.ts +2 -1
  38. package/dist/index.js +4 -0
  39. package/dist/node_modules/cron/lib/cron.js +1 -1
  40. package/dist/node_modules/cron/package.json +1 -1
  41. package/dist/node_modules/ms/index.js +1 -1
  42. package/dist/node_modules/ms/package.json +1 -1
  43. package/dist/server/index.d.ts +3 -0
  44. package/dist/server/index.js +6 -0
  45. package/dist/server/migrations/20241229080941-create-token-policy-config.js +2 -7
  46. package/dist/server/plugin.js +26 -18
  47. package/dist/server/token-controller.js +35 -27
  48. package/dist/server/utils/buildRedirectPath.d.ts +50 -0
  49. package/dist/server/utils/buildRedirectPath.js +44 -0
  50. package/package.json +5 -3
  51. package/dist/client/250783b43257256a.js +0 -10
  52. package/dist/client/95a0e31032d919ee.js +0 -10
  53. package/dist/client/bc33cbbb266ce917.js +0 -10
  54. package/dist/client/d451b9556071e997.js +0 -10
@@ -1 +1 @@
1
- (function(){var e={900:function(e){var r=1e3;var s=r*60;var a=s*60;var n=a*24;var t=n*7;var u=n*365.25;e.exports=function(e,r){r=r||{};var s=typeof e;if(s==="string"&&e.length>0){return parse(e)}else if(s==="number"&&isFinite(e)){return r.long?fmtLong(e):fmtShort(e)}throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function parse(e){e=String(e);if(e.length>100){return}var c=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!c){return}var i=parseFloat(c[1]);var o=(c[2]||"ms").toLowerCase();switch(o){case"years":case"year":case"yrs":case"yr":case"y":return i*u;case"weeks":case"week":case"w":return i*t;case"days":case"day":case"d":return i*n;case"hours":case"hour":case"hrs":case"hr":case"h":return i*a;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return undefined}}function fmtShort(e){var t=Math.abs(e);if(t>=n){return Math.round(e/n)+"d"}if(t>=a){return Math.round(e/a)+"h"}if(t>=s){return Math.round(e/s)+"m"}if(t>=r){return Math.round(e/r)+"s"}return e+"ms"}function fmtLong(e){var t=Math.abs(e);if(t>=n){return plural(e,t,n,"day")}if(t>=a){return plural(e,t,a,"hour")}if(t>=s){return plural(e,t,s,"minute")}if(t>=r){return plural(e,t,r,"second")}return e+" ms"}function plural(e,r,s,a){var n=r>=s*1.5;return Math.round(e/s)+" "+a+(n?"s":"")}}};var r={};function __nccwpck_require__(s){var a=r[s];if(a!==undefined){return a.exports}var n=r[s]={exports:{}};var t=true;try{e[s](n,n.exports,__nccwpck_require__);t=false}finally{if(t)delete r[s]}return n.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var s=__nccwpck_require__(900);module.exports=s})();
1
+ (()=>{var e={900:e=>{var r=1e3;var s=r*60;var a=s*60;var n=a*24;var t=n*7;var u=n*365.25;e.exports=function(e,r){r=r||{};var s=typeof e;if(s==="string"&&e.length>0){return parse(e)}else if(s==="number"&&isFinite(e)){return r.long?fmtLong(e):fmtShort(e)}throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function parse(e){e=String(e);if(e.length>100){return}var c=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!c){return}var i=parseFloat(c[1]);var o=(c[2]||"ms").toLowerCase();switch(o){case"years":case"year":case"yrs":case"yr":case"y":return i*u;case"weeks":case"week":case"w":return i*t;case"days":case"day":case"d":return i*n;case"hours":case"hour":case"hrs":case"hr":case"h":return i*a;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return undefined}}function fmtShort(e){var t=Math.abs(e);if(t>=n){return Math.round(e/n)+"d"}if(t>=a){return Math.round(e/a)+"h"}if(t>=s){return Math.round(e/s)+"m"}if(t>=r){return Math.round(e/r)+"s"}return e+"ms"}function fmtLong(e){var t=Math.abs(e);if(t>=n){return plural(e,t,n,"day")}if(t>=a){return plural(e,t,a,"hour")}if(t>=s){return plural(e,t,s,"minute")}if(t>=r){return plural(e,t,r,"second")}return e+" ms"}function plural(e,r,s,a){var n=r>=s*1.5;return Math.round(e/s)+" "+a+(n?"s":"")}}};var r={};function __nccwpck_require__(s){var a=r[s];if(a!==undefined){return a.exports}var n=r[s]={exports:{}};var t=true;try{e[s](n,n.exports,__nccwpck_require__);t=false}finally{if(t)delete r[s]}return n.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var s=__nccwpck_require__(900);module.exports=s})();
@@ -1 +1 @@
1
- {"name":"ms","version":"2.1.3","description":"Tiny millisecond conversion utility","repository":"vercel/ms","main":"./index","files":["index.js"],"scripts":{"precommit":"lint-staged","lint":"eslint lib/* bin/*","test":"mocha tests.js"},"eslintConfig":{"extends":"eslint:recommended","env":{"node":true,"es6":true}},"lint-staged":{"*.js":["npm run lint","prettier --single-quote --write","git add"]},"license":"MIT","devDependencies":{"eslint":"4.18.2","expect.js":"0.3.1","husky":"0.14.3","lint-staged":"5.0.0","mocha":"4.0.1","prettier":"2.0.5"},"_lastModified":"2026-02-16T04:31:22.779Z"}
1
+ {"name":"ms","version":"2.1.3","description":"Tiny millisecond conversion utility","repository":"vercel/ms","main":"./index","files":["index.js"],"scripts":{"precommit":"lint-staged","lint":"eslint lib/* bin/*","test":"mocha tests.js"},"eslintConfig":{"extends":"eslint:recommended","env":{"node":true,"es6":true}},"lint-staged":{"*.js":["npm run lint","prettier --single-quote --write","git add"]},"license":"MIT","devDependencies":{"eslint":"4.18.2","expect.js":"0.3.1","husky":"0.14.3","lint-staged":"5.0.0","mocha":"4.0.1","prettier":"2.0.5"},"_lastModified":"2026-05-21T22:21:44.199Z"}
@@ -9,5 +9,8 @@
9
9
  export { BasicAuth } from './basic-auth';
10
10
  export { AuthModel } from './model/authenticator';
11
11
  export { presetAuthType } from '../preset';
12
+ export { defaultTokenPolicyConfig } from '../constants';
13
+ export { buildRedirectPath } from './utils/buildRedirectPath';
14
+ export type { BuildRedirectPathOptions } from './utils/buildRedirectPath';
12
15
  export { default } from './plugin';
13
16
  export * from '../constants';
@@ -39,19 +39,25 @@ var server_exports = {};
39
39
  __export(server_exports, {
40
40
  AuthModel: () => import_authenticator.AuthModel,
41
41
  BasicAuth: () => import_basic_auth.BasicAuth,
42
+ buildRedirectPath: () => import_buildRedirectPath.buildRedirectPath,
42
43
  default: () => import_plugin.default,
44
+ defaultTokenPolicyConfig: () => import_constants.defaultTokenPolicyConfig,
43
45
  presetAuthType: () => import_preset.presetAuthType
44
46
  });
45
47
  module.exports = __toCommonJS(server_exports);
46
48
  var import_basic_auth = require("./basic-auth");
47
49
  var import_authenticator = require("./model/authenticator");
48
50
  var import_preset = require("../preset");
51
+ var import_constants = require("../constants");
52
+ var import_buildRedirectPath = require("./utils/buildRedirectPath");
49
53
  var import_plugin = __toESM(require("./plugin"));
50
54
  __reExport(server_exports, require("../constants"), module.exports);
51
55
  // Annotate the CommonJS export names for ESM import in node:
52
56
  0 && (module.exports = {
53
57
  AuthModel,
54
58
  BasicAuth,
59
+ buildRedirectPath,
60
+ defaultTokenPolicyConfig,
55
61
  presetAuthType,
56
62
  ...require("../constants")
57
63
  });
@@ -41,18 +41,13 @@ class create_token_policy_config_default extends import_server.Migration {
41
41
  if (tokenPolicy) {
42
42
  this.app.authManager.tokenController.setConfig(tokenPolicy.config);
43
43
  } else {
44
- const config = {
45
- tokenExpirationTime: "1d",
46
- sessionExpirationTime: "7d",
47
- expiredTokenRenewLimit: "1d"
48
- };
49
44
  await tokenPolicyRepo.create({
50
45
  values: {
51
46
  key: import_constants.tokenPolicyRecordKey,
52
- config
47
+ config: import_constants.defaultTokenPolicyConfig
53
48
  }
54
49
  });
55
- this.app.authManager.tokenController.setConfig(config);
50
+ this.app.authManager.tokenController.setConfig(import_constants.defaultTokenPolicyConfig);
56
51
  }
57
52
  }
58
53
  }
@@ -162,18 +162,31 @@ class PluginAuthServer extends import_server.Plugin {
162
162
  });
163
163
  return;
164
164
  }
165
- const auth = await this.app.authManager.get(payload.authenticator || "basic", {
166
- getBearerToken: () => payload.token,
167
- app: this.app,
168
- db: this.app.db,
169
- cache: this.app.cache,
170
- logger: this.app.logger,
171
- log: this.app.log,
172
- throw: (...args) => {
173
- throw new Error(...args);
174
- },
175
- t: this.app.i18n.t
176
- });
165
+ let auth;
166
+ try {
167
+ auth = await this.app.authManager.get(payload.authenticator || "basic", {
168
+ getBearerToken: () => payload.token,
169
+ app: this.app,
170
+ db: this.app.db,
171
+ cache: this.app.cache,
172
+ logger: this.app.logger,
173
+ log: this.app.log,
174
+ throw: (...args) => {
175
+ throw new Error(...args);
176
+ },
177
+ t: this.app.i18n.t
178
+ });
179
+ } catch (error) {
180
+ this.app.logger.warn("ws:message:auth:token authenticator resolve failed", {
181
+ authenticator: payload.authenticator,
182
+ error: error instanceof Error ? error.message : String(error)
183
+ });
184
+ this.app.emit(`ws:removeTag`, {
185
+ clientId,
186
+ tagKey: "userId"
187
+ });
188
+ return;
189
+ }
177
190
  let user;
178
191
  try {
179
192
  user = (await auth.checkToken()).user;
@@ -311,15 +324,10 @@ class PluginAuthServer extends import_server.Plugin {
311
324
  if (res) {
312
325
  return;
313
326
  }
314
- const config = {
315
- tokenExpirationTime: "1d",
316
- sessionExpirationTime: "7d",
317
- expiredTokenRenewLimit: "1d"
318
- };
319
327
  await tokenPolicyRepo.create({
320
328
  values: {
321
329
  key: import_constants.tokenPolicyRecordKey,
322
- config
330
+ config: import_constants.defaultTokenPolicyConfig
323
331
  }
324
332
  });
325
333
  }
@@ -116,35 +116,43 @@ class TokenController {
116
116
  return data;
117
117
  }
118
118
  renew = async (jti) => {
119
- const repo = this.app.db.getRepository(import_constants.issuedTokensCollectionName);
120
119
  const model = this.app.db.getModel(import_constants.issuedTokensCollectionName);
121
- const newId = (0, import_crypto.randomUUID)();
122
- const issuedTime = Date.now();
123
- const [count] = await model.update(
124
- { jti: newId, issuedTime },
125
- { where: { jti } }
126
- );
127
- if (count === 1) {
128
- await this.cache.set(`jti-renewed-cahce:${jti}`, { jti: newId, issuedTime }, import_constants.RENEWED_JTI_CACHE_MS);
129
- this.logger.info("jti renewed", { oldJti: jti, newJti: newId, issuedTime });
130
- return { jti: newId, issuedTime };
131
- } else {
132
- const cachedJtiData = await this.cache.get(`jti-renewed-cahce:${jti}`);
133
- if (cachedJtiData) {
134
- return cachedJtiData;
135
- }
136
- this.logger.error("jti renew failed", {
137
- module: "auth",
138
- submodule: "token-controller",
139
- method: "renew",
140
- jti,
141
- code: import_auth.AuthErrorCode.TOKEN_RENEW_FAILED
142
- });
143
- throw new import_auth.AuthError({
144
- message: "Your session has expired. Please sign in again.",
145
- code: import_auth.AuthErrorCode.TOKEN_RENEW_FAILED
146
- });
120
+ const cacheKey = `jti-renewed-cahce:${jti}`;
121
+ const cachedJtiData = await this.cache.get(cacheKey);
122
+ if (cachedJtiData) {
123
+ return cachedJtiData;
147
124
  }
125
+ return await this.cache.wrap(
126
+ cacheKey,
127
+ async () => {
128
+ const newId = (0, import_crypto.randomUUID)();
129
+ const issuedTime = Date.now();
130
+ const [count] = await model.update(
131
+ { jti: newId, issuedTime },
132
+ { where: { jti } }
133
+ );
134
+ if (count === 1) {
135
+ this.logger.info("jti renewed", { oldJti: jti, newJti: newId, issuedTime });
136
+ return { jti: newId, issuedTime };
137
+ }
138
+ const renewedJtiData = await this.cache.get(cacheKey);
139
+ if (renewedJtiData) {
140
+ return renewedJtiData;
141
+ }
142
+ this.logger.error("jti renew failed", {
143
+ module: "auth",
144
+ submodule: "token-controller",
145
+ method: "renew",
146
+ jti,
147
+ code: import_auth.AuthErrorCode.TOKEN_RENEW_FAILED
148
+ });
149
+ throw new import_auth.AuthError({
150
+ message: "Your session has expired. Please sign in again.",
151
+ code: import_auth.AuthErrorCode.TOKEN_RENEW_FAILED
152
+ });
153
+ },
154
+ import_constants.RENEWED_JTI_CACHE_MS
155
+ );
148
156
  };
149
157
  }
150
158
  // Annotate the CommonJS export names for ESM import in node:
@@ -0,0 +1,50 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+ export interface BuildRedirectPathOptions {
10
+ /**
11
+ * The app's root public path — i.e. `process.env.APP_PUBLIC_PATH`. May
12
+ * arrive with or without a trailing slash; both are normalised.
13
+ */
14
+ appPublicPath?: string | null;
15
+ /**
16
+ * The sub-app path segment for the legacy (v1) routing scheme:
17
+ * empty string for the main app, `/apps/<name>` when running a sub-app
18
+ * under `AppSupervisor` `multiple` mode. Callers compute this from the
19
+ * `__appName` request param + `AppSupervisor.runningMode`.
20
+ */
21
+ subAppSegment?: string | null;
22
+ /**
23
+ * The raw redirect the client supplied. May be:
24
+ * - v1 basename-relative (`/admin/abc`), needs full prefix prepended.
25
+ * - v2 root-relative (`/nocobase/v2/admin/abc` or
26
+ * `/nocobase/v2/apps/<id>/admin/abc`), already absolute under the
27
+ * document root; must NOT be touched.
28
+ * - missing — falls back to `/admin`.
29
+ */
30
+ target?: string | null;
31
+ }
32
+ /**
33
+ * Build the final root-relative path that an SSO auth callback should
34
+ * redirect the browser to.
35
+ *
36
+ * v1 clients emit `redirect` as a basename-relative path (`/admin/abc`)
37
+ * and the server is expected to prepend `APP_PUBLIC_PATH` + the legacy
38
+ * sub-app segment. v2 clients emit `redirect` as an already-root-relative
39
+ * path that includes `APP_PUBLIC_PATH` and (for sub-apps) the
40
+ * `/v2/apps/<id>` segment — so any further prepending produces nonsense
41
+ * URLs like `/nocobase/apps/<id>/nocobase/v2/apps/<id>/admin/…`.
42
+ *
43
+ * Detection rule: a target is v2-shaped iff it starts with
44
+ * `appPublicPath + '/'`. The sub-app segment is irrelevant to detection
45
+ * because v2 always prefixes with `appPublicPath` regardless of sub-app
46
+ * (`/<APP_PUBLIC_PATH>/v2/...` or `/<APP_PUBLIC_PATH>/v2/apps/<id>/...`).
47
+ *
48
+ * Single export shared by all auth-related SSO plugins (CAS, SAML, …).
49
+ */
50
+ export declare function buildRedirectPath({ appPublicPath, subAppSegment, target }: BuildRedirectPathOptions): string;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
10
+ var __defProp = Object.defineProperty;
11
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
+ var __getOwnPropNames = Object.getOwnPropertyNames;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __export = (target, all) => {
15
+ for (var name in all)
16
+ __defProp(target, name, { get: all[name], enumerable: true });
17
+ };
18
+ var __copyProps = (to, from, except, desc) => {
19
+ if (from && typeof from === "object" || typeof from === "function") {
20
+ for (let key of __getOwnPropNames(from))
21
+ if (!__hasOwnProp.call(to, key) && key !== except)
22
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
23
+ }
24
+ return to;
25
+ };
26
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
+ var buildRedirectPath_exports = {};
28
+ __export(buildRedirectPath_exports, {
29
+ buildRedirectPath: () => buildRedirectPath
30
+ });
31
+ module.exports = __toCommonJS(buildRedirectPath_exports);
32
+ function buildRedirectPath({ appPublicPath, subAppSegment, target }) {
33
+ const normalizedAppPublicPath = (appPublicPath || "").replace(/\/+$/, "");
34
+ const normalizedSubAppSegment = (subAppSegment || "").replace(/\/+$/, "");
35
+ const resolvedTarget = target || "/admin";
36
+ if (normalizedAppPublicPath && (resolvedTarget === normalizedAppPublicPath || resolvedTarget.startsWith(normalizedAppPublicPath + "/"))) {
37
+ return resolvedTarget;
38
+ }
39
+ return `${normalizedAppPublicPath}${normalizedSubAppSegment}${resolvedTarget}`;
40
+ }
41
+ // Annotate the CommonJS export names for ESM import in node:
42
+ 0 && (module.exports = {
43
+ buildRedirectPath
44
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nocobase/plugin-auth",
3
- "version": "2.1.0-alpha.4",
3
+ "version": "2.1.0-alpha.40",
4
4
  "main": "./dist/server/index.js",
5
5
  "homepage": "https://docs.nocobase.com/handbook/auth",
6
6
  "homepage.ru-RU": "https://docs-ru.nocobase.com/handbook/auth",
@@ -20,6 +20,7 @@
20
20
  "@nocobase/actions": "2.x",
21
21
  "@nocobase/auth": "2.x",
22
22
  "@nocobase/client": "2.x",
23
+ "@nocobase/client-v2": "2.x",
23
24
  "@nocobase/database": "2.x",
24
25
  "@nocobase/server": "2.x",
25
26
  "@nocobase/test": "2.x"
@@ -30,9 +31,10 @@
30
31
  "description": "User authentication management, including password, SMS, and support for Single Sign-On (SSO) protocols, with extensibility.",
31
32
  "description.ru-RU": "Управление аутентификацией пользователей: пароли, SMS, поддержка протоколов единого входа (SSO) и возможность расширения.",
32
33
  "description.zh-CN": "用户认证管理,包括基础的密码认证、短信认证、SSO 协议的认证等,可扩展。",
33
- "gitHead": "32c682485e5f1878b9165be2e9de18000d98f935",
34
+ "gitHead": "e73f99dd0abefe847f2e50ff0fea1f41a82fd048",
34
35
  "keywords": [
35
36
  "Authentication",
36
37
  "Security"
37
- ]
38
+ ],
39
+ "license": "Apache-2.0"
38
40
  }
@@ -1,10 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- "use strict";(self.webpackChunk_nocobase_plugin_auth=self.webpackChunk_nocobase_plugin_auth||[]).push([["678"],{215:function(e,t,n){n.r(t),n.d(t,{Options:function(){return E},useRedirect:function(){return m},useSignUp:function(){return P},useSignIn:function(){return d},SignInForm:function(){return b},SignUpForm:function(){return O}});var r=n(772),o=n(156),i=n.n(o),a=n(551),s=n(128),l=n(505),u=n(581);function c(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function p(e,t,n,r,o,i,a){try{var s=e[i](a),l=s.value}catch(e){n(e);return}s.done?t(l):Promise.resolve(l).then(r,o)}function m(){arguments.length>0&&void 0!==arguments[0]&&arguments[0];var e,t=(0,s.useNavigate)(),n=(e=(0,s.useSearchParams)(),function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var i=[],a=!0,s=!1;try{for(o=o.call(e);!(a=(n=o.next()).done)&&(i.push(n.value),i.length!==t);a=!0);}catch(e){s=!0,r=e}finally{try{a||null==o.return||o.return()}finally{if(s)throw r}}return i}}(e,1)||function(e,t){if(e){if("string"==typeof e)return c(e,1);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(e,t)}}(e,1)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}())[0];return(0,o.useCallback)(function(){t(n.get("redirect")||"/admin",{replace:!0})},[t,n])}var d=function(e){var t=(0,l.useForm)(),n=(0,r.useAPIClient)(),o=m(),i=(0,r.useCurrentUserContext)().refreshAsync;return{run:function(){var r;return(r=function(){return function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){var l=[i,s];if(n)throw TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&l[0]?r.return:l[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,l[1])).done)return o;switch(r=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return a.label++,{value:l[1],done:!1};case 5:a.label++,r=l[1],l=[0];continue;case 7:l=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){a=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){a.label=l[1];break}if(6===l[0]&&a.label<o[1]){a.label=o[1],o=l;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(l);break}o[2]&&a.ops.pop(),a.trys.pop();continue}l=t.call(e,a)}catch(e){l=[6,e],r=0}finally{n=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}(this,function(r){switch(r.label){case 0:return[4,t.submit()];case 1:return r.sent(),[4,n.auth.signIn(t.values,e)];case 2:return r.sent(),[4,i()];case 3:return r.sent(),o(),[2]}})},function(){var e=this,t=arguments;return new Promise(function(n,o){var i=r.apply(e,t);function a(e){p(i,n,o,a,s,"next",e)}function s(e){p(i,n,o,a,s,"throw",e)}a(void 0)})})()}}},f=function(e){var t=e.showForgotPassword;return{type:"object",name:"passwordForm","x-component":"FormV2",properties:{account:{type:"string","x-component":"Input","x-validator":'{{(value) => {\n if (!value) {\n return t("Please enter your username or email");\n }\n if (value.includes(\'@\')) {\n if (!/^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$/.test(value)) {\n return t("Please enter a valid email");\n }\n } else {\n return /^[^@<>"\'/]{1,50}$/.test(value) || t("Please enter a valid username");\n }\n }}}',"x-decorator":"FormItem","x-component-props":{placeholder:'{{t("Username/Email")}}',style:{}}},password:{type:"string","x-component":"Password",required:!0,"x-decorator":"FormItem","x-component-props":{placeholder:'{{t("Password")}}',style:{},showForgotPassword:t}},actions:{type:"void","x-component":"div",properties:{submit:{title:'{{t("Sign in")}}',type:"void","x-component":"Action","x-component-props":{htmlType:"submit",block:!0,type:"primary",useAction:"{{ useBasicSignIn }}",style:{width:"100%"}}}}},links:{type:"void","x-component":"div","x-component-props":{style:{display:"flex",justifyContent:"space-between"}},properties:{signUp:{type:"void","x-component":"Link","x-component-props":{to:"{{ signUpLink }}"},"x-content":'{{t("Create an account")}}',"x-visible":"{{ allowSignUp }}"},forgotPassword:{type:"void","x-component":"Link","x-component-props":{to:'{{"/forgot-password?name=" + authenticator.name}}'},"x-content":'{{t("Forgot password")}}',"x-visible":t}}}}}},b=function(e){var t=(0,a.o$)().t,o=e.authenticator,s=o.authType,l=o.name,c=o.options,p=!!(0,r.useLazy)(function(){return u("imported_-1ja1ffa_component",n.e("757").then(n.bind(n,247)))},"useSignUpForms")()[s]&&null!=c&&!!c.allowSignUp,m="/signup?name=".concat(l);return i().createElement(r.SchemaComponent,{schema:f({showForgotPassword:!!(null==c?void 0:c.enableResetPassword)}),scope:{useBasicSignIn:function(){return d(l)},allowSignUp:p,signUpLink:m,t:t,authenticator:o}})},y=n(875),v=n(721),h=n(238),x=n(827);function g(e,t,n,r,o,i,a){try{var s=e[i](a),l=s.value}catch(e){n(e);return}s.done?t(l):Promise.resolve(l).then(r,o)}function w(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}function S(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}var P=function(e){var t=(0,s.useNavigate)(),n=(0,l.useForm)(),o=(0,r.useAPIClient)(),i=(0,h.useTranslation)().t;return{run:function(){var r;return(r=function(){var r;return function(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){var l=[i,s];if(n)throw TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&l[0]?r.return:l[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,l[1])).done)return o;switch(r=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return a.label++,{value:l[1],done:!1};case 5:a.label++,r=l[1],l=[0];continue;case 7:l=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){a=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){a.label=l[1];break}if(6===l[0]&&a.label<o[1]){a.label=o[1],o=l;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(l);break}o[2]&&a.ops.pop(),a.trys.pop();continue}l=t.call(e,a)}catch(e){l=[6,e],r=0}finally{n=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}(this,function(a){switch(a.label){case 0:return[4,n.submit()];case 1:return a.sent(),[4,o.auth.signUp(n.values,null==e?void 0:e.authenticator)];case 2:return a.sent(),v.message.success((null==e||null==(r=e.message)?void 0:r.success)||i("Sign up successfully, and automatically jump to the sign in page")),setTimeout(function(){t("/signin")},2e3),[2]}})},function(){var e=this,t=arguments;return new Promise(function(n,o){var i=r.apply(e,t);function a(e){g(i,n,o,a,s,"next",e)}function s(e){g(i,n,o,a,s,"throw",e)}a(void 0)})})()}}},O=function(e){var t=e.authenticatorName,n=(0,a.o$)().t,u=(0,h.useTranslation)("lm-collections").t,c=(0,x.u)(t).options,p=c.signupForm,m=(0,o.useMemo)(function(){return p.filter(function(e){return e.show}).reduce(function(e,t){var r=S(w({},t.uiSchema),{title:t.uiSchema.title?u(l.Schema.compile(t.uiSchema.title,{t:n})):""});return e[t.field]=S(w({},r),{required:t.required,"x-decorator":"FormItem"}),e},{})},[p]);if(!(null==c?void 0:c.allowSignUp))return i().createElement(s.Navigate,{to:"/not-found",replace:!0});var d={type:"object",name:(0,y.uid)(),"x-component":"FormV2",properties:S(w({},m),{password:{type:"string",required:!0,title:'{{t("Password")}}',"x-component":"Password","x-decorator":"FormItem","x-validator":{password:!0},"x-component-props":{checkStrength:!0,style:{}},"x-reactions":[{dependencies:[".confirm_password"],fulfill:{state:{selfErrors:'{{$deps[0] && $self.value && $self.value !== $deps[0] ? t("Password mismatch") : ""}}'}}}]},confirm_password:{type:"string",required:!0,"x-component":"Password","x-decorator":"FormItem",title:'{{t("Confirm password")}}',"x-validator":{password:!0},"x-component-props":{style:{}},"x-reactions":[{dependencies:[".password"],fulfill:{state:{selfErrors:'{{$deps[0] && $self.value && $self.value !== $deps[0] ? t("Password mismatch") : ""}}'}}}]},actions:{type:"void","x-component":"div",properties:{submit:{title:'{{t("Sign up")}}',type:"void","x-component":"Action","x-component-props":{block:!0,type:"primary",htmlType:"submit",useAction:"{{ useBasicSignUp }}",style:{width:"100%"}}}}},link:{type:"void","x-component":"div",properties:{link:{type:"void","x-component":"Link","x-component-props":{to:"/signin"},"x-content":'{{t("Log in with an existing account")}}'}}}})};return i().createElement(r.SchemaComponent,{schema:d,scope:{useBasicSignUp:function(){return P({authenticator:t})},t:n}})},j=n(632);function F(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function C(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function T(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){C(e,t,n[t])})}return e}function k(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function A(e){return function(e){if(Array.isArray(e))return F(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return F(e,void 0);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return F(e,t)}}(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var I=function(){var e=(0,r.useRecord)(),t=(0,r.useCollectionManager)().getCollection("users").fields.filter(function(e){var t;return!e.hidden&&!e.target&&e.interface&&!(null==(t=e.uiSchema)?void 0:t["x-read-pretty"])}),n=t.map(function(e){var t;return{value:e.name,label:null==(t=e.uiSchema)?void 0:t.title}}),s=(0,o.useMemo)(function(){var n=((null==(s=e.options)||null==(a=s.public)?void 0:a.signupForm)||[]).filter(function(e){return t.find(function(t){return t.name===e.field})}),r=!0,o=!1,i=void 0;try{for(var a,s,l,u=t[Symbol.iterator]();!(r=(l=u.next()).done);r=!0)!function(){var e=l.value;n.find(function(t){return t.field===e.name})||n.push({field:e.name,show:"username"===e.name,required:"username"===e.name})}()}catch(e){o=!0,i=e}finally{try{r||null==u.return||u.return()}finally{if(o)throw i}}return n},[t,e]);return(0,o.useEffect)(function(){var t;e.options=k(T({},e.options),{public:k(T({},null==(t=e.options)?void 0:t.public),{signupForm:s})})},[e,s]),i().createElement(r.SchemaComponent,{components:{ArrayTable:j.ArrayTable},schema:{type:"void",properties:{"public.signupForm":{title:'{{t("Sign up form")}}',type:"array","x-decorator":"FormItem","x-component":"ArrayTable","x-component-props":{bordered:!1},"x-validator":"{{ (value) => {\n const check = value?.some((item) => ['username', 'email'].includes(item.field) && item.show && item.required);\n if (!check) {\n return t('At least one of the username or email fields is required');\n }\n} }}",default:s,items:{type:"object","x-decorator":"ArrayItems.Item",properties:{column0:{type:"void","x-component":"ArrayTable.Column","x-component-props":{width:20,align:"center"},properties:{sort:{type:"void","x-component":"ArrayTable.SortHandle"}}},column1:{type:"void","x-component":"ArrayTable.Column","x-component-props":{width:100,title:(0,a.KQ)("Field")},properties:{field:{type:"string","x-decorator":"FormItem","x-component":"Select",enum:n,"x-read-pretty":!0}}},column2:{type:"void","x-component":"ArrayTable.Column","x-component-props":{width:80,title:(0,a.KQ)("Show")},properties:{show:{type:"boolean","x-decorator":"FormItem","x-component":"Checkbox","x-reactions":{dependencies:[".required"],fulfill:{state:{value:"{{ $deps[0] || $self.value }}"}}}}}},column3:{type:"void","x-component":"ArrayTable.Column","x-component-props":{width:80,title:(0,a.KQ)("Required")},properties:{required:{type:"boolean","x-decorator":"FormItem","x-component":"Checkbox","x-reactions":{dependencies:[".show"],fulfill:{state:{value:"{{ !$deps[0] ? false : $self.value }}"}}}}}}}}}}}})},$=function(){var e=(0,a.o$)().t;return[(0,r.useGlobalVariable)("$env"),(0,r.useCurrentUserVariable)({maxDepth:1}).currentUserSettings,(0,r.useSystemSettingsVariable)().systemSettings,{value:"$resetLink",label:e("Reset password link")},{value:"$resetLinkExpiration",label:e("Reset link expiration (minutes)")}].filter(Boolean)},E=function(){var e=(0,a.o$)().t,t=$(),n=i().createElement("span",null,e("No notification channels found. Please "),i().createElement(s.Link,{to:"/admin/settings/notification-manager/channels"},e("add one first")),".");return i().createElement(r.SchemaComponent,{scope:{t:e},components:{Alert:v.Alert,SignupFormSettings:I,FormTab:j.FormTab},schema:{type:"object",properties:{notice:{type:"void","x-decorator":"FormItem","x-component":"Alert","x-component-props":{showIcon:!0,message:'{{t("The authentication allows users to sign in via username or email.")}}'}},collapse:{type:"void","x-component":"FormTab",properties:{basic:{type:"void","x-component":"FormTab.TabPane","x-component-props":{tab:(0,a.KQ)("Sign up settings")},properties:C({"public.allowSignUp":{"x-decorator":"FormItem",type:"boolean",title:'{{t("Allow to sign up")}}',"x-component":"Checkbox",default:!0}},(0,y.uid)(),{type:"void","x-component":"SignupFormSettings"})},forgetPassword:{type:"void","x-component":"FormTab.TabPane","x-component-props":{tab:(0,a.KQ)("Forgot password")},properties:{"public.enableResetPassword":{"x-decorator":"FormItem",type:"boolean",title:'{{t("Enable forget password")}}',"x-component":"Checkbox",default:!1},divider1:{type:"void","x-component":function(){return i().createElement(v.Divider,{orientation:"left",orientationMargin:"0"},e("1. Select notification channel"))},"x-reactions":[{dependencies:[".public.enableResetPassword"],fulfill:{state:{visible:"{{$deps[0]}}"}}}]},notificationChannel:{type:"string",title:'{{t("Notification channel (Email)")}}',required:!0,"x-decorator":"FormItem","x-component":"RemoteSelect","x-component-props":{multiple:!1,manual:!1,fieldNames:{label:"title",value:"name"},service:{resource:"notificationChannels",action:"list",params:{filter:{notificationType:"email"}}},notFoundContent:n},"x-reactions":[{dependencies:[".public.enableResetPassword"],fulfill:{state:{visible:"{{$deps[0]}}"}}}],description:'{{t("The notification channel used to send the reset password email, only support email channel")}}'},divider2:{type:"void","x-component":function(){return i().createElement(v.Divider,{orientation:"left",orientationMargin:"0"},e("2. Configure reset email"))},"x-reactions":[{dependencies:[".public.enableResetPassword"],fulfill:{state:{visible:"{{$deps[0]}}"}}}]},emailSubject:{type:"string",required:!0,title:'{{t("Subject")}}',"x-decorator":"FormItem","x-component":"Variable.TextArea","x-component-props":{scope:A(t)},"x-reactions":[{dependencies:[".public.enableResetPassword"],fulfill:{state:{visible:"{{$deps[0]}}",initialValue:'{{t("defaultResetPasswordEmailSubject")}}'}}}],default:'{{t("defaultResetPasswordEmailSubject")}}'},emailContentType:{type:"string",title:'{{t("Content type")}}',required:!0,"x-decorator":"FormItem","x-component":"Radio.Group",enum:[{label:"HTML",value:"html"},{label:'{{t("Plain text")}}',value:"text"}],default:"html","x-reactions":[{dependencies:[".public.enableResetPassword"],fulfill:{state:{visible:"{{$deps[0]}}",initialValue:"html"}}}]},emailContentHTML:{type:"string",required:!0,title:'{{t("Content")}}',"x-decorator":"FormItem","x-component":"Variable.RawTextArea","x-component-props":{scope:A(t),placeholder:"Hi,",autoSize:{minRows:10}},"x-reactions":[{dependencies:[".public.enableResetPassword",".emailContentType"],fulfill:{state:{visible:'{{$deps[0] && $deps[1] === "html"}}',initialValue:'{{t("defaultResetPasswordEmailContentHTML")}}'}}}],default:'{{t("defaultResetPasswordEmailContentHTML")}}'},emailContentText:{type:"string",required:!0,title:'{{t("Content")}}',"x-decorator":"FormItem","x-component":"Variable.RawTextArea","x-component-props":{scope:A(t),autoSize:{minRows:10}},"x-reactions":[{dependencies:[".public.enableResetPassword",".emailContentType"],fulfill:{state:{visible:'{{$deps[0] && $deps[1] === "text"}}',initialValue:'{{t("defaultResetPasswordEmailContentText")}}'}}}],default:'{{t("defaultResetPasswordEmailContentText")}}'},resetTokenExpiresIn:{type:"number",title:'{{t("Reset link expiration")}}',"x-decorator":"FormItem","x-component":"InputNumber","x-component-props":{suffix:e("Minutes"),style:{width:"100%"}},default:120,required:!0,"x-reactions":[{dependencies:[".public.enableResetPassword"],fulfill:{state:{visible:"{{$deps[0]}}",initialValue:120}}}]}}}}}}}})}}}]);
@@ -1,10 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- "use strict";(self.webpackChunk_nocobase_plugin_auth=self.webpackChunk_nocobase_plugin_auth||[]).push([["230"],{189:function(e,t,n){n.r(t),n.d(t,{Authenticator:function(){return V},useUpdateAction:function(){return _},useCreateAction:function(){return R}});var o=n(772),r=n(721),i=n(156),c=n.n(i),a=n(875),u=n(238),l=(0,i.createContext)({type:""});l.displayName="AuthTypeContext";var s=(0,i.createContext)({types:[]});function p(e,t,n,o,r,i,c){try{var a=e[i](c),u=a.value}catch(e){n(e);return}a.done?t(u):Promise.resolve(u).then(o,r)}s.displayName="AuthTypesContext";var m={name:"authenticators",sortable:!0,fields:[{name:"id",type:"string",interface:"id"},{interface:"input",type:"string",name:"name",uiSchema:{type:"string",title:'{{t("Auth UID")}}',"x-component":"Input","x-validator":function(e){return/^[a-zA-Z0-9_-]+$/.test(e)?"":o.i18n.t("a-z, A-Z, 0-9, _, -")},required:!0}},{interface:"input",type:"string",name:"authType",uiSchema:{type:"string",title:'{{t("Auth Type")}}',"x-component":"Select",dataSource:"{{ types }}",required:!0}},{interface:"input",type:"string",name:"title",uiSchema:{type:"string",title:'{{t("Title")}}',"x-component":"Input"}},{interface:"textarea",type:"string",name:"description",uiSchema:{type:"string",title:'{{t("Description")}}',"x-component":"Input"}},{type:"boolean",name:"enabled",uiSchema:{type:"boolean",title:'{{t("Enabled")}}',"x-component":"Checkbox"}}]},y={type:"object",properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues:function(e){var t,n,r=(0,o.useActionContext)(),c=(0,i.useContext)(l).type;return(0,o.useRequest)(function(){return Promise.resolve({data:{name:"s_".concat((0,a.uid)()),authType:c}})},(t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},o=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),o.forEach(function(t){var o;o=n[t],t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o})}return e}({},e),n=n={refreshDeps:[r.visible]},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n.push.apply(n,o)}return n})(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}),t))}},title:'{{t("Add new")}}',properties:{name:{"x-component":"CollectionField","x-decorator":"FormItem"},authType:{"x-component":"CollectionField","x-decorator":"FormItem","x-component-props":{options:"{{ types }}"}},title:{"x-component":"CollectionField","x-decorator":"FormItem"},description:{"x-component":"CollectionField","x-decorator":"FormItem"},enabled:{"x-component":"CollectionField","x-decorator":"FormItem"},options:{type:"object","x-component":"Options"},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useCreateAction }}"}}}}}}}},d={type:"void",name:"authenticators","x-decorator":"ResourceActionProvider","x-decorator-props":{collection:m,resourceName:"authenticators",dragSort:!0,request:{resource:"authenticators",action:"list",params:{pageSize:50,sort:"sort",appends:[]}}},"x-component":"CollectionProvider_deprecated","x-component-props":{collection:m},properties:{actions:{type:"void","x-component":"ActionBar","x-component-props":{style:{marginBottom:16}},properties:{delete:{type:"void",title:'{{t("Delete")}}',"x-component":"Action","x-component-props":{icon:"DeleteOutlined",useAction:"{{ cm.useBulkDestroyAction }}",confirm:{title:"{{t('Delete')}}",content:"{{t('Are you sure you want to delete it?')}}"}}},create:{type:"void",title:'{{t("Add new")}}',"x-component":"AddNew","x-component-props":{type:"primary"}}}},table:{type:"void","x-uid":"input","x-component":"Table.Void","x-component-props":{rowKey:"id",rowSelection:{type:"checkbox"},useDataSource:"{{ cm.useDataSourceFromRAC }}",useAction:function(){var e=(0,o.useAPIClient)(),t=(0,u.useTranslation)().t;return{move:function(n,o){var i;return(i=function(){return function(e,t){var n,o,r,i,c={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){var u=[i,a];if(n)throw TypeError("Generator is already executing.");for(;c;)try{if(n=1,o&&(r=2&u[0]?o.return:u[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,u[1])).done)return r;switch(o=0,r&&(u=[2&u[0],r.value]),u[0]){case 0:case 1:r=u;break;case 4:return c.label++,{value:u[1],done:!1};case 5:c.label++,o=u[1],u=[0];continue;case 7:u=c.ops.pop(),c.trys.pop();continue;default:if(!(r=(r=c.trys).length>0&&r[r.length-1])&&(6===u[0]||2===u[0])){c=0;continue}if(3===u[0]&&(!r||u[1]>r[0]&&u[1]<r[3])){c.label=u[1];break}if(6===u[0]&&c.label<r[1]){c.label=r[1],r=u;break}if(r&&c.label<r[2]){c.label=r[2],c.ops.push(u);break}r[2]&&c.ops.pop(),c.trys.pop();continue}u=t.call(e,c)}catch(e){u=[6,e],o=0}finally{n=r=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}(this,function(i){switch(i.label){case 0:return[4,e.resource("authenticators").move({sourceId:n.id,targetId:o.id})];case 1:return i.sent(),r.message.success(t("Saved successfully"),.2),[2]}})},function(){var e=this,t=arguments;return new Promise(function(n,o){var r=i.apply(e,t);function c(e){p(r,n,o,c,a,"next",e)}function a(e){p(r,n,o,c,a,"throw",e)}c(void 0)})})()}}}},properties:{id:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{id:{type:"number","x-component":"CollectionField","x-read-pretty":!0}}},name:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{name:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},authType:{title:'{{t("Auth Type")}}',type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{authType:{type:"string","x-component":"Select","x-read-pretty":!0,enum:"{{ types }}"}}},title:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{title:{type:"string","x-component":"CollectionField","x-read-pretty":!0}}},description:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{description:{type:"boolean","x-component":"CollectionField","x-read-pretty":!0}}},enabled:{type:"void","x-decorator":"Table.Column.Decorator","x-component":"Table.Column",properties:{enabled:{type:"boolean","x-component":"CollectionField","x-read-pretty":!0}}},actions:{type:"void",title:'{{t("Actions")}}',"x-component":"Table.Column",properties:{actions:{type:"void","x-component":"Space","x-component-props":{split:"|"},properties:{update:{type:"void",title:'{{t("Configure")}}',"x-component":"Action.Link","x-component-props":{type:"primary"},properties:{drawer:{type:"void","x-component":"Action.Drawer","x-decorator":"Form","x-decorator-props":{useValues:"{{ cm.useValuesFromRecord }}"},title:'{{t("Configure")}}',properties:{name:{"x-component":"CollectionField","x-decorator":"FormItem","x-disabled":!0},authType:{"x-component":"CollectionField","x-decorator":"FormItem","x-component-props":{options:"{{ types }}"}},title:{"x-component":"CollectionField","x-decorator":"FormItem"},description:{"x-component":"CollectionField","x-decorator":"FormItem"},enabled:{"x-component":"CollectionField","x-decorator":"FormItem"},options:{type:"object","x-component":"Options"},footer:{type:"void","x-component":"Action.Drawer.Footer",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:"{{ cm.useCancelAction }}"}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:"{{ useUpdateAction }}"}}}}}}}},delete:{type:"void",title:'{{ t("Delete") }}',"x-component":"Action.Link","x-component-props":{confirm:{title:"{{t('Delete record')}}",content:"{{t('Are you sure you want to delete it?')}}"},useAction:"{{cm.useDestroyAction}}"},"x-disabled":"{{ useCanNotDelete() }}"}}}}}}}}},f=n(482),b=n(505),x=n(239);function v(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},o=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),o.forEach(function(t){var o;o=n[t],t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o})}return e}var h=function(e){var t,n,r=(0,o.useRecord)(),c=(0,o.useRequest)(function(){return Promise.resolve({data:v({},r.options)})},(t=v({},e),n=n={manual:!0},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n.push.apply(n,o)}return n})(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}),t)),a=c.run,u=(0,o.useActionContext)();return(0,i.useEffect)(function(){u.visible&&a()},[u.visible,a]),c},O=function(e){var t,n=(0,o.usePlugin)(x.default).authTypes.get(e);return null==n||null==(t=n.components)?void 0:t.AdminSettingsForm},g=(0,b.observer)(function(){var e=(0,b.useForm)(),t=(0,o.useRecord)(),n=O(e.values.authType||t.authType);return n?c().createElement(n,null):null},{displayName:"Options"}),A=n(551);function C(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=Array(t);n<t;n++)o[n]=e[n];return o}function w(e,t,n,o,r,i,c){try{var a=e[i](c),u=a.value}catch(e){n(e);return}a.done?t(u):Promise.resolve(u).then(o,r)}function j(e){return function(){var t=this,n=arguments;return new Promise(function(o,r){var i=e.apply(t,n);function c(e){w(i,o,r,c,a,"next",e)}function a(e){w(i,o,r,c,a,"throw",e)}c(void 0)})}}function P(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},o=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(o=o.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),o.forEach(function(t){var o;o=n[t],t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o})}return e}function S(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n.push.apply(n,o)}return n})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}function D(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,o,r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var i=[],c=!0,a=!1;try{for(r=r.call(e);!(c=(n=r.next()).done)&&(i.push(n.value),!t||i.length!==t);c=!0);}catch(e){a=!0,o=e}finally{try{c||null==r.return||r.return()}finally{if(a)throw o}}return i}}(e,t)||function(e,t){if(e){if("string"==typeof e)return C(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return C(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function F(e,t){var n,o,r,i,c={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(i){return function(a){var u=[i,a];if(n)throw TypeError("Generator is already executing.");for(;c;)try{if(n=1,o&&(r=2&u[0]?o.return:u[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,u[1])).done)return r;switch(o=0,r&&(u=[2&u[0],r.value]),u[0]){case 0:case 1:r=u;break;case 4:return c.label++,{value:u[1],done:!1};case 5:c.label++,o=u[1],u=[0];continue;case 7:u=c.ops.pop(),c.trys.pop();continue;default:if(!(r=(r=c.trys).length>0&&r[r.length-1])&&(6===u[0]||2===u[0])){c=0;continue}if(3===u[0]&&(!r||u[1]>r[0]&&u[1]<r[3])){c.label=u[1];break}if(6===u[0]&&c.label<r[1]){c.label=r[1],r=u;break}if(r&&c.label<r[2]){c.label=r[2],c.ops.push(u);break}r[2]&&c.ops.pop(),c.trys.pop();continue}u=t.call(e,c)}catch(e){u=[6,e],o=0}finally{n=r=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}function T(e){return"string"==typeof e?e.trim():Array.isArray(e)?e.map(function(e){return T(e)}):(void 0===e?"undefined":e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e)=="object"&&null!==e?Object.fromEntries(Object.entries(e).map(function(e){var t=D(e,2);return[t[0],T(t[1])]})):e}var k=function(){var e=(0,o.useActionContext)().setVisible;return{run:function(){return j(function(){return F(this,function(t){return e(!1),[2]})})()}}},E=function(){var e=(0,u.useTranslation)().t,t=D((0,i.useState)(!1),2),n=t[0],a=t[1],p=D((0,i.useState)(""),2),m=p[0],d=p[1],b=(0,i.useContext)(s).types,x=b.map(function(e){return S(P({},e),{onClick:function(){a(!0),d(e.value)}})});return c().createElement(o.ActionContextProvider,{value:{visible:n,setVisible:a}},c().createElement(l.Provider,{value:{type:m}},c().createElement(r.Dropdown,{menu:{items:x}},c().createElement(r.Button,{icon:c().createElement(f.PlusOutlined,null),type:"primary"},e("Add new")," ",c().createElement(f.DownOutlined,null))),c().createElement(o.SchemaComponent,{scope:{useCloseAction:k,types:b,setType:d,useCreateAction:R},schema:y})))},I=function(){return(0,o.useAsyncData)().data,!1},R=function(){var e=(0,b.useForm)(),t=(0,b.useField)(),n=(0,o.useActionContext)(),r=(0,o.useResourceActionContext)().refresh,i=(0,o.useResourceContext)().resource;return{run:function(){return j(function(){var o;return F(this,function(c){switch(c.label){case 0:return c.trys.push([0,3,,4]),[4,e.submit()];case 1:return c.sent(),t.data=t.data||{},t.data.loading=!0,o=e.values.options||{},[4,i.create({values:S(P({},e.values),{options:T(o)})})];case 2:return c.sent(),n.setVisible(!1),t.data.loading=!1,r(),[3,4];case 3:return c.sent(),t.data&&(t.data.loading=!1),[3,4];case 4:return[2]}})})()}}},_=function(){var e=(0,b.useField)(),t=(0,b.useForm)(),n=(0,o.useActionContext)(),r=(0,o.useResourceActionContext)().refresh,i=(0,o.useResourceContext)(),c=i.resource,a=i.targetKey,u=(0,o.useRecord)()[a];return{run:function(){return j(function(){var o;return F(this,function(i){switch(i.label){case 0:return[4,t.submit()];case 1:i.sent(),e.data=e.data||{},e.data.loading=!0,i.label=2;case 2:return i.trys.push([2,4,5,6]),o=t.values.options||{},[4,c.update({filterByTk:u,values:S(P({},t.values),{options:T(o)})})];case 3:return i.sent(),n.setVisible(!1),r(),[3,6];case 4:return console.log(i.sent()),[3,6];case 5:return e.data.loading=!1,[7];case 6:return[2]}})})()}}},V=function(){var e=(0,A.o$)().t,t=D((0,i.useState)([]),2),n=t[0],a=t[1],u=(0,o.useAPIClient)();return(0,o.useRequest)(function(){return u.resource("authenticators").listTypes().then(function(t){var n;return((null==t||null==(n=t.data)?void 0:n.data)||[]).map(function(t){return{key:t.name,label:b.Schema.compile(t.title||t.name,{t:e}),value:t.name}})})},{onSuccess:function(e){a(e)}}),c().createElement(r.Card,{bordered:!1},c().createElement(s.Provider,{value:{types:n}},c().createElement(o.SchemaComponent,{schema:d,components:{AddNew:E,Options:g},scope:{types:n,useValuesFromOptions:h,useCanNotDelete:I,t:e,useUpdateAction:_}})))}}}]);
@@ -1,10 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- "use strict";(self.webpackChunk_nocobase_plugin_auth=self.webpackChunk_nocobase_plugin_auth||[]).push([["757"],{247:function(e,t,n){n.r(t),n.d(t,{AuthLayout:function(){return p},SignInPage:function(){return w},SignUpPage:function(){return I},SignupPageContext:function(){return j},useSignInButtons:function(){return P},useSignUpForms:function(){return C},AuthenticatorsContextProvider:function(){return m},useSignInForms:function(){return T},SignupPageProvider:function(){return A}});var r=n(964),a=n(772),o=n(721),u=n(156),i=n.n(u),l=n(128),c=n(238),f=n(827);function s(){var e,t,n=(e=["\n position: absolute;\n bottom: 0;\n width: 100%;\n left: 0;\n text-align: center;\n padding-bottom: 24px;\n background-color: ",";\n "],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return s=function(){return n},n}var m=function(e){var t=e.children,n=(0,a.useAPIClient)(),r=(0,a.useRequest)(function(){return n.resource("authenticators").publicList().then(function(e){var t;return(null==e||null==(t=e.data)?void 0:t.data)||[]})}),u=r.data,l=r.error;if(r.loading)return i().createElement("div",{style:{textAlign:"center",marginTop:20}},i().createElement(o.Spin,null));if(l)throw l;return i().createElement(f.H.Provider,{value:void 0===u?[]:u},t)};function p(){var e,t=((0,a.useSystemSettings)()||{}).data,n=(0,a.useToken)().token,o=(0,c.useTranslation)("lm-collections").t;return i().createElement("div",{style:{maxWidth:320,margin:"0 auto",paddingTop:"20vh",paddingBottom:"20vh"}},i().createElement("div",{style:{position:"fixed",top:"2em",right:"2em"}},i().createElement(a.SwitchLanguage,null)),i().createElement("h1",{style:{textAlign:"center"}},i().createElement(a.ReadPretty.TextArea,{value:o(null==t||null==(e=t.data)?void 0:e.title)})),i().createElement(m,null,i().createElement(l.Outlet,null)),i().createElement("div",{className:(0,r.css)(s(),n.colorBgContainer)},i().createElement(a.PoweredBy,null)))}var y=n(239),v=n(551),d=n(505);function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function h(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var o=[],u=!0,i=!1;try{for(a=a.call(e);!(u=(n=a.next()).done)&&(o.push(n.value),!t||o.length!==t);u=!0);}catch(e){i=!0,r=e}finally{try{u||null==a.return||a.return()}finally{if(i)throw r}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return g(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return g(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function b(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function S(){var e=b(["\n display: flex;\n "]);return S=function(){return e},e}function E(){var e=b(["\n display: flex;\n "]);return E=function(){return e},e}var T=function(){var e=(0,a.usePlugin)(y.default).authTypes.getEntities(),t={},n=!0,r=!1,o=void 0;try{for(var u,i=e[Symbol.iterator]();!(n=(u=i.next()).done);n=!0){var l,c=h(u.value,2),f=c[0],s=c[1];(null==(l=s.components)?void 0:l.SignInForm)&&(t[f]=s.components.SignInForm)}}catch(e){r=!0,o=e}finally{try{n||null==i.return||i.return()}finally{if(r)throw o}}return t},P=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=(0,a.usePlugin)(y.default).authTypes.getEntities(),n={},r=!0,o=!1,u=void 0;try{for(var l,c=t[Symbol.iterator]();!(r=(l=c.next()).done);r=!0){var f,s=h(l.value,2),m=s[0],p=s[1];(null==(f=p.components)?void 0:f.SignInButton)&&(n[m]=p.components.SignInButton)}}catch(e){o=!0,u=e}finally{try{r||null==c.return||c.return()}finally{if(o)throw u}}var v=Object.keys(n);return e.filter(function(e){return v.includes(e.authType)}).map(function(e,t){return i().createElement(n[e.authType],{key:t,authenticator:e})})},w=function(){var e=(0,v.o$)().t;(0,a.useCurrentDocumentTitle)("Signin"),(0,a.useViewport)();var t=T(),n=(0,u.useContext)(f.H),l=P(n);if(!n.length)return i().createElement("div",{style:{color:"#ccc"}},e("No authentication methods available."));var c=n.map(function(n){var r=t[n.authType];if(r){var a="".concat(e("Sign-in")," (").concat(d.Schema.compile(n.authTypeTitle||n.authType,{t:e}),")");return function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}({component:(0,u.createElement)(r,{authenticator:n}),tabTitle:n.title||a},n)}}).filter(function(e){return e});return i().createElement(o.Space,{direction:"vertical",className:(0,r.css)(S())},c.length>1?i().createElement(o.Tabs,{items:c.map(function(e){return{label:e.tabTitle,key:e.name,children:e.component}})}):c.length?i().createElement("div",null,c[0].component):i().createElement(i().Fragment,null),i().createElement(o.Space,{direction:"vertical",className:(0,r.css)(E())},l))};function x(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function O(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,a=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=a){var o=[],u=!0,i=!1;try{for(a=a.call(e);!(u=(n=a.next()).done)&&(o.push(n.value),!t||o.length!==t);u=!0);}catch(e){i=!0,r=e}finally{try{u||null==a.return||a.return()}finally{if(i)throw r}}return o}}(e,t)||function(e,t){if(e){if("string"==typeof e)return x(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return x(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var j=(0,u.createContext)({});j.displayName="SignupPageContext";var A=function(e){var t=(0,u.useContext)(j);return t[e.authType]={component:e.component},i().createElement(j.Provider,{value:t},e.children)},C=function(){var e=(0,a.usePlugin)(y.default).authTypes.getEntities(),t={},n=!0,r=!1,o=void 0;try{for(var u,i=e[Symbol.iterator]();!(n=(u=i.next()).done);n=!0){var l,c=O(u.value,2),f=c[0],s=c[1];(null==(l=s.components)?void 0:l.SignUpForm)&&(t[f]=s.components.SignUpForm)}}catch(e){r=!0,o=e}finally{try{n||null==i.return||i.return()}finally{if(r)throw o}}return t},I=function(){(0,a.useViewport)(),(0,a.useCurrentDocumentTitle)("Signup");var e=C(),t=O((0,l.useSearchParams)(),1)[0].get("name"),n=((0,f.u)(t)||{}).authType;return e[n]?(0,u.createElement)(e[n],{authenticatorName:t}):i().createElement(l.Navigate,{to:"/not-found",replace:!0})}}}]);
@@ -1,10 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- (self.webpackChunk_nocobase_plugin_auth=self.webpackChunk_nocobase_plugin_auth||[]).push([["157"],{262:function(e,t,n){"use strict";n.r(t),n.d(t,{TokenPolicySettings:function(){return I}});var r,o=n(156),i=n.n(o),a=n(772),s=n(721),u=n(875),c=n(584),l=n(551),f=n(505),m=n(563),p=n(83),d=n.n(p),h="token-policy-config",y="tokenControlConfig";function b(e,t,n,r,o,i,a){try{var s=e[i](a),u=s.value}catch(e){n(e);return}s.done?t(u):Promise.resolve(u).then(r,o)}function v(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var i=e.apply(t,n);function a(e){b(i,r,o,a,s,"next",e)}function s(e){b(i,r,o,a,s,"throw",e)}a(void 0)})}}function g(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function w(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function s(i){return function(s){var u=[i,s];if(n)throw TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&u[0]?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return a.label++,{value:u[1],done:!1};case 5:a.label++,r=u[1],u=[0];continue;case 7:u=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===u[0]||2===u[0])){a=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]<o[3])){a.label=u[1];break}if(6===u[0]&&a.label<o[1]){a.label=o[1],o=u;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(u);break}o[2]&&a.ops.pop(),a.trys.pop();continue}u=t.call(e,a)}catch(e){u=[6,e],r=0}finally{n=o=0}if(5&u[0])throw u[1];return{value:u[0]?u[1]:void 0,done:!0}}}}var k="useSubmitActionProps",x="useEditForm",O=(g(r={},x,function(){var e=(0,a.useAPIClient)(),t=(0,o.useMemo)(function(){return(0,m.createForm)()},[]);return(0,o.useEffect)(function(){var n;(n=v(function(){var n,r;return w(this,function(o){switch(o.label){case 0:return o.trys.push([0,2,,3]),[4,e.resource(y).get({filterByTk:h})];case 1:return(null==(r=o.sent().data)||null==(n=r.data)?void 0:n.config)&&t.setValues(r.data.config),[3,3];case 2:return console.error(o.sent()),[3,3];case 3:return[2]}})}),function(){return n.apply(this,arguments)})()},[t,e]),{form:t}}),g(r,k,function(){var e=s.App.useApp().message,t=(0,a.useAPIClient)(),n=(0,f.useForm)(),r=(0,l.o$)().t;return{type:"primary",onClick:function(){return v(function(){var o,i,a,s;return w(this,function(u){switch(u.label){case 0:if(n.clearErrors("*"),i=(o=n.values).tokenExpirationTime,a=o.sessionExpirationTime,o.expiredTokenRenewLimit,d()(i)>=d()(a))return n.setFieldState("tokenExpirationTime",function(e){e.feedbacks=[{type:"error",code:"ValidateError",messages:[r("Token validity period must be less than session validity period!")]}]}),[2];return[4,n.submit()];case 1:return u.sent(),[4,t.resource(y).update({values:{config:n.values},filterByTk:h})];case 2:return(s=u.sent())&&200===s.status&&e.success(r("Saved successfully!")),[2]}})})()}}}),r);function E(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function S(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var T=s.Select.Option,j=(0,f.connect)(function(e){var t,n=(0,l.o$)().t,r=e.value,a=e.onChange,u=e.minNum,c=function(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}(e,["value","onChange","minNum"]),f=r?r.match(/^(\d*)([a-zA-Z]*)$/):null;(0,o.useEffect)(function(){f||a("10m")},[f,a]);var m=(t=f?[parseInt(f[1]),f[2]]:[10,"m"],function(e){if(Array.isArray(e))return e}(t)||function(e,t){var n,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var i=[],a=!0,s=!1;try{for(o=o.call(e);!(a=(n=o.next()).done)&&(i.push(n.value),i.length!==t);a=!0);}catch(e){s=!0,r=e}finally{try{a||null==o.return||o.return()}finally{if(s)throw r}}return i}}(t,2)||function(e,t){if(e){if("string"==typeof e)return E(e,2);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return E(e,t)}}(t,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),p=m[0],d=m[1],h=i().createElement(s.Select,{value:d,onChange:function(e){return a("".concat(p).concat(e))},style:{width:120}},i().createElement(T,{value:"m"},n("Minutes")),i().createElement(T,{value:"h"},n("Hours")),i().createElement(T,{value:"d"},n("Days")));return i().createElement(s.InputNumber,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){S(e,t,n[t])})}return e}({value:p,addonAfter:h,min:void 0===u?1:u,onChange:function(e){return a("".concat(null!=e?e:1).concat(d))}},c))},(0,f.mapProps)({onInput:"onChange"})),A="InputTime",P=S({},A,j),C={name:(0,u.uid)(),"x-component":"FormV2","x-use-component-props":x,type:"object",properties:{sessionExpirationTime:{type:"string",title:"{{t('Session validity period')}}","x-decorator":"FormItem","x-component":A,required:!0,description:(0,c.tval)("The maximum valid time for each user login. During the session validity, the Token will be automatically updated. After the timeout, the user is required to log in again.")},tokenExpirationTime:{type:"string",title:"{{t('Token validity period')}}","x-decorator":"FormItem","x-component":A,required:!0,description:(0,c.tval)("The validity period of each issued API Token. After the Token expires, if it is within the session validity period and has not exceeded the refresh limit, the server will automatically issue a new Token to maintain the user session, otherwise the user is required to log in again. (Each Token can only be refreshed once)")},expiredTokenRenewLimit:{type:"string",title:"{{t('Expired token refresh limit')}}","x-decorator":"FormItem","x-component":A,"x-component-props":{minNum:0},required:!0,description:(0,c.tval)("The maximum time limit allowed for refreshing a Token after it expires. After this time limit, the token cannot be automatically renewed, and the user needs to log in again.")},footer:{type:"void","x-component":"ActionBar","x-component-props":{layout:"one-column"},properties:{submit:{title:'{{t("Submit")}}',"x-component":"Action","x-use-component-props":k}}}}},I=function(){var e=(0,l.o$)().t;return i().createElement(s.Card,{bordered:!1},i().createElement(a.SchemaComponent,{schema:C,scope:function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}({t:e},O),components:P}))}},83:function(e){function t(e,t,n,r){return Math.round(e/n)+" "+r+(t>=1.5*n?"s":"")}e.exports=function(e,n){n=n||{};var r,o,i,a,s=typeof e;if("string"===s&&e.length>0){var u=e;if(!((u=String(u)).length>100)){var c=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(u);if(c){var l=parseFloat(c[1]);switch((c[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*l;case"weeks":case"week":case"w":return 6048e5*l;case"days":case"day":case"d":return 864e5*l;case"hours":case"hour":case"hrs":case"hr":case"h":return 36e5*l;case"minutes":case"minute":case"mins":case"min":case"m":return 6e4*l;case"seconds":case"second":case"secs":case"sec":case"s":return 1e3*l;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return l;default:break}}}return}if("number"===s&&isFinite(e)){return n.long?(o=Math.abs(r=e))>=864e5?t(r,o,864e5,"day"):o>=36e5?t(r,o,36e5,"hour"):o>=6e4?t(r,o,6e4,"minute"):o>=1e3?t(r,o,1e3,"second"):r+" ms":(a=Math.abs(i=e))>=864e5?Math.round(i/864e5)+"d":a>=36e5?Math.round(i/36e5)+"h":a>=6e4?Math.round(i/6e4)+"m":a>=1e3?Math.round(i/1e3)+"s":i+"ms"}throw Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}}}]);