@autional/shared 0.1.0-rc.34 → 0.1.0-rc.36
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/LICENSE +661 -661
- package/package.json +1 -1
- package/src/auth/__tests__/build-login-url.test.ts +61 -14
- package/src/auth/roles.ts +32 -9
- package/src/auth/store.ts +2 -1
- package/src/components/TenantIndexGuard.tsx +20 -6
- package/src/components/TenantRootRedirect.tsx +8 -3
- package/src/components/__tests__/TenantIndexGuard.test.tsx +63 -7
- package/src/components/__tests__/TenantRootRedirect.test.tsx +7 -2
- package/src/generated/types.ts +54 -54
- package/src/hooks/__tests__/useLogout.test.tsx +25 -0
- package/src/hooks/useLogout.ts +4 -3
package/src/generated/types.ts
CHANGED
|
@@ -5257,7 +5257,7 @@ export interface ListResponsedto_WebAuthnCredentialResponse {
|
|
|
5257
5257
|
total?: number; // 总条数(平铺,便于直接读取)
|
|
5258
5258
|
}
|
|
5259
5259
|
|
|
5260
|
-
export interface
|
|
5260
|
+
export interface ListResponsegitee_com_autional_microservices_identityservice_internal_device_domain_DeviceInfo {
|
|
5261
5261
|
code?: number;
|
|
5262
5262
|
items?: DeviceInfo[]; // 统一使用 items
|
|
5263
5263
|
message?: string;
|
|
@@ -6643,7 +6643,7 @@ export interface DataResponsedto_Web3VerifyResponse {
|
|
|
6643
6643
|
timestamp?: string;
|
|
6644
6644
|
}
|
|
6645
6645
|
|
|
6646
|
-
export interface
|
|
6646
|
+
export interface DataResponsegitee_com_autional_microservices_identityservice_internal_device_domain_DeviceInfo {
|
|
6647
6647
|
code?: number;
|
|
6648
6648
|
data?: DeviceInfo;
|
|
6649
6649
|
message?: string;
|
|
@@ -8274,7 +8274,7 @@ export interface ClientRegistrationResponse {
|
|
|
8274
8274
|
policyUri?: string; // 隐私政策URL | @example https://app.example.com/privacy
|
|
8275
8275
|
redirectUris?: string[]; // 回调URI列表 | @example ['["https://app.example.com/callback"]']
|
|
8276
8276
|
registrationAccessToken?: string; // 注册管理Token | @example reg_abc123...
|
|
8277
|
-
registrationClientUri?: string; // 注册管理URI | @example https://
|
|
8277
|
+
registrationClientUri?: string; // 注册管理URI | @example https://api.example.com/api/v1/oauth/register/app-123
|
|
8278
8278
|
scope?: string; // 权限范围 | @example openid profile email
|
|
8279
8279
|
tokenEndpointAuthMethod?: string; // 认证方法 | @example client_secret_basic
|
|
8280
8280
|
tosUri?: string; // 服务条款URL | @example https://app.example.com/tos
|
|
@@ -8510,7 +8510,7 @@ export interface DeviceAuthorizationResponse {
|
|
|
8510
8510
|
expiresIn?: number; // @example 600
|
|
8511
8511
|
interval?: number; // @example 5
|
|
8512
8512
|
userCode?: string; // @example BDJW-DSXQ
|
|
8513
|
-
verificationUri?: string; // @example https://
|
|
8513
|
+
verificationUri?: string; // @example https://api.example.com/device
|
|
8514
8514
|
}
|
|
8515
8515
|
|
|
8516
8516
|
/** 用户在浏览器中授权设备(RFC 8628 §3.3) */
|
|
@@ -9783,7 +9783,7 @@ export interface WebhookConfigResponse {
|
|
|
9783
9783
|
// rbac-service
|
|
9784
9784
|
// ============================================================
|
|
9785
9785
|
|
|
9786
|
-
export interface
|
|
9786
|
+
export interface ListResponsegitee_com_autional_microservices_rbacservice_internal_handler_dto_ApprovalRequestResponse {
|
|
9787
9787
|
code?: number;
|
|
9788
9788
|
items?: ApprovalRequestResponse[]; // 统一使用 items
|
|
9789
9789
|
message?: string;
|
|
@@ -9792,7 +9792,7 @@ export interface ListResponsegitee_com_linmes_authms_microservices_rbacservice_i
|
|
|
9792
9792
|
total?: number; // 总条数(平铺,便于直接读取)
|
|
9793
9793
|
}
|
|
9794
9794
|
|
|
9795
|
-
export interface
|
|
9795
|
+
export interface ListResponsegitee_com_autional_microservices_rbacservice_internal_handler_dto_PermissionResponse {
|
|
9796
9796
|
code?: number;
|
|
9797
9797
|
items?: PermissionResponse[]; // 统一使用 items
|
|
9798
9798
|
message?: string;
|
|
@@ -9801,7 +9801,7 @@ export interface ListResponsegitee_com_linmes_authms_microservices_rbacservice_i
|
|
|
9801
9801
|
total?: number; // 总条数(平铺,便于直接读取)
|
|
9802
9802
|
}
|
|
9803
9803
|
|
|
9804
|
-
export interface
|
|
9804
|
+
export interface ListResponsegitee_com_autional_microservices_rbacservice_internal_handler_dto_RoleResponse {
|
|
9805
9805
|
code?: number;
|
|
9806
9806
|
items?: RoleResponse[]; // 统一使用 items
|
|
9807
9807
|
message?: string;
|
|
@@ -9810,119 +9810,119 @@ export interface ListResponsegitee_com_linmes_authms_microservices_rbacservice_i
|
|
|
9810
9810
|
total?: number; // 总条数(平铺,便于直接读取)
|
|
9811
9811
|
}
|
|
9812
9812
|
|
|
9813
|
-
export interface
|
|
9813
|
+
export interface DataResponsearray_gitee_com_autional_microservices_rbacservice_internal_handler_dto_ConflictPairResponse {
|
|
9814
9814
|
code?: number;
|
|
9815
9815
|
data?: ConflictPairResponse[];
|
|
9816
9816
|
message?: string;
|
|
9817
9817
|
timestamp?: string;
|
|
9818
9818
|
}
|
|
9819
9819
|
|
|
9820
|
-
export interface
|
|
9820
|
+
export interface DataResponsearray_gitee_com_autional_microservices_rbacservice_internal_handler_dto_DefaultRoleResponse {
|
|
9821
9821
|
code?: number;
|
|
9822
9822
|
data?: DefaultRoleResponse[];
|
|
9823
9823
|
message?: string;
|
|
9824
9824
|
timestamp?: string;
|
|
9825
9825
|
}
|
|
9826
9826
|
|
|
9827
|
-
export interface
|
|
9827
|
+
export interface DataResponsearray_gitee_com_autional_microservices_rbacservice_internal_handler_dto_PermissionResponse {
|
|
9828
9828
|
code?: number;
|
|
9829
9829
|
data?: PermissionResponse[];
|
|
9830
9830
|
message?: string;
|
|
9831
9831
|
timestamp?: string;
|
|
9832
9832
|
}
|
|
9833
9833
|
|
|
9834
|
-
export interface
|
|
9834
|
+
export interface DataResponsearray_gitee_com_autional_microservices_rbacservice_internal_handler_dto_RebacRelationshipDTO {
|
|
9835
9835
|
code?: number;
|
|
9836
9836
|
data?: RebacRelationshipDTO[];
|
|
9837
9837
|
message?: string;
|
|
9838
9838
|
timestamp?: string;
|
|
9839
9839
|
}
|
|
9840
9840
|
|
|
9841
|
-
export interface
|
|
9841
|
+
export interface DataResponsearray_gitee_com_autional_microservices_rbacservice_internal_handler_dto_RoleResponse {
|
|
9842
9842
|
code?: number;
|
|
9843
9843
|
data?: RoleResponse[];
|
|
9844
9844
|
message?: string;
|
|
9845
9845
|
timestamp?: string;
|
|
9846
9846
|
}
|
|
9847
9847
|
|
|
9848
|
-
export interface
|
|
9848
|
+
export interface DataResponsegitee_com_autional_microservices_rbacservice_internal_handler_dto_ApprovalRequestResponse {
|
|
9849
9849
|
code?: number;
|
|
9850
9850
|
data?: ApprovalRequestResponse;
|
|
9851
9851
|
message?: string;
|
|
9852
9852
|
timestamp?: string;
|
|
9853
9853
|
}
|
|
9854
9854
|
|
|
9855
|
-
export interface
|
|
9855
|
+
export interface DataResponsegitee_com_autional_microservices_rbacservice_internal_handler_dto_BootstrapAdminResponse {
|
|
9856
9856
|
code?: number;
|
|
9857
9857
|
data?: BootstrapAdminResponse;
|
|
9858
9858
|
message?: string;
|
|
9859
9859
|
timestamp?: string;
|
|
9860
9860
|
}
|
|
9861
9861
|
|
|
9862
|
-
export interface
|
|
9862
|
+
export interface DataResponsegitee_com_autional_microservices_rbacservice_internal_handler_dto_ConflictPairResponse {
|
|
9863
9863
|
code?: number;
|
|
9864
9864
|
data?: ConflictPairResponse;
|
|
9865
9865
|
message?: string;
|
|
9866
9866
|
timestamp?: string;
|
|
9867
9867
|
}
|
|
9868
9868
|
|
|
9869
|
-
export interface
|
|
9869
|
+
export interface DataResponsegitee_com_autional_microservices_rbacservice_internal_handler_dto_PermissionCheckDetailResponse {
|
|
9870
9870
|
code?: number;
|
|
9871
9871
|
data?: PermissionCheckDetailResponse;
|
|
9872
9872
|
message?: string;
|
|
9873
9873
|
timestamp?: string;
|
|
9874
9874
|
}
|
|
9875
9875
|
|
|
9876
|
-
export interface
|
|
9876
|
+
export interface DataResponsegitee_com_autional_microservices_rbacservice_internal_handler_dto_PermissionCheckResponse {
|
|
9877
9877
|
code?: number;
|
|
9878
9878
|
data?: PermissionCheckResponse;
|
|
9879
9879
|
message?: string;
|
|
9880
9880
|
timestamp?: string;
|
|
9881
9881
|
}
|
|
9882
9882
|
|
|
9883
|
-
export interface
|
|
9883
|
+
export interface DataResponsegitee_com_autional_microservices_rbacservice_internal_handler_dto_PermissionResponse {
|
|
9884
9884
|
code?: number;
|
|
9885
9885
|
data?: PermissionResponse;
|
|
9886
9886
|
message?: string;
|
|
9887
9887
|
timestamp?: string;
|
|
9888
9888
|
}
|
|
9889
9889
|
|
|
9890
|
-
export interface
|
|
9890
|
+
export interface DataResponsegitee_com_autional_microservices_rbacservice_internal_handler_dto_RebacDeleteResult {
|
|
9891
9891
|
code?: number;
|
|
9892
9892
|
data?: RebacDeleteResult;
|
|
9893
9893
|
message?: string;
|
|
9894
9894
|
timestamp?: string;
|
|
9895
9895
|
}
|
|
9896
9896
|
|
|
9897
|
-
export interface
|
|
9897
|
+
export interface DataResponsegitee_com_autional_microservices_rbacservice_internal_handler_dto_RebacRelationshipDTO {
|
|
9898
9898
|
code?: number;
|
|
9899
9899
|
data?: RebacRelationshipDTO;
|
|
9900
9900
|
message?: string;
|
|
9901
9901
|
timestamp?: string;
|
|
9902
9902
|
}
|
|
9903
9903
|
|
|
9904
|
-
export interface
|
|
9904
|
+
export interface DataResponsegitee_com_autional_microservices_rbacservice_internal_handler_dto_RoleCheckResponse {
|
|
9905
9905
|
code?: number;
|
|
9906
9906
|
data?: RoleCheckResponse;
|
|
9907
9907
|
message?: string;
|
|
9908
9908
|
timestamp?: string;
|
|
9909
9909
|
}
|
|
9910
9910
|
|
|
9911
|
-
export interface
|
|
9911
|
+
export interface DataResponsegitee_com_autional_microservices_rbacservice_internal_handler_dto_RoleResponse {
|
|
9912
9912
|
code?: number;
|
|
9913
9913
|
data?: RoleResponse;
|
|
9914
9914
|
message?: string;
|
|
9915
9915
|
timestamp?: string;
|
|
9916
9916
|
}
|
|
9917
9917
|
|
|
9918
|
-
export interface
|
|
9918
|
+
export interface DataResponsegitee_com_autional_microservices_rbacservice_internal_handler_dto_UserIDsResponse {
|
|
9919
9919
|
code?: number;
|
|
9920
9920
|
data?: UserIDsResponse;
|
|
9921
9921
|
message?: string;
|
|
9922
9922
|
timestamp?: string;
|
|
9923
9923
|
}
|
|
9924
9924
|
|
|
9925
|
-
export interface
|
|
9925
|
+
export interface DataResponsegitee_com_autional_microservices_rbacservice_internal_handler_dto_ValidateUserRolesResponse {
|
|
9926
9926
|
code?: number;
|
|
9927
9927
|
data?: ValidateUserRolesResponse;
|
|
9928
9928
|
message?: string;
|
|
@@ -10152,7 +10152,7 @@ export type Effect = "allow" | "deny";
|
|
|
10152
10152
|
// saml-service
|
|
10153
10153
|
// ============================================================
|
|
10154
10154
|
|
|
10155
|
-
export interface
|
|
10155
|
+
export interface ListResponsegitee_com_autional_microservices_samlservice_internal_handler_dto_SamlSessionItem {
|
|
10156
10156
|
code?: number;
|
|
10157
10157
|
items?: SamlSessionItem[]; // 统一使用 items
|
|
10158
10158
|
message?: string;
|
|
@@ -10161,7 +10161,7 @@ export interface ListResponsegitee_com_linmes_authms_microservices_samlservice_i
|
|
|
10161
10161
|
total?: number; // 总条数(平铺,便于直接读取)
|
|
10162
10162
|
}
|
|
10163
10163
|
|
|
10164
|
-
export interface
|
|
10164
|
+
export interface ListResponsegitee_com_autional_microservices_samlservice_internal_handler_dto_SamlUserLinkItem {
|
|
10165
10165
|
code?: number;
|
|
10166
10166
|
items?: SamlUserLinkItem[]; // 统一使用 items
|
|
10167
10167
|
message?: string;
|
|
@@ -10295,91 +10295,91 @@ export interface SamlUserLinkItem {
|
|
|
10295
10295
|
// secret-service
|
|
10296
10296
|
// ============================================================
|
|
10297
10297
|
|
|
10298
|
-
export interface
|
|
10298
|
+
export interface DataResponsearray_gitee_com_autional_microservices_secretservice_internal_handler_dto_SecretVersionResponse {
|
|
10299
10299
|
code?: number;
|
|
10300
10300
|
data?: SecretVersionResponse[];
|
|
10301
10301
|
message?: string;
|
|
10302
10302
|
timestamp?: string;
|
|
10303
10303
|
}
|
|
10304
10304
|
|
|
10305
|
-
export interface
|
|
10305
|
+
export interface DataResponsegitee_com_autional_microservices_secretservice_internal_handler_dto_BatchGetResponse {
|
|
10306
10306
|
code?: number;
|
|
10307
10307
|
data?: BatchGetResponse;
|
|
10308
10308
|
message?: string;
|
|
10309
10309
|
timestamp?: string;
|
|
10310
10310
|
}
|
|
10311
10311
|
|
|
10312
|
-
export interface
|
|
10312
|
+
export interface DataResponsegitee_com_autional_microservices_secretservice_internal_handler_dto_BatchResult {
|
|
10313
10313
|
code?: number;
|
|
10314
10314
|
data?: BatchResult;
|
|
10315
10315
|
message?: string;
|
|
10316
10316
|
timestamp?: string;
|
|
10317
10317
|
}
|
|
10318
10318
|
|
|
10319
|
-
export interface
|
|
10319
|
+
export interface DataResponsegitee_com_autional_microservices_secretservice_internal_handler_dto_EncryptionKeysDetailResponse {
|
|
10320
10320
|
code?: number;
|
|
10321
10321
|
data?: EncryptionKeysDetailResponse;
|
|
10322
10322
|
message?: string;
|
|
10323
10323
|
timestamp?: string;
|
|
10324
10324
|
}
|
|
10325
10325
|
|
|
10326
|
-
export interface
|
|
10326
|
+
export interface DataResponsegitee_com_autional_microservices_secretservice_internal_handler_dto_JWTKeyResponse {
|
|
10327
10327
|
code?: number;
|
|
10328
10328
|
data?: JWTKeyResponse;
|
|
10329
10329
|
message?: string;
|
|
10330
10330
|
timestamp?: string;
|
|
10331
10331
|
}
|
|
10332
10332
|
|
|
10333
|
-
export interface
|
|
10333
|
+
export interface DataResponsegitee_com_autional_microservices_secretservice_internal_handler_dto_JWTKeysListResponse {
|
|
10334
10334
|
code?: number;
|
|
10335
10335
|
data?: JWTKeysListResponse;
|
|
10336
10336
|
message?: string;
|
|
10337
10337
|
timestamp?: string;
|
|
10338
10338
|
}
|
|
10339
10339
|
|
|
10340
|
-
export interface
|
|
10340
|
+
export interface DataResponsegitee_com_autional_microservices_secretservice_internal_handler_dto_JWTPublicKeyResponse {
|
|
10341
10341
|
code?: number;
|
|
10342
10342
|
data?: JWTPublicKeyResponse;
|
|
10343
10343
|
message?: string;
|
|
10344
10344
|
timestamp?: string;
|
|
10345
10345
|
}
|
|
10346
10346
|
|
|
10347
|
-
export interface
|
|
10347
|
+
export interface DataResponsegitee_com_autional_microservices_secretservice_internal_handler_dto_SecretDetailResponse {
|
|
10348
10348
|
code?: number;
|
|
10349
10349
|
data?: SecretDetailResponse;
|
|
10350
10350
|
message?: string;
|
|
10351
10351
|
timestamp?: string;
|
|
10352
10352
|
}
|
|
10353
10353
|
|
|
10354
|
-
export interface
|
|
10354
|
+
export interface DataResponsegitee_com_autional_microservices_secretservice_internal_handler_dto_SecretPolicyResponse {
|
|
10355
10355
|
code?: number;
|
|
10356
10356
|
data?: SecretPolicyResponse;
|
|
10357
10357
|
message?: string;
|
|
10358
10358
|
timestamp?: string;
|
|
10359
10359
|
}
|
|
10360
10360
|
|
|
10361
|
-
export interface
|
|
10361
|
+
export interface DataResponsegitee_com_autional_microservices_secretservice_internal_handler_dto_SecretResponse {
|
|
10362
10362
|
code?: number;
|
|
10363
10363
|
data?: SecretResponse;
|
|
10364
10364
|
message?: string;
|
|
10365
10365
|
timestamp?: string;
|
|
10366
10366
|
}
|
|
10367
10367
|
|
|
10368
|
-
export interface
|
|
10368
|
+
export interface DataResponsegitee_com_autional_microservices_secretservice_internal_handler_dto_SecretValueResponse {
|
|
10369
10369
|
code?: number;
|
|
10370
10370
|
data?: SecretValueResponse;
|
|
10371
10371
|
message?: string;
|
|
10372
10372
|
timestamp?: string;
|
|
10373
10373
|
}
|
|
10374
10374
|
|
|
10375
|
-
export interface
|
|
10375
|
+
export interface DataResponsegitee_com_autional_microservices_secretservice_internal_handler_dto_TransmissionDecryptResponse {
|
|
10376
10376
|
code?: number;
|
|
10377
10377
|
data?: TransmissionDecryptResponse;
|
|
10378
10378
|
message?: string;
|
|
10379
10379
|
timestamp?: string;
|
|
10380
10380
|
}
|
|
10381
10381
|
|
|
10382
|
-
export interface
|
|
10382
|
+
export interface ListResponsegitee_com_autional_microservices_secretservice_internal_handler_dto_SecretResponse {
|
|
10383
10383
|
code?: number;
|
|
10384
10384
|
items?: SecretResponse[]; // 统一使用 items
|
|
10385
10385
|
message?: string;
|
|
@@ -12976,14 +12976,14 @@ export interface DataResponsecaptcha_Challenge {
|
|
|
12976
12976
|
timestamp?: string;
|
|
12977
12977
|
}
|
|
12978
12978
|
|
|
12979
|
-
export interface
|
|
12979
|
+
export interface DataResponsegitee_com_autional_microservices_thirdpartyservice_internal_dto_CaptchaVerifyResponse {
|
|
12980
12980
|
code?: number;
|
|
12981
12981
|
data?: CaptchaVerifyResponse;
|
|
12982
12982
|
message?: string;
|
|
12983
12983
|
timestamp?: string;
|
|
12984
12984
|
}
|
|
12985
12985
|
|
|
12986
|
-
export interface
|
|
12986
|
+
export interface DataResponsegitee_com_autional_microservices_thirdpartyservice_internal_dto_ExportUserDataResponse {
|
|
12987
12987
|
code?: number;
|
|
12988
12988
|
data?: ExportUserDataResponse;
|
|
12989
12989
|
message?: string;
|
|
@@ -13010,70 +13010,70 @@ export interface CaptchaVerifyResponse {
|
|
|
13010
13010
|
// verification-service
|
|
13011
13011
|
// ============================================================
|
|
13012
13012
|
|
|
13013
|
-
export interface
|
|
13013
|
+
export interface DataResponsegitee_com_autional_microservices_verificationservice_internal_handler_dto_AdminVerificationDetail {
|
|
13014
13014
|
code?: number;
|
|
13015
13015
|
data?: AdminVerificationDetail;
|
|
13016
13016
|
message?: string;
|
|
13017
13017
|
timestamp?: string;
|
|
13018
13018
|
}
|
|
13019
13019
|
|
|
13020
|
-
export interface
|
|
13020
|
+
export interface DataResponsegitee_com_autional_microservices_verificationservice_internal_handler_dto_BeginLivenessResponse {
|
|
13021
13021
|
code?: number;
|
|
13022
13022
|
data?: BeginLivenessResponse;
|
|
13023
13023
|
message?: string;
|
|
13024
13024
|
timestamp?: string;
|
|
13025
13025
|
}
|
|
13026
13026
|
|
|
13027
|
-
export interface
|
|
13027
|
+
export interface DataResponsegitee_com_autional_microservices_verificationservice_internal_handler_dto_GuardianRelationshipResponse {
|
|
13028
13028
|
code?: number;
|
|
13029
13029
|
data?: GuardianRelationshipResponse;
|
|
13030
13030
|
message?: string;
|
|
13031
13031
|
timestamp?: string;
|
|
13032
13032
|
}
|
|
13033
13033
|
|
|
13034
|
-
export interface
|
|
13034
|
+
export interface DataResponsegitee_com_autional_microservices_verificationservice_internal_handler_dto_LivenessResultResponse {
|
|
13035
13035
|
code?: number;
|
|
13036
13036
|
data?: LivenessResultResponse;
|
|
13037
13037
|
message?: string;
|
|
13038
13038
|
timestamp?: string;
|
|
13039
13039
|
}
|
|
13040
13040
|
|
|
13041
|
-
export interface
|
|
13041
|
+
export interface DataResponsegitee_com_autional_microservices_verificationservice_internal_handler_dto_ProviderConfigResponse {
|
|
13042
13042
|
code?: number;
|
|
13043
13043
|
data?: ProviderConfigResponse;
|
|
13044
13044
|
message?: string;
|
|
13045
13045
|
timestamp?: string;
|
|
13046
13046
|
}
|
|
13047
13047
|
|
|
13048
|
-
export interface
|
|
13048
|
+
export interface DataResponsegitee_com_autional_microservices_verificationservice_internal_handler_dto_StatsResponse {
|
|
13049
13049
|
code?: number;
|
|
13050
13050
|
data?: StatsResponse;
|
|
13051
13051
|
message?: string;
|
|
13052
13052
|
timestamp?: string;
|
|
13053
13053
|
}
|
|
13054
13054
|
|
|
13055
|
-
export interface
|
|
13055
|
+
export interface DataResponsegitee_com_autional_microservices_verificationservice_internal_handler_dto_SubmitOCRResponse {
|
|
13056
13056
|
code?: number;
|
|
13057
13057
|
data?: SubmitOCRResponse;
|
|
13058
13058
|
message?: string;
|
|
13059
13059
|
timestamp?: string;
|
|
13060
13060
|
}
|
|
13061
13061
|
|
|
13062
|
-
export interface
|
|
13062
|
+
export interface DataResponsegitee_com_autional_microservices_verificationservice_internal_handler_dto_VerificationDetailResponse {
|
|
13063
13063
|
code?: number;
|
|
13064
13064
|
data?: VerificationDetailResponse;
|
|
13065
13065
|
message?: string;
|
|
13066
13066
|
timestamp?: string;
|
|
13067
13067
|
}
|
|
13068
13068
|
|
|
13069
|
-
export interface
|
|
13069
|
+
export interface DataResponsegitee_com_autional_microservices_verificationservice_internal_handler_dto_VerificationStatusResponse {
|
|
13070
13070
|
code?: number;
|
|
13071
13071
|
data?: VerificationStatusResponse;
|
|
13072
13072
|
message?: string;
|
|
13073
13073
|
timestamp?: string;
|
|
13074
13074
|
}
|
|
13075
13075
|
|
|
13076
|
-
export interface
|
|
13076
|
+
export interface ListResponsegitee_com_autional_microservices_verificationservice_internal_handler_dto_GuardianRelationshipResponse {
|
|
13077
13077
|
code?: number;
|
|
13078
13078
|
items?: GuardianRelationshipResponse[]; // 统一使用 items
|
|
13079
13079
|
message?: string;
|
|
@@ -13082,7 +13082,7 @@ export interface ListResponsegitee_com_linmes_authms_microservices_verifications
|
|
|
13082
13082
|
total?: number; // 总条数(平铺,便于直接读取)
|
|
13083
13083
|
}
|
|
13084
13084
|
|
|
13085
|
-
export interface
|
|
13085
|
+
export interface ListResponsegitee_com_autional_microservices_verificationservice_internal_handler_dto_MinorProfileResponse {
|
|
13086
13086
|
code?: number;
|
|
13087
13087
|
items?: MinorProfileResponse[]; // 统一使用 items
|
|
13088
13088
|
message?: string;
|
|
@@ -13091,7 +13091,7 @@ export interface ListResponsegitee_com_linmes_authms_microservices_verifications
|
|
|
13091
13091
|
total?: number; // 总条数(平铺,便于直接读取)
|
|
13092
13092
|
}
|
|
13093
13093
|
|
|
13094
|
-
export interface
|
|
13094
|
+
export interface ListResponsegitee_com_autional_microservices_verificationservice_internal_handler_dto_ProviderConfigResponse {
|
|
13095
13095
|
code?: number;
|
|
13096
13096
|
items?: ProviderConfigResponse[]; // 统一使用 items
|
|
13097
13097
|
message?: string;
|
|
@@ -13100,7 +13100,7 @@ export interface ListResponsegitee_com_linmes_authms_microservices_verifications
|
|
|
13100
13100
|
total?: number; // 总条数(平铺,便于直接读取)
|
|
13101
13101
|
}
|
|
13102
13102
|
|
|
13103
|
-
export interface
|
|
13103
|
+
export interface ListResponsegitee_com_autional_microservices_verificationservice_internal_handler_dto_VerificationListItem {
|
|
13104
13104
|
code?: number;
|
|
13105
13105
|
items?: VerificationListItem[]; // 统一使用 items
|
|
13106
13106
|
message?: string;
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// ① 缺省回程 = 捕获的当前 URL(EntryRouter 据此解析租户 → /<slug>/login)
|
|
5
5
|
// ② returnUrl 覆盖:裸 /logout 无 URL 租户段时由调用方补回上下文
|
|
6
6
|
// ③ 顺序契约:先终结会话(AuthService.logout)再导航
|
|
7
|
+
// TASK-LS-08:client_id 可得 → 同源标准端点(post_logout_redirect_uri=门户根;state 携回程)
|
|
7
8
|
// ============================================================
|
|
8
9
|
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
9
10
|
import { renderHook } from '@testing-library/react';
|
|
@@ -23,6 +24,7 @@ import { useLogout } from '../useLogout';
|
|
|
23
24
|
|
|
24
25
|
beforeEach(() => {
|
|
25
26
|
vi.clearAllMocks();
|
|
27
|
+
localStorage.clear();
|
|
26
28
|
window.history.replaceState(null, '', '/demo/dashboard');
|
|
27
29
|
});
|
|
28
30
|
|
|
@@ -58,4 +60,27 @@ describe('useLogout 落点口径(AUTH-40)', () => {
|
|
|
58
60
|
'&logout=1',
|
|
59
61
|
);
|
|
60
62
|
});
|
|
63
|
+
|
|
64
|
+
// TASK-LS-08:client_id 可得(会话持久化)→ 同源标准端点(不再 legacy logout=1);
|
|
65
|
+
// 顺序契约不变:先终结会话(AuthService.logout)再导航。
|
|
66
|
+
it('client_id 可得:同源标准端点 + 门户根回跳 + state 携当前 URL,顺序仍先清再跳', async () => {
|
|
67
|
+
localStorage.setItem('oauth_client_id', 'cid-logout');
|
|
68
|
+
const { result } = renderHook(() => useLogout());
|
|
69
|
+
result.current();
|
|
70
|
+
|
|
71
|
+
await vi.waitFor(() => expect(mockTraceRedirect).toHaveBeenCalledTimes(1));
|
|
72
|
+
expect(mockLogout).toHaveBeenCalledTimes(1);
|
|
73
|
+
|
|
74
|
+
const [url, opts] = mockTraceRedirect.mock.calls[0];
|
|
75
|
+
expect(url).toBe(
|
|
76
|
+
'http://localhost:3000/oauth/api/v1/oauth/logout?client_id=cid-logout&post_logout_redirect_uri=' +
|
|
77
|
+
encodeURIComponent('http://localhost:3000/') +
|
|
78
|
+
'&state=' +
|
|
79
|
+
encodeURIComponent('http://localhost:3000/demo/dashboard'),
|
|
80
|
+
);
|
|
81
|
+
expect(opts).toMatchObject({ reason: 'logout', assign: true });
|
|
82
|
+
expect(mockLogout.mock.invocationCallOrder[0]).toBeLessThan(
|
|
83
|
+
mockTraceRedirect.mock.invocationCallOrder[0] as number,
|
|
84
|
+
);
|
|
85
|
+
});
|
|
61
86
|
});
|
package/src/hooks/useLogout.ts
CHANGED
|
@@ -31,9 +31,10 @@ export function useLogout(opts?: { returnUrl?: string }) {
|
|
|
31
31
|
const { AuthService } = await import('../auth/service');
|
|
32
32
|
await AuthService.logout();
|
|
33
33
|
|
|
34
|
-
// buildLogoutUrl
|
|
35
|
-
//
|
|
36
|
-
//
|
|
34
|
+
// buildLogoutUrl(LS-08):client_id 可得 → 同源标准端点整页导航(服务端无会话
|
|
35
|
+
// 浏览器支 302 确认页承接,确认后回跳门户根);不可得 → legacy auth 裸根 + `logout=1`
|
|
36
|
+
// 意图标记(入口路由据此先终结会话再定落点:能解析出租户 → 裸 /<slug>/login;
|
|
37
|
+
// 否则 brand 裸根)。两者都不会把带会话的回程当普通深链直送登录页(会静默重登)。
|
|
37
38
|
// funnel:用户主动行为,静默直跳(assign 保持原 href 历史语义);仅记 trace。
|
|
38
39
|
traceRedirect(buildLogoutUrl(currentUrl), { reason: 'logout', assign: true });
|
|
39
40
|
};
|