authula 0.7.13 → 0.7.14
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.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/plugins/index.js +127 -1
- package/dist/plugins/index.js.map +1 -1
- package/package.json +26 -22
package/dist/index.js
CHANGED
|
@@ -19,7 +19,7 @@ var AuthulaClient = class {
|
|
|
19
19
|
afterFetchHooks = [];
|
|
20
20
|
constructor(options) {
|
|
21
21
|
this.plugins = options.plugins || [];
|
|
22
|
-
const { plugins, ...rest } = options;
|
|
22
|
+
const { plugins: _, ...rest } = options;
|
|
23
23
|
this.config = rest;
|
|
24
24
|
for (const plugin of this.plugins) this[plugin.id] = plugin.init(this);
|
|
25
25
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/gen/models/organization-invitation-status.ts","../src/client.ts","../src/sdk.ts"],"sourcesContent":["/**\n * Generated by orval v8.23.0 🍺\n * Do not edit manually.\n * Authula API\n * Authula API - An open-source authentication solution that scales with you.\n * OpenAPI spec version: 0.1.0\n */\n\n/**\n * The type of the invitation status\n */\nexport type OrganizationInvitationStatus =\n
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/gen/models/organization-invitation-status.ts","../src/client.ts","../src/sdk.ts"],"sourcesContent":["/**\n * Generated by orval v8.23.0 🍺\n * Do not edit manually.\n * Authula API\n * Authula API - An open-source authentication solution that scales with you.\n * OpenAPI spec version: 0.1.0\n */\n\n/**\n * The type of the invitation status\n */\nexport type OrganizationInvitationStatus =\n (typeof OrganizationInvitationStatus)[keyof typeof OrganizationInvitationStatus];\n\nexport const OrganizationInvitationStatus = {\n pending: \"pending\",\n accepted: \"accepted\",\n rejected: \"rejected\",\n revoked: \"revoked\",\n expired: \"expired\",\n} as const;\n","import { parseCookie } from \"cookie\";\n\nimport type {\n FetchContext,\n AuthulaClientConfig,\n AuthulaClientOptions,\n Plugin,\n BeforeFetchHook,\n AfterFetchHook,\n} from \"./types\";\n\nexport class AuthulaClient {\n public readonly config: AuthulaClientConfig;\n private readonly plugins: Array<Plugin>;\n private readonly beforeFetchHooks: BeforeFetchHook[] = [];\n private readonly afterFetchHooks: AfterFetchHook[] = [];\n\n constructor(options: AuthulaClientOptions) {\n this.plugins = options.plugins || [];\n\n const { plugins: _, ...rest } = options;\n this.config = rest;\n\n for (const plugin of this.plugins) {\n (this as any)[plugin.id] = plugin.init(this);\n }\n }\n\n public registerBeforeFetch(hook: BeforeFetchHook): void {\n this.beforeFetchHooks.push(hook);\n }\n\n public registerAfterFetch(hook: AfterFetchHook): void {\n this.afterFetchHooks.push(hook);\n }\n\n public async runBeforeFetch(ctx: FetchContext): Promise<void> {\n for (const hook of this.beforeFetchHooks) {\n await hook(ctx);\n }\n }\n\n public async runAfterFetch(ctx: FetchContext, res: Response) {\n for (const hook of this.afterFetchHooks) {\n const result = await hook(ctx, res);\n if (result === \"retry\") {\n return \"retry\";\n }\n }\n }\n\n public getPlugin<T extends Plugin>(id: string): T | undefined {\n return this.plugins.find((plugin) => plugin.id === id) as T | undefined;\n }\n\n public async getCookie(name: string): Promise<string | undefined> {\n const all = await this.getAllCookies();\n return all ? all[name] : undefined;\n }\n\n public async getAllCookies(): Promise<Record<string, string | undefined> | undefined> {\n if (this.config.cookies) {\n try {\n const store = await this.config.cookies();\n const all = store.getAll();\n const map: Record<string, string> = {};\n for (const c of all) {\n map[c.name] = c.value;\n }\n return map;\n } catch {\n return undefined;\n }\n }\n\n if (typeof document !== \"undefined\") {\n return parseCookie(document.cookie);\n }\n\n return undefined;\n }\n}\n","import { AuthulaClient } from \"./client\";\nimport type { AuthulaClientOptions, Plugin } from \"./types\";\n\n// Helper to extract plugin methods\nexport type InferPluginMethods<P> = P extends { init: (client: any) => infer M }\n ? M\n : never;\n\nexport type ClientWithPlugins<T extends readonly Plugin[]> = AuthulaClient & {\n [P in T[number] as P[\"id\"]]: InferPluginMethods<P>;\n};\n\nexport function createClient<const T extends readonly Plugin[]>(\n options: Omit<AuthulaClientOptions, \"plugins\"> & { plugins: T },\n): ClientWithPlugins<T> {\n return new AuthulaClient(options as any) as ClientWithPlugins<T>;\n}\n"],"mappings":";;;;AAcA,MAAa,+BAA+B;CAC1C,SAAS;CACT,UAAU;CACV,UAAU;CACV,SAAS;CACT,SAAS;AACX;;;;ACTA,IAAa,gBAAb,MAA2B;CACzB,AAAgB;CAChB,AAAiB;CACjB,AAAiB,mBAAsC,CAAC;CACxD,AAAiB,kBAAoC,CAAC;CAEtD,YAAY,SAA+B;EACzC,KAAK,UAAU,QAAQ,WAAW,CAAC;EAEnC,MAAM,EAAE,SAAS,GAAG,GAAG,SAAS;EAChC,KAAK,SAAS;EAEd,KAAK,MAAM,UAAU,KAAK,SACxB,AAAC,KAAa,OAAO,MAAM,OAAO,KAAK,IAAI;CAE/C;CAEA,AAAO,oBAAoB,MAA6B;EACtD,KAAK,iBAAiB,KAAK,IAAI;CACjC;CAEA,AAAO,mBAAmB,MAA4B;EACpD,KAAK,gBAAgB,KAAK,IAAI;CAChC;CAEA,MAAa,eAAe,KAAkC;EAC5D,KAAK,MAAM,QAAQ,KAAK,kBACtB,MAAM,KAAK,GAAG;CAElB;CAEA,MAAa,cAAc,KAAmB,KAAe;EAC3D,KAAK,MAAM,QAAQ,KAAK,iBAEtB,IAAI,MADiB,KAAK,KAAK,GAAG,MACnB,SACb,OAAO;CAGb;CAEA,AAAO,UAA4B,IAA2B;EAC5D,OAAO,KAAK,QAAQ,MAAM,WAAW,OAAO,OAAO,EAAE;CACvD;CAEA,MAAa,UAAU,MAA2C;EAChE,MAAM,MAAM,MAAM,KAAK,cAAc;EACrC,OAAO,MAAM,IAAI,QAAQ;CAC3B;CAEA,MAAa,gBAAyE;EACpF,IAAI,KAAK,OAAO,SACd,IAAI;GAEF,MAAM,OAAM,MADQ,KAAK,OAAO,QAAQ,EACvB,CAAC,OAAO;GACzB,MAAM,MAA8B,CAAC;GACrC,KAAK,MAAM,KAAK,KACd,IAAI,EAAE,QAAQ,EAAE;GAElB,OAAO;EACT,QAAQ;GACN;EACF;EAGF,IAAI,OAAO,aAAa,aACtB,OAAO,YAAY,SAAS,MAAM;CAItC;AACF;;;;ACrEA,SAAgB,aACd,SACsB;CACtB,OAAO,IAAI,cAAc,OAAc;AACzC"}
|
package/dist/plugins/index.js
CHANGED
|
@@ -31,7 +31,7 @@ function wrapGenerated(mod, client) {
|
|
|
31
31
|
args[optionsIdx] = {
|
|
32
32
|
...typeof existing === "object" && existing !== null ? existing : {},
|
|
33
33
|
request: {
|
|
34
|
-
...existing?.request
|
|
34
|
+
...existing?.request,
|
|
35
35
|
...ctx
|
|
36
36
|
}
|
|
37
37
|
};
|
|
@@ -59,6 +59,13 @@ function wrapGenerated(mod, client) {
|
|
|
59
59
|
|
|
60
60
|
//#endregion
|
|
61
61
|
//#region src/gen/endpoints/access-control/access-control.ts
|
|
62
|
+
/**
|
|
63
|
+
* Generated by orval v8.23.0 🍺
|
|
64
|
+
* Do not edit manually.
|
|
65
|
+
* Authula API
|
|
66
|
+
* Authula API - An open-source authentication solution that scales with you.
|
|
67
|
+
* OpenAPI spec version: 0.1.0
|
|
68
|
+
*/
|
|
62
69
|
var access_control_exports = /* @__PURE__ */ __exportAll({
|
|
63
70
|
addRolePermission: () => addRolePermission,
|
|
64
71
|
assignUserRole: () => assignUserRole,
|
|
@@ -1088,6 +1095,13 @@ var AccessControlPlugin = class {
|
|
|
1088
1095
|
|
|
1089
1096
|
//#endregion
|
|
1090
1097
|
//#region src/gen/endpoints/admin-accounts/admin-accounts.ts
|
|
1098
|
+
/**
|
|
1099
|
+
* Generated by orval v8.23.0 🍺
|
|
1100
|
+
* Do not edit manually.
|
|
1101
|
+
* Authula API
|
|
1102
|
+
* Authula API - An open-source authentication solution that scales with you.
|
|
1103
|
+
* OpenAPI spec version: 0.1.0
|
|
1104
|
+
*/
|
|
1091
1105
|
var admin_accounts_exports = /* @__PURE__ */ __exportAll({
|
|
1092
1106
|
createAccount: () => createAccount,
|
|
1093
1107
|
deleteAccount: () => deleteAccount,
|
|
@@ -1333,6 +1347,13 @@ const useCreateAccount = (options, queryClient) => {
|
|
|
1333
1347
|
|
|
1334
1348
|
//#endregion
|
|
1335
1349
|
//#region src/gen/endpoints/admin-impersonation/admin-impersonation.ts
|
|
1350
|
+
/**
|
|
1351
|
+
* Generated by orval v8.23.0 🍺
|
|
1352
|
+
* Do not edit manually.
|
|
1353
|
+
* Authula API
|
|
1354
|
+
* Authula API - An open-source authentication solution that scales with you.
|
|
1355
|
+
* OpenAPI spec version: 0.1.0
|
|
1356
|
+
*/
|
|
1336
1357
|
var admin_impersonation_exports = /* @__PURE__ */ __exportAll({
|
|
1337
1358
|
getGetImpersonationQueryKey: () => getGetImpersonationQueryKey,
|
|
1338
1359
|
getGetImpersonationQueryOptions: () => getGetImpersonationQueryOptions,
|
|
@@ -1528,6 +1549,13 @@ const useStopImpersonation = (options, queryClient) => {
|
|
|
1528
1549
|
|
|
1529
1550
|
//#endregion
|
|
1530
1551
|
//#region src/gen/endpoints/admin-session-state/admin-session-state.ts
|
|
1552
|
+
/**
|
|
1553
|
+
* Generated by orval v8.23.0 🍺
|
|
1554
|
+
* Do not edit manually.
|
|
1555
|
+
* Authula API
|
|
1556
|
+
* Authula API - An open-source authentication solution that scales with you.
|
|
1557
|
+
* OpenAPI spec version: 0.1.0
|
|
1558
|
+
*/
|
|
1531
1559
|
var admin_session_state_exports = /* @__PURE__ */ __exportAll({
|
|
1532
1560
|
createSessionState: () => createSessionState,
|
|
1533
1561
|
deleteSessionState: () => deleteSessionState,
|
|
@@ -1821,6 +1849,13 @@ const useUpdateSessionState = (options, queryClient) => {
|
|
|
1821
1849
|
|
|
1822
1850
|
//#endregion
|
|
1823
1851
|
//#region src/gen/endpoints/admin-user-state/admin-user-state.ts
|
|
1852
|
+
/**
|
|
1853
|
+
* Generated by orval v8.23.0 🍺
|
|
1854
|
+
* Do not edit manually.
|
|
1855
|
+
* Authula API
|
|
1856
|
+
* Authula API - An open-source authentication solution that scales with you.
|
|
1857
|
+
* OpenAPI spec version: 0.1.0
|
|
1858
|
+
*/
|
|
1824
1859
|
var admin_user_state_exports = /* @__PURE__ */ __exportAll({
|
|
1825
1860
|
banUser: () => banUser,
|
|
1826
1861
|
createUserState: () => createUserState,
|
|
@@ -2201,6 +2236,13 @@ const useUnbanUser = (options, queryClient) => {
|
|
|
2201
2236
|
|
|
2202
2237
|
//#endregion
|
|
2203
2238
|
//#region src/gen/endpoints/admin-users/admin-users.ts
|
|
2239
|
+
/**
|
|
2240
|
+
* Generated by orval v8.23.0 🍺
|
|
2241
|
+
* Do not edit manually.
|
|
2242
|
+
* Authula API
|
|
2243
|
+
* Authula API - An open-source authentication solution that scales with you.
|
|
2244
|
+
* OpenAPI spec version: 0.1.0
|
|
2245
|
+
*/
|
|
2204
2246
|
var admin_users_exports = /* @__PURE__ */ __exportAll({
|
|
2205
2247
|
createUser: () => createUser,
|
|
2206
2248
|
deleteUser: () => deleteUser,
|
|
@@ -2466,6 +2508,13 @@ var AdminPlugin = class {
|
|
|
2466
2508
|
|
|
2467
2509
|
//#endregion
|
|
2468
2510
|
//#region src/gen/endpoints/api-keys/api-keys.ts
|
|
2511
|
+
/**
|
|
2512
|
+
* Generated by orval v8.23.0 🍺
|
|
2513
|
+
* Do not edit manually.
|
|
2514
|
+
* Authula API
|
|
2515
|
+
* Authula API - An open-source authentication solution that scales with you.
|
|
2516
|
+
* OpenAPI spec version: 0.1.0
|
|
2517
|
+
*/
|
|
2469
2518
|
var api_keys_exports = /* @__PURE__ */ __exportAll({
|
|
2470
2519
|
createApiKey: () => createApiKey,
|
|
2471
2520
|
deleteApiKey: () => deleteApiKey,
|
|
@@ -2825,6 +2874,13 @@ var BearerPlugin = class {
|
|
|
2825
2874
|
|
|
2826
2875
|
//#endregion
|
|
2827
2876
|
//#region src/gen/endpoints/core/core.ts
|
|
2877
|
+
/**
|
|
2878
|
+
* Generated by orval v8.23.0 🍺
|
|
2879
|
+
* Do not edit manually.
|
|
2880
|
+
* Authula API
|
|
2881
|
+
* Authula API - An open-source authentication solution that scales with you.
|
|
2882
|
+
* OpenAPI spec version: 0.1.0
|
|
2883
|
+
*/
|
|
2828
2884
|
var core_exports = /* @__PURE__ */ __exportAll({
|
|
2829
2885
|
getGetMeQueryKey: () => getGetMeQueryKey,
|
|
2830
2886
|
getGetMeQueryOptions: () => getGetMeQueryOptions,
|
|
@@ -2967,6 +3023,13 @@ var CSRFPlugin = class {
|
|
|
2967
3023
|
|
|
2968
3024
|
//#endregion
|
|
2969
3025
|
//#region src/gen/endpoints/email-password-plugin/email-password-plugin.ts
|
|
3026
|
+
/**
|
|
3027
|
+
* Generated by orval v8.23.0 🍺
|
|
3028
|
+
* Do not edit manually.
|
|
3029
|
+
* Authula API
|
|
3030
|
+
* Authula API - An open-source authentication solution that scales with you.
|
|
3031
|
+
* OpenAPI spec version: 0.1.0
|
|
3032
|
+
*/
|
|
2970
3033
|
var email_password_plugin_exports = /* @__PURE__ */ __exportAll({
|
|
2971
3034
|
changePassword: () => changePassword,
|
|
2972
3035
|
getChangePasswordMutationOptions: () => getChangePasswordMutationOptions,
|
|
@@ -3329,6 +3392,13 @@ var EmailPasswordPlugin = class {
|
|
|
3329
3392
|
|
|
3330
3393
|
//#endregion
|
|
3331
3394
|
//#region src/gen/endpoints/jwt-plugin/jwt-plugin.ts
|
|
3395
|
+
/**
|
|
3396
|
+
* Generated by orval v8.23.0 🍺
|
|
3397
|
+
* Do not edit manually.
|
|
3398
|
+
* Authula API
|
|
3399
|
+
* Authula API - An open-source authentication solution that scales with you.
|
|
3400
|
+
* OpenAPI spec version: 0.1.0
|
|
3401
|
+
*/
|
|
3332
3402
|
var jwt_plugin_exports = /* @__PURE__ */ __exportAll({
|
|
3333
3403
|
getGetJWKSQueryKey: () => getGetJWKSQueryKey,
|
|
3334
3404
|
getGetJWKSQueryOptions: () => getGetJWKSQueryOptions,
|
|
@@ -3447,6 +3517,13 @@ var JWTPlugin = class {
|
|
|
3447
3517
|
|
|
3448
3518
|
//#endregion
|
|
3449
3519
|
//#region src/gen/endpoints/magic-link-plugin/magic-link-plugin.ts
|
|
3520
|
+
/**
|
|
3521
|
+
* Generated by orval v8.23.0 🍺
|
|
3522
|
+
* Do not edit manually.
|
|
3523
|
+
* Authula API
|
|
3524
|
+
* Authula API - An open-source authentication solution that scales with you.
|
|
3525
|
+
* OpenAPI spec version: 0.1.0
|
|
3526
|
+
*/
|
|
3450
3527
|
var magic_link_plugin_exports = /* @__PURE__ */ __exportAll({
|
|
3451
3528
|
exchangeMagicLink: () => exchangeMagicLink,
|
|
3452
3529
|
getExchangeMagicLinkMutationOptions: () => getExchangeMagicLinkMutationOptions,
|
|
@@ -3619,6 +3696,13 @@ var MagicLinkPlugin = class {
|
|
|
3619
3696
|
|
|
3620
3697
|
//#endregion
|
|
3621
3698
|
//#region src/gen/endpoints/oauth2-plugin/oauth2-plugin.ts
|
|
3699
|
+
/**
|
|
3700
|
+
* Generated by orval v8.23.0 🍺
|
|
3701
|
+
* Do not edit manually.
|
|
3702
|
+
* Authula API
|
|
3703
|
+
* Authula API - An open-source authentication solution that scales with you.
|
|
3704
|
+
* OpenAPI spec version: 0.1.0
|
|
3705
|
+
*/
|
|
3622
3706
|
var oauth2_plugin_exports = /* @__PURE__ */ __exportAll({
|
|
3623
3707
|
getOauthAuthorizeQueryKey: () => getOauthAuthorizeQueryKey,
|
|
3624
3708
|
getOauthAuthorizeQueryOptions: () => getOauthAuthorizeQueryOptions,
|
|
@@ -3741,6 +3825,13 @@ var OAuth2Plugin = class {
|
|
|
3741
3825
|
|
|
3742
3826
|
//#endregion
|
|
3743
3827
|
//#region src/gen/endpoints/organizations/organizations.ts
|
|
3828
|
+
/**
|
|
3829
|
+
* Generated by orval v8.23.0 🍺
|
|
3830
|
+
* Do not edit manually.
|
|
3831
|
+
* Authula API
|
|
3832
|
+
* Authula API - An open-source authentication solution that scales with you.
|
|
3833
|
+
* OpenAPI spec version: 0.1.0
|
|
3834
|
+
*/
|
|
3744
3835
|
var organizations_exports = /* @__PURE__ */ __exportAll({
|
|
3745
3836
|
createOrganization: () => createOrganization,
|
|
3746
3837
|
deleteOrganization: () => deleteOrganization,
|
|
@@ -3990,6 +4081,13 @@ const useUpdateOrganization = (options, queryClient) => {
|
|
|
3990
4081
|
|
|
3991
4082
|
//#endregion
|
|
3992
4083
|
//#region src/gen/endpoints/organization-invitations/organization-invitations.ts
|
|
4084
|
+
/**
|
|
4085
|
+
* Generated by orval v8.23.0 🍺
|
|
4086
|
+
* Do not edit manually.
|
|
4087
|
+
* Authula API
|
|
4088
|
+
* Authula API - An open-source authentication solution that scales with you.
|
|
4089
|
+
* OpenAPI spec version: 0.1.0
|
|
4090
|
+
*/
|
|
3993
4091
|
var organization_invitations_exports = /* @__PURE__ */ __exportAll({
|
|
3994
4092
|
acceptOrganizationInvitation: () => acceptOrganizationInvitation,
|
|
3995
4093
|
createOrganizationInvitation: () => createOrganizationInvitation,
|
|
@@ -4294,6 +4392,13 @@ const useRevokeOrganizationInvitation = (options, queryClient) => {
|
|
|
4294
4392
|
|
|
4295
4393
|
//#endregion
|
|
4296
4394
|
//#region src/gen/endpoints/organization-members/organization-members.ts
|
|
4395
|
+
/**
|
|
4396
|
+
* Generated by orval v8.23.0 🍺
|
|
4397
|
+
* Do not edit manually.
|
|
4398
|
+
* Authula API
|
|
4399
|
+
* Authula API - An open-source authentication solution that scales with you.
|
|
4400
|
+
* OpenAPI spec version: 0.1.0
|
|
4401
|
+
*/
|
|
4297
4402
|
var organization_members_exports = /* @__PURE__ */ __exportAll({
|
|
4298
4403
|
addOrganizationMember: () => addOrganizationMember,
|
|
4299
4404
|
deleteOrganizationMember: () => deleteOrganizationMember,
|
|
@@ -4587,6 +4692,13 @@ const useUpdateOrganizationMember = (options, queryClient) => {
|
|
|
4587
4692
|
|
|
4588
4693
|
//#endregion
|
|
4589
4694
|
//#region src/gen/endpoints/organization-teams/organization-teams.ts
|
|
4695
|
+
/**
|
|
4696
|
+
* Generated by orval v8.23.0 🍺
|
|
4697
|
+
* Do not edit manually.
|
|
4698
|
+
* Authula API
|
|
4699
|
+
* Authula API - An open-source authentication solution that scales with you.
|
|
4700
|
+
* OpenAPI spec version: 0.1.0
|
|
4701
|
+
*/
|
|
4590
4702
|
var organization_teams_exports = /* @__PURE__ */ __exportAll({
|
|
4591
4703
|
createOrganizationTeam: () => createOrganizationTeam,
|
|
4592
4704
|
deleteOrganizationTeam: () => deleteOrganizationTeam,
|
|
@@ -4837,6 +4949,13 @@ const useUpdateOrganizationTeam = (options, queryClient) => {
|
|
|
4837
4949
|
|
|
4838
4950
|
//#endregion
|
|
4839
4951
|
//#region src/gen/endpoints/organization-team-members/organization-team-members.ts
|
|
4952
|
+
/**
|
|
4953
|
+
* Generated by orval v8.23.0 🍺
|
|
4954
|
+
* Do not edit manually.
|
|
4955
|
+
* Authula API
|
|
4956
|
+
* Authula API - An open-source authentication solution that scales with you.
|
|
4957
|
+
* OpenAPI spec version: 0.1.0
|
|
4958
|
+
*/
|
|
4840
4959
|
var organization_team_members_exports = /* @__PURE__ */ __exportAll({
|
|
4841
4960
|
addOrganizationTeamMember: () => addOrganizationTeamMember,
|
|
4842
4961
|
deleteOrganizationTeamMember: () => deleteOrganizationTeamMember,
|
|
@@ -5053,6 +5172,13 @@ var OrganizationsPlugin = class {
|
|
|
5053
5172
|
|
|
5054
5173
|
//#endregion
|
|
5055
5174
|
//#region src/gen/endpoints/totp-plugin/totp-plugin.ts
|
|
5175
|
+
/**
|
|
5176
|
+
* Generated by orval v8.23.0 🍺
|
|
5177
|
+
* Do not edit manually.
|
|
5178
|
+
* Authula API
|
|
5179
|
+
* Authula API - An open-source authentication solution that scales with you.
|
|
5180
|
+
* OpenAPI spec version: 0.1.0
|
|
5181
|
+
*/
|
|
5056
5182
|
var totp_plugin_exports = /* @__PURE__ */ __exportAll({
|
|
5057
5183
|
disableTotp: () => disableTotp,
|
|
5058
5184
|
enableTotp: () => enableTotp,
|