(data: DataInfo<Date>)
| 46 | * 将`avatar`、`username`、`nickname`、`roles`、`permissions`、`refreshToken`、`expires`这七条信息放在key值为`user-info`的localStorage里(利用`multipleTabsKey`当浏览器完全关闭后自动销毁) |
| 47 | */ |
| 48 | export function setToken(data: DataInfo<Date>) { |
| 49 | let expires = 0; |
| 50 | const { accessToken, refreshToken } = data; |
| 51 | const { isRemembered, loginDay } = useUserStoreHook(); |
| 52 | expires = new Date(data.expires).getTime(); // 如果后端直接设置时间戳,将此处代码改为expires = data.expires,然后把上面的DataInfo<Date>改成DataInfo<number>即可 |
| 53 | const cookieString = JSON.stringify({ accessToken, expires, refreshToken }); |
| 54 | |
| 55 | expires > 0 |
| 56 | ? Cookies.set(TokenKey, cookieString, { |
| 57 | expires: (expires - Date.now()) / 86400000 |
| 58 | }) |
| 59 | : Cookies.set(TokenKey, cookieString); |
| 60 | |
| 61 | Cookies.set( |
| 62 | multipleTabsKey, |
| 63 | "true", |
| 64 | isRemembered |
| 65 | ? { |
| 66 | expires: loginDay |
| 67 | } |
| 68 | : {} |
| 69 | ); |
| 70 | |
| 71 | function setUserKey({ avatar, username, nickname, roles, permissions }) { |
| 72 | useUserStoreHook().SET_AVATAR(avatar); |
| 73 | useUserStoreHook().SET_USERNAME(username); |
| 74 | useUserStoreHook().SET_NICKNAME(nickname); |
| 75 | useUserStoreHook().SET_ROLES(roles); |
| 76 | useUserStoreHook().SET_PERMS(permissions); |
| 77 | storageLocal().setItem(userKey, { |
| 78 | refreshToken, |
| 79 | expires, |
| 80 | avatar, |
| 81 | username, |
| 82 | nickname, |
| 83 | roles, |
| 84 | permissions |
| 85 | }); |
| 86 | } |
| 87 | |
| 88 | if (data.username && data.roles) { |
| 89 | const { username, roles } = data; |
| 90 | setUserKey({ |
| 91 | avatar: data?.avatar ?? "", |
| 92 | username, |
| 93 | nickname: data?.nickname ?? "", |
| 94 | roles, |
| 95 | permissions: data?.permissions ?? [] |
| 96 | }); |
| 97 | } else { |
| 98 | const avatar = |
| 99 | storageLocal().getItem<DataInfo<number>>(userKey)?.avatar ?? ""; |
| 100 | const username = |
| 101 | storageLocal().getItem<DataInfo<number>>(userKey)?.username ?? ""; |
| 102 | const nickname = |
| 103 | storageLocal().getItem<DataInfo<number>>(userKey)?.nickname ?? ""; |
| 104 | const roles = |
| 105 | storageLocal().getItem<DataInfo<number>>(userKey)?.roles ?? []; |
no test coverage detected