feat: 初始化项目并完成基础功能开发
- 完成项目初始化
- 实现用户注册、登录功能
- 完成用户管理与权限管理模块
- 开发后端 Tracker 服务器项目管理接口
- 实现日志管理接口
Change-Id: Ia4bde1c9ff600352a7ff0caca0cc50b02cad1af7
diff --git a/react-ui/src/access.ts b/react-ui/src/access.ts
new file mode 100644
index 0000000..8c11f31
--- /dev/null
+++ b/react-ui/src/access.ts
@@ -0,0 +1,55 @@
+import { checkRole, matchPermission } from './utils/permission';
+/**
+ * @see https://umijs.org/zh-CN/plugins/plugin-access
+ * */
+export default function access(initialState: { currentUser?: API.CurrentUser } | undefined) {
+ const { currentUser } = initialState ?? {};
+ const hasPerms = (perm: string) => {
+ return matchPermission(initialState?.currentUser?.permissions, perm);
+ };
+ const roleFiler = (route: { authority: string[] }) => {
+ return checkRole(initialState?.currentUser?.roles, route.authority);
+ };
+ return {
+ canAdmin: currentUser && currentUser.access === 'admin',
+ hasPerms,
+ roleFiler,
+ };
+}
+
+export function setSessionToken(
+ access_token: string | undefined,
+ refresh_token: string | undefined,
+ expireTime: number,
+): void {
+ if (access_token) {
+ localStorage.setItem('access_token', access_token);
+ } else {
+ localStorage.removeItem('access_token');
+ }
+ if (refresh_token) {
+ localStorage.setItem('refresh_token', refresh_token);
+ } else {
+ localStorage.removeItem('refresh_token');
+ }
+ localStorage.setItem('expireTime', `${expireTime}`);
+}
+
+export function getAccessToken() {
+ return localStorage.getItem('access_token');
+}
+
+export function getRefreshToken() {
+ return localStorage.getItem('refresh_token');
+}
+
+export function getTokenExpireTime() {
+ return localStorage.getItem('expireTime');
+}
+
+export function clearSessionToken() {
+ sessionStorage.removeItem('user');
+ localStorage.removeItem('access_token');
+ localStorage.removeItem('refresh_token');
+ localStorage.removeItem('expireTime');
+}