@tsingroc/tsingroc-components 3.0.2 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -104,8 +104,14 @@ interface User {
104
104
  export interface Auth extends User {
105
105
  /** 全局的 Casdoor SDK 对象。*/
106
106
  sdk: Sdk;
107
- /** 跳转到登录。*/
108
- login(): void;
107
+ /**
108
+ * 跳转到登录。
109
+ *
110
+ * 参数 `redirect` 可以填入登录完成后要跳转到的地址。如果省略,那么跳转目标将由
111
+ * {@linkcode AuthCallback} 的 {@linkcode AuthCallbackProps.onRedirect | onRedirect}
112
+ * 属性决定,默认为跳转到主页。
113
+ */
114
+ login(redirect?: string): void;
109
115
  /** 从登录页面返回时应该调用的回调。当登录状态无效时会**抛出异常**。*/
110
116
  callback(): Promise<void>;
111
117
  /** 在线检查用户是否登录。用户未登录时会**抛出异常**。*/
@@ -113,10 +119,10 @@ export interface Auth extends User {
113
119
  /**
114
120
  * 登出。
115
121
  *
116
- * 该函数只会清除全局的登录状态,不会自动做任何跳转。
117
- * 因此,在调用 {@linkcode logout} 之后,请立刻紧跟一个跳转到合适页面(通常是主页)的操作!
122
+ * 参数 `redirect` 可以填入登出后跳转到的地址。如果省略,默认为**不做任何跳转**。
123
+ * 你也可以在登出后手动加一行跳转操作,比如使用 React Router 的 `navigate`。
118
124
  */
119
- logout(): void;
125
+ logout(redirect?: string): void;
120
126
  }
121
127
  /**
122
128
  * 获取登录鉴权相关的工具函数和全局状态。必须在 {@linkcode AuthProvider} 内部才能使用。
@@ -131,8 +137,11 @@ export interface AuthProviderProps {
131
137
  * {@linkcode AuthCallback} 组件的路径。
132
138
  */
133
139
  sdkConfig: SdkConfig;
134
- /** 登录 API 的源点,末尾不带 `/`。*/
135
- signinOrigin: string;
140
+ /**
141
+ * 登录 API 的源点,末尾不带 `/`。
142
+ * @default location.origin
143
+ */
144
+ signinOrigin?: string;
136
145
  /**
137
146
  * 登陆 API 的路径。
138
147
  * @default "/api/signin"
@@ -167,7 +176,7 @@ export interface AuthCheckProps {
167
176
  loading?: ReactNode;
168
177
  /**
169
178
  * 当用户未登录或登录状态验证失败时的回调。默认会跳转到登录。
170
- * @default () => auth.login() // auth = useAuth()
179
+ * @default () => auth.login(location.href) // auth = useAuth()
171
180
  */
172
181
  onFail?: (err: unknown) => void;
173
182
  /**
@@ -187,10 +196,10 @@ export interface AuthCheckProps {
187
196
  export declare function AuthCheck(props: AuthCheckProps): ReactNode;
188
197
  export interface AuthCallbackProps {
189
198
  /**
190
- * 跳转时的回调。默认会跳转回主页。
191
- * @default () => { location.href = "/"; }
199
+ * 跳转时的回调。传入的 `redirect` 参数就是 {@linkcode Auth.login | login} 函数的参数。
200
+ * @default (redirect) => { location.href = redirect ?? "/"; }
192
201
  */
193
- onRedirect?: () => void;
202
+ onRedirect?: (redirect?: string) => void;
194
203
  /**
195
204
  * 发生错误时显示的内容。
196
205
  * @default (err) => err.toString()
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { createContext, useContext, useEffect, useMemo, useState, } from "react";
2
+ import { createContext, useContext, useEffect, useMemo, useRef, useState, } from "react";
3
3
  import { jwtDecode } from "jwt-decode";
4
4
  import Sdk from "casdoor-js-sdk";
5
5
  const AuthContext = createContext(undefined);
@@ -44,13 +44,15 @@ export function AuthProvider(props) {
44
44
  });
45
45
  const auth = useMemo(() => ({
46
46
  sdk: new Sdk(props.sdkConfig),
47
- login() {
47
+ login(redirect) {
48
48
  location.href = this.sdk.getSigninUrl();
49
- throw "unreachable";
49
+ if (redirect) {
50
+ sessionStorage.setItem("login_redirect", redirect);
51
+ }
50
52
  },
51
53
  async callback() {
52
54
  // sdk 的类型声明有误
53
- const resp = (await this.sdk.signin(props.signinOrigin, props.signinPath));
55
+ const resp = (await this.sdk.signin(props.signinOrigin ?? location.origin, props.signinPath));
54
56
  const token = resp.token;
55
57
  if (!token) {
56
58
  throw new Error("登录 API 返回了异常的结果:" + JSON.stringify(resp));
@@ -79,9 +81,12 @@ export function AuthProvider(props) {
79
81
  setUser({ ...user, userInfo: resp });
80
82
  }
81
83
  },
82
- logout() {
84
+ logout(redirect) {
83
85
  localStorage.removeItem("access_token");
84
- setTimeout(() => setUser({}), 0);
86
+ setUser({});
87
+ if (redirect) {
88
+ location.href = redirect;
89
+ }
85
90
  },
86
91
  ...user,
87
92
  }), [props.sdkConfig, props.signinOrigin, props.signinPath, user]);
@@ -96,9 +101,14 @@ export function AuthProvider(props) {
96
101
  export function AuthCheck(props) {
97
102
  const auth = useAuth("AuthCheck");
98
103
  const userInfo = auth.userInfo;
104
+ // 用于确保在 Strict Mode 下副作用也只执行一次
105
+ const effectDone = useRef(false);
99
106
  useEffect(() => {
107
+ if (effectDone.current)
108
+ return;
109
+ effectDone.current = true;
100
110
  if (!auth.userInfo) {
101
- auth.validate().catch(props.onFail ?? (() => auth.login()));
111
+ auth.validate().catch(props.onFail ?? (() => auth.login(location.href)));
102
112
  }
103
113
  // 这个副作用只在首次渲染时执行
104
114
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -123,11 +133,22 @@ export function AuthCheck(props) {
123
133
  export function AuthCallback(props) {
124
134
  const auth = useAuth("AuthCallback");
125
135
  const [error, setError] = useState();
136
+ // 用于确保在 Strict Mode 下副作用也只执行一次
137
+ const effectDone = useRef(false);
126
138
  useEffect(() => {
127
- auth.callback().then(props.onRedirect ??
128
- (() => {
129
- location.href = "/";
130
- }), setError);
139
+ if (effectDone.current)
140
+ return;
141
+ effectDone.current = true;
142
+ const redirect = sessionStorage.getItem("login_redirect");
143
+ sessionStorage.removeItem("login_redirect");
144
+ auth.callback().then(() => {
145
+ if (props.onRedirect) {
146
+ props.onRedirect(redirect ?? undefined);
147
+ }
148
+ else {
149
+ location.href = redirect ?? "/";
150
+ }
151
+ }, setError);
131
152
  // 这个副作用只在首次渲染时执行
132
153
  // eslint-disable-next-line react-hooks/exhaustive-deps
133
154
  }, []);
@@ -1 +1 @@
1
- {"version":3,"file":"Auth.js","sourceRoot":"","sources":["../../src/components/Auth.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Auth.js","sourceRoot":"","sources":["../../src/components/Auth.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tsingroc/tsingroc-components",
3
- "version": "3.0.2",
3
+ "version": "3.2.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -38,8 +38,8 @@
38
38
  },
39
39
  "devDependencies": {
40
40
  "@eslint/js": "^9.21.0",
41
- "@rsbuild/core": "^1.3.10",
42
- "@rsbuild/plugin-react": "^1.2.0",
41
+ "@rsbuild/core": "^1.3.11",
42
+ "@rsbuild/plugin-react": "^1.3.0",
43
43
  "@rspress/plugin-preview": "^2.0.0-alpha.0",
44
44
  "@types/node": "^22.14.1",
45
45
  "@types/react": "^18.3.20",