🎨 update login logic

This commit is contained in:
landaiqing
2024-11-05 17:27:05 +08:00
parent c0269dfa5a
commit 462818ff9d
19 changed files with 117 additions and 157 deletions

View File

@@ -6,7 +6,6 @@ import {service} from "@/utils/alova/service.ts";
*/ */
export const commentSubmitApi = (params: any) => { export const commentSubmitApi = (params: any) => {
return service.Post('/api/auth/comment/submit', { return service.Post('/api/auth/comment/submit', {
user_id: params.user_id,
content: params.content, content: params.content,
images: params.images, images: params.images,
topic_id: params.topic_id, topic_id: params.topic_id,
@@ -28,7 +27,6 @@ export const commentSubmitApi = (params: any) => {
*/ */
export const replySubmitApi = (params: any) => { export const replySubmitApi = (params: any) => {
return service.Post('/api/auth/reply/submit', { return service.Post('/api/auth/reply/submit', {
user_id: params.user_id,
content: params.content, content: params.content,
images: params.images, images: params.images,
topic_id: params.topic_id, topic_id: params.topic_id,
@@ -56,7 +54,6 @@ export const commentListApi = (params: any) => {
page: params.page, page: params.page,
size: params.size, size: params.size,
topic_id: params.topic_id, topic_id: params.topic_id,
user_id: params.user_id,
is_hot: params.is_hot, is_hot: params.is_hot,
}, },
{ {
@@ -81,7 +78,6 @@ export const replyListApi = (params: any) => {
size: params.size, size: params.size,
comment_id: params.comment_id, comment_id: params.comment_id,
topic_id: params.topic_id, topic_id: params.topic_id,
user_id: params.user_id,
}, },
{ {
cacheFor: { cacheFor: {
@@ -102,7 +98,6 @@ export const replyListApi = (params: any) => {
*/ */
export const replyReplySubmitApi = (params: any) => { export const replyReplySubmitApi = (params: any) => {
return service.Post('/api/auth/reply/reply/submit', { return service.Post('/api/auth/reply/reply/submit', {
user_id: params.user_id,
content: params.content, content: params.content,
images: params.images, images: params.images,
topic_id: params.topic_id, topic_id: params.topic_id,
@@ -128,7 +123,6 @@ export const replyReplySubmitApi = (params: any) => {
*/ */
export const commentLikeApi = (params: any) => { export const commentLikeApi = (params: any) => {
return service.Post('/api/auth/comment/like', { return service.Post('/api/auth/comment/like', {
user_id: params.user_id,
comment_id: params.comment_id, comment_id: params.comment_id,
topic_id: params.topic_id, topic_id: params.topic_id,
}, },
@@ -146,7 +140,7 @@ export const commentLikeApi = (params: any) => {
*/ */
export const cancelCommentLikeApi = (params: any) => { export const cancelCommentLikeApi = (params: any) => {
return service.Post('/api/auth/comment/cancel_like', { return service.Post('/api/auth/comment/cancel_like', {
user_id: params.user_id,
comment_id: params.comment_id, comment_id: params.comment_id,
topic_id: params.topic_id, topic_id: params.topic_id,
}, },

View File

@@ -21,12 +21,9 @@ export const getUserInfo = () => {
}; };
/** /**
* 刷新token * 刷新token
* @param refreshToken
*/ */
export const refreshToken = (refreshToken: string) => { export const refreshToken = () => {
return service.Post('/api/token/refresh', { return service.Post('/api/token/refresh', {}, {
refresh_token: refreshToken
}, {
meta: { meta: {
authRole: 'refreshToken', authRole: 'refreshToken',
ignoreToken: false ignoreToken: false
@@ -126,12 +123,10 @@ export const getUserPermissions = (user_id: string) => {
/** /**
* 获取用户设备信息 * 获取用户设备信息
*/ */
export const getUserDevice = (userId: string) => { export const getUserDevice = () => {
return service.Get('/api/user/get_device', return service.Get('/api/user/get_device',
{ {
params: { params: {},
user_id: userId,
},
meta: { meta: {
ignoreToken: true, ignoreToken: true,
} }

View File

@@ -2,7 +2,7 @@
<div class="comment"> <div class="comment">
<AFlex :vertical="false"> <AFlex :vertical="false">
<AFlex :vertical="true"> <AFlex :vertical="true">
<AAvatar :size="50" class="comment-avatar" shape="circle" :src="user.user.userInfo.avatar"/> <AAvatar :size="50" class="comment-avatar" shape="circle" :src="user.user.avatar"/>
</AFlex> </AFlex>
<AFlex :vertical="true" class="comment-content"> <AFlex :vertical="true" class="comment-content">
<ATextarea :rows="4" class="comment-text" @focus="onFocusHandler" <ATextarea :rows="4" class="comment-text" @focus="onFocusHandler"
@@ -163,7 +163,6 @@ async function commentSubmit(point: any) {
return `<img width="30px" height="30px" loading="lazy" src="/emoji/qq/gif/${p1}" alt="emoji ${p1}" />`; return `<img width="30px" height="30px" loading="lazy" src="/emoji/qq/gif/${p1}" alt="emoji ${p1}" />`;
}); });
const commentParams: object = { const commentParams: object = {
user_id: user.user.uid,
topic_id: topicId.value, topic_id: topicId.value,
content: contentWithEmoji, content: contentWithEmoji,
images: comment.imageList, images: comment.imageList,
@@ -177,8 +176,8 @@ async function commentSubmit(point: any) {
user_id: user.user.uid, user_id: user.user.uid,
content: result.data.content, content: result.data.content,
images: comment.imageList, images: comment.imageList,
nickname: user.user.userInfo.nickname, nickname: user.user.nickname,
avatar: user.user.userInfo.avatar, avatar: user.user.avatar,
id: result.data.id, id: result.data.id,
created_time: result.data.created_time, created_time: result.data.created_time,
browser: result.data.browser, browser: result.data.browser,

View File

@@ -180,7 +180,7 @@ import UserInfoCard from "@/components/CommentReply/src/UserInfoCard/UserInfoCar
const {t} = useI18n(); const {t} = useI18n();
const router = useRouter(); const router = useRouter();
const comment = useStore().comment; const comment = useStore().comment;
const user = useStore().user;
const topicId = ref<string>("123"); const topicId = ref<string>("123");
@@ -190,7 +190,6 @@ const topicId = ref<string>("123");
*/ */
async function getCommentList(page: number = 1, size: number = 5, hot: boolean = true) { async function getCommentList(page: number = 1, size: number = 5, hot: boolean = true) {
const params = { const params = {
user_id: user.user.uid,
topic_id: topicId.value, topic_id: topicId.value,
page: page, page: page,
size: size, size: size,
@@ -247,7 +246,6 @@ async function getReplyList(reply_id: number, page: number = 1, size: number = 5
page: page, page: page,
size: size, size: size,
comment_id: reply_id, comment_id: reply_id,
user_id: user.user.uid,
}; };
await comment.getReplyList(params); await comment.getReplyList(params);
} }
@@ -261,7 +259,6 @@ const commentLikeThrottled = useThrottleFn(commentLike, 1000);
async function commentLike(item: any) { async function commentLike(item: any) {
const params: any = { const params: any = {
comment_id: item.id, comment_id: item.id,
user_id: user.user.uid,
topic_id: topicId.value, topic_id: topicId.value,
}; };
const res: boolean = await comment.commentLike(params); const res: boolean = await comment.commentLike(params);
@@ -280,7 +277,6 @@ const cancelCommentLikeThrottled = useThrottleFn(cancelCommentLike, 1000);
async function cancelCommentLike(item: any) { async function cancelCommentLike(item: any) {
const params: any = { const params: any = {
comment_id: item.id, comment_id: item.id,
user_id: user.user.uid,
topic_id: topicId.value, topic_id: topicId.value,
}; };
const res: boolean = await comment.cancelCommentLike(params); const res: boolean = await comment.cancelCommentLike(params);

View File

@@ -170,14 +170,12 @@ async function replySubmit(point: any) {
images: any; images: any;
reply_id: number; reply_id: number;
reply_user: string; reply_user: string;
user_id: any;
author: any; author: any;
topic_id: string; topic_id: string;
content: any; content: any;
point: [number, number]; point: [number, number];
key: any; key: any;
} = { } = {
user_id: user.user.uid,
topic_id: topicId.value, topic_id: topicId.value,
content: contentWithEmoji, content: contentWithEmoji,
images: comment.imageList, images: comment.imageList,
@@ -203,8 +201,8 @@ async function replySubmit(point: any) {
likes: result.data.likes, likes: result.data.likes,
reply_count: result.data.reply_count, reply_count: result.data.reply_count,
reply_user: result.data.reply_user, reply_user: result.data.reply_user,
nickname: user.user.userInfo.nickname, nickname: user.user.nickname,
avatar: user.user.userInfo.avatar, avatar: user.user.avatar,
is_liked: false, is_liked: false,
reply_username: props.item.nickname, reply_username: props.item.nickname,
}; };

View File

@@ -150,7 +150,6 @@ import UserInfoCard from "@/components/CommentReply/src/UserInfoCard/UserInfoCar
const {t} = useI18n(); const {t} = useI18n();
const comment = useStore().comment; const comment = useStore().comment;
const user = useStore().user;
const topicId = ref<string>("123"); const topicId = ref<string>("123");
const props = defineProps({ const props = defineProps({
item: { item: {
@@ -198,7 +197,6 @@ const commentLikeThrottled = useThrottleFn(commentLike, 1000);
async function commentLike(item: any) { async function commentLike(item: any) {
const params: any = { const params: any = {
comment_id: item.id, comment_id: item.id,
user_id: user.user.uid,
topic_id: topicId.value, topic_id: topicId.value,
}; };
const res: boolean = await comment.commentLike(params); const res: boolean = await comment.commentLike(params);
@@ -217,7 +215,6 @@ const cancelCommentLikeThrottled = useThrottleFn(cancelCommentLike, 1000);
async function cancelCommentLike(item: any) { async function cancelCommentLike(item: any) {
const params: any = { const params: any = {
comment_id: item.id, comment_id: item.id,
user_id: user.user.uid,
topic_id: topicId.value, topic_id: topicId.value,
}; };
const res: boolean = await comment.cancelCommentLike(params); const res: boolean = await comment.cancelCommentLike(params);
@@ -243,7 +240,6 @@ async function getReplyList(page: number, pageSize: number) {
page: page, page: page,
size: pageSize, size: pageSize,
comment_id: props.item.id, comment_id: props.item.id,
user_id: user.user.uid,
}; };
await comment.getReplyList(params); await comment.getReplyList(params);
} }

View File

@@ -178,7 +178,6 @@ async function replyReplySubmit(point: any) {
return `<img width="30px" height="30px" loading="lazy" src="/emoji/qq/gif/${p1}" alt="emoji ${p1}" />`; return `<img width="30px" height="30px" loading="lazy" src="/emoji/qq/gif/${p1}" alt="emoji ${p1}" />`;
}); });
const replyParams: ReplyCommentParams = { const replyParams: ReplyCommentParams = {
user_id: user.user.uid,
topic_id: topicId.value, topic_id: topicId.value,
content: contentWithEmoji, content: contentWithEmoji,
images: comment.imageList, images: comment.imageList,
@@ -205,8 +204,8 @@ async function replyReplySubmit(point: any) {
likes: result.data.likes, likes: result.data.likes,
reply_count: result.data.reply_count, reply_count: result.data.reply_count,
reply_user: result.data.reply_user, reply_user: result.data.reply_user,
nickname: user.user.userInfo.nickname, nickname: user.user.nickname,
avatar: user.user.userInfo.avatar, avatar: user.user.avatar,
is_liked: false, is_liked: false,
reply_username: props.item.nickname, reply_username: props.item.nickname,
reply_to: result.data.reply_to, reply_to: result.data.reply_to,

View File

@@ -6,7 +6,7 @@
</div> </div>
<AFlex :vertical="false" class="user-info-card-name" style=""> <AFlex :vertical="false" class="user-info-card-name" style="">
<AFlex :vertical="true" justify="flex-start"> <AFlex :vertical="true" justify="flex-start">
<AAvatar :size="48" :src="users.user.userInfo.avatar" class="user-info-card-avatar"/> <AAvatar :size="48" :src="users.user.avatar" class="user-info-card-avatar"/>
</AFlex> </AFlex>
<AFlex :vertical="true" justify="flex-start" class="user-info-card-content-container"> <AFlex :vertical="true" justify="flex-start" class="user-info-card-content-container">
<AFlex :vertical="false" align="center"> <AFlex :vertical="false" align="center">

View File

@@ -15,6 +15,7 @@
margin-left: 10px; margin-left: 10px;
.user-info-card-name-text { .user-info-card-name-text {
color: var(--text-color);
font-size: 15px; font-size: 15px;
font-weight: 600; font-weight: 600;
} }

View File

@@ -40,6 +40,10 @@ const showContent = computed(() => {
borderRadius: '8px', borderRadius: '8px',
textAlign: 'start', textAlign: 'start',
transform: `translate(${props.offsetX}px, 0)`, transform: `translate(${props.offsetX}px, 0)`,
backgroundColor: 'var(--background-color)',
color: 'var(--text-color)',
border: '1px solid var(--text-color)',
boxShadow: '0 2px 8px rgba(0, 0, 0, 0.15)',
...tooltipStyle ...tooltipStyle
}" }"
:transition-duration="200" :transition-duration="200"

View File

@@ -26,7 +26,7 @@
</ADropdown> </ADropdown>
</AFlex> </AFlex>
<AFlex :vertical="false" align="center" justify="flex-start" class="header-user-container"> <AFlex :vertical="false" align="center" justify="flex-start" class="header-user-container">
<AAvatar :size="35" class="header-user-avatar" :src="user.user.userInfo.avatar"/> <AAvatar :size="35" class="header-user-avatar" :src="user.user.avatar"/>
<AButton type="text" size="small" class="header-user-btn">landaiqing</AButton> <AButton type="text" size="small" class="header-user-btn">landaiqing</AButton>
</AFlex> </AFlex>
</AFlex> </AFlex>

View File

@@ -43,7 +43,6 @@ export const useCommentStore = defineStore(
*/ */
async function getCommentList(params: any) { async function getCommentList(params: any) {
const data: any = { const data: any = {
user_id: params.user_id,
topic_id: params.topic_id, topic_id: params.topic_id,
page: params.page, page: params.page,
size: params.size, size: params.size,
@@ -94,7 +93,6 @@ export const useCommentStore = defineStore(
page: data.page, page: data.page,
size: data.size, size: data.size,
comment_id: data.comment_id, comment_id: data.comment_id,
user_id: data.user_id,
}; };
replyLoading.value = true; replyLoading.value = true;
replyList.value = {} as Comment; replyList.value = {} as Comment;
@@ -115,7 +113,6 @@ export const useCommentStore = defineStore(
async function commentLike(data: any): Promise<boolean> { async function commentLike(data: any): Promise<boolean> {
const params: any = { const params: any = {
comment_id: data.comment_id, comment_id: data.comment_id,
user_id: data.user_id,
topic_id: data.topic_id, topic_id: data.topic_id,
}; };
const result: any = await commentLikeApi(params); const result: any = await commentLikeApi(params);
@@ -133,7 +130,6 @@ export const useCommentStore = defineStore(
async function cancelCommentLike(data: any): Promise<boolean> { async function cancelCommentLike(data: any): Promise<boolean> {
const params: any = { const params: any = {
comment_id: data.comment_id, comment_id: data.comment_id,
user_id: data.user_id,
topic_id: data.topic_id, topic_id: data.topic_id,
}; };
const result: any = await cancelCommentLikeApi(params); const result: any = await cancelCommentLikeApi(params);

View File

@@ -6,20 +6,12 @@ export const useAuthStore = defineStore(
'user', 'user',
() => { () => {
const user: any = reactive({ const user: any = reactive({
accessToken: '', access_token: '',
uid: '', uid: '',
refreshToken: '',
expiresAt: 0,
userInfo: {
username: '', username: '',
nickname: '', nickname: '',
email: '',
phone: '',
avatar: '', avatar: '',
gender: '',
status: '', status: '',
created_at: '',
},
}); });
return { return {

View File

@@ -26,12 +26,9 @@ const {onAuthRequired, onResponseRefreshToken} = createServerTokenAuthentication
handler: async () => { handler: async () => {
// 刷新token // 刷新token
const user = useStore().user; const user = useStore().user;
const res: any = await refreshToken(user.user?.refreshToken); const res: any = await refreshToken();
if (res.code === 200 && res.data) { if (res.code === 200 && res.data) {
const {access_token, refresh_token, uid} = res.data; user.user.access_token = res.data;
user.user.accessToken = access_token;
user.user.refreshToken = refresh_token;
user.user.uid = uid;
} }
} }
} }
@@ -49,7 +46,7 @@ export const service = createAlova({
beforeRequest: onAuthRequired(async (method: any) => { beforeRequest: onAuthRequired(async (method: any) => {
if (!method.meta?.ignoreToken) { if (!method.meta?.ignoreToken) {
const user = useStore().user; const user = useStore().user;
method.config.headers.Authorization = `${import.meta.env.VITE_APP_TOKEN_KEY} ${user.user.accessToken}`; method.config.headers.Authorization = `${import.meta.env.VITE_APP_TOKEN_KEY} ${user.user.access_token}`;
} }
const lang = useStore().lang; const lang = useStore().lang;
method.config.headers['Accept-Language'] = lang.lang || 'zh'; method.config.headers['Accept-Language'] = lang.lang || 'zh';
@@ -78,7 +75,7 @@ export const service = createAlova({
onOk() { onOk() {
setTimeout(() => { setTimeout(() => {
window.location.href = '/login'; window.location.href = '/login';
},2000); }, 1000);
}, },
// onCancel() { // onCancel() {
// setTimeout(() => { // setTimeout(() => {

View File

@@ -38,7 +38,7 @@ const githubRedirectUrl = ref<string>('');
const giteeRedirectUrl = ref<string>(''); const giteeRedirectUrl = ref<string>('');
const qqRedirectUrl = ref<string>(''); const qqRedirectUrl = ref<string>('');
const client = useStore().client; const client = useStore().client;
const userStore = useStore().user;
/** /**
* Get the redirect url of Github OAuth * Get the redirect url of Github OAuth
*/ */
@@ -97,16 +97,15 @@ function openGithubUrl() {
const messageHandler = async (e: any) => { const messageHandler = async (e: any) => {
if (typeof e.data === 'string') { if (typeof e.data === 'string') {
const data: any = JSON.parse(e.data); const res: any = JSON.parse(e.data);
if (data.code === 200 && data.data) { if (res.code === 200 && res.data) {
const user = useStore().user; userStore.user.uid = res.data.uid;
const {access_token, refresh_token, uid, expires_at, user_info} = data.data; userStore.user.access_token = res.data.access_token;
user.user.accessToken = access_token; userStore.user.username = res.data.username;
user.user.refreshToken = refresh_token; userStore.user.avatar = res.data.avatar;
user.user.uid = uid; userStore.user.nickname = res.data.nickname;
user.user.expiresAt = expires_at; userStore.user.status = res.data.status;
user.user.userInfo = user_info; await getUserDevice();
await getUserDevice(uid);
message.success(t('login.loginSuccess')); message.success(t('login.loginSuccess'));
window.removeEventListener("message", messageHandler); window.removeEventListener("message", messageHandler);
setTimeout(() => { setTimeout(() => {
@@ -141,16 +140,15 @@ function openGiteeUrl() {
const messageHandler = async (e: any) => { const messageHandler = async (e: any) => {
if (typeof e.data === 'string') { if (typeof e.data === 'string') {
const data: any = JSON.parse(e.data); const res: any = JSON.parse(e.data);
if (data.code === 200 && data.data) { if (res.code === 200 && res.data) {
const user = useStore().user; userStore.user.uid = res.data.uid;
const {access_token, refresh_token, uid, expires_at, user_info} = data.data; userStore.user.access_token = res.data.access_token;
user.user.accessToken = access_token; userStore.user.username = res.data.username;
user.user.refreshToken = refresh_token; userStore.user.avatar = res.data.avatar;
user.user.uid = uid; userStore.user.nickname = res.data.nickname;
user.user.expiresAt = expires_at; userStore.user.status = res.data.status;
user.user.userInfo = user_info; await getUserDevice();
await getUserDevice(uid);
message.success(t('login.loginSuccess')); message.success(t('login.loginSuccess'));
window.removeEventListener("message", messageHandler); window.removeEventListener("message", messageHandler);
setTimeout(() => { setTimeout(() => {
@@ -183,16 +181,15 @@ function openQQUrl() {
const messageHandler = async (e: any) => { const messageHandler = async (e: any) => {
if (typeof e.data === 'string') { if (typeof e.data === 'string') {
const data: any = JSON.parse(e.data); const res: any = JSON.parse(e.data);
if (data.code === 200 && data.data) { if (res.code === 200 && res.data) {
const user = useStore().user; userStore.user.uid = res.data.uid;
const {access_token, refresh_token, uid, expires_at, user_info} = data.data; userStore.user.access_token = res.data.access_token;
user.user.accessToken = access_token; userStore.user.username = res.data.username;
user.user.refreshToken = refresh_token; userStore.user.avatar = res.data.avatar;
user.user.uid = uid; userStore.user.nickname = res.data.nickname;
user.user.expiresAt = expires_at; userStore.user.status = res.data.status;
user.user.userInfo = user_info; await getUserDevice();
await getUserDevice(uid);
message.success(t('login.loginSuccess')); message.success(t('login.loginSuccess'));
window.removeEventListener("message", messageHandler); window.removeEventListener("message", messageHandler);
setTimeout(() => { setTimeout(() => {

View File

@@ -207,6 +207,7 @@ const showPhoneRotateCaptcha = ref<boolean>(false);
const showAccountRotateCaptcha = ref<boolean>(false); const showAccountRotateCaptcha = ref<boolean>(false);
const captchaData = reactive({angle: 0, image: "", thumb: "", key: ""}); const captchaData = reactive({angle: 0, image: "", thumb: "", key: ""});
const loginLoading = ref<boolean>(false); const loginLoading = ref<boolean>(false);
const userStore = useStore().user;
const phoneLoginRotateEvent = { const phoneLoginRotateEvent = {
confirm: (angle: number) => { confirm: (angle: number) => {
checkPhoneLoginCaptchaDebounce(angle); checkPhoneLoginCaptchaDebounce(angle);
@@ -378,13 +379,12 @@ async function phoneLoginSubmit() {
loginLoading.value = true; loginLoading.value = true;
const res: any = await phoneLoginApi(phoneLoginForm); const res: any = await phoneLoginApi(phoneLoginForm);
if (res.code === 200 && res.success) { if (res.code === 200 && res.success) {
const userStore = useStore().user; userStore.user.uid = res.data.uid;
const {uid, access_token, refresh_token, expires_at, user_info} = res.data; userStore.user.access_token = res.data.access_token;
userStore.user.uid = uid; userStore.user.username = res.data.username;
userStore.user.accessToken = access_token; userStore.user.avatar = res.data.avatar;
userStore.user.refreshToken = refresh_token; userStore.user.nickname = res.data.nickname;
userStore.user.expiresAt = expires_at; userStore.user.status = res.data.status;
userStore.user.userInfo = user_info;
message.success(t('login.loginSuccess')); message.success(t('login.loginSuccess'));
loginLoading.value = false; loginLoading.value = false;
setTimeout(() => { setTimeout(() => {
@@ -461,13 +461,12 @@ async function checkAccountLoginCaptcha(angle: number) {
loginLoading.value = true; loginLoading.value = true;
const res: any = await accountLoginApi(params); const res: any = await accountLoginApi(params);
if (res.code === 200 && res.success) { if (res.code === 200 && res.success) {
const userStore = useStore().user; userStore.user.uid = res.data.uid;
const {uid, access_token, refresh_token, expires_at, user_info} = res.data; userStore.user.access_token = res.data.access_token;
userStore.user.uid = uid; userStore.user.username = res.data.username;
userStore.user.accessToken = access_token; userStore.user.avatar = res.data.avatar;
userStore.user.refreshToken = refresh_token; userStore.user.nickname = res.data.nickname;
userStore.user.expiresAt = expires_at; userStore.user.status = res.data.status;
userStore.user.userInfo = user_info;
message.success(t('login.loginSuccess')); message.success(t('login.loginSuccess'));
loginLoading.value = false; loginLoading.value = false;
showAccountRotateCaptcha.value = false; showAccountRotateCaptcha.value = false;

View File

@@ -17,7 +17,7 @@ import {SmileOutlined} from "@ant-design/icons-vue";
const websocket = useStore().websocket; const websocket = useStore().websocket;
const userInfo = useStore().user; const userInfo = useStore().user;
const wsOptions = { const wsOptions = {
url: import.meta.env.VITE_MESSAGE_SOCKET_URL + "?user_id=" + userInfo.user.uid + "&token=" + userInfo.user.accessToken, url: import.meta.env.VITE_MESSAGE_SOCKET_URL + "?user_id=" + userInfo.user.uid + "&token=" + userInfo.user.access_token,
}; };
onMounted(() => { onMounted(() => {

View File

@@ -71,6 +71,7 @@ const client = useStore().client;
const qrcode = ref<string>(''); const qrcode = ref<string>('');
const status = ref<string>('loading'); const status = ref<string>('loading');
const websocket = useStore().websocket; const websocket = useStore().websocket;
const userStore = useStore().user;
/** /**
* 获取client_id * 获取client_id
@@ -109,17 +110,16 @@ const wsOptions = {
async function handleListenMessage() { async function handleListenMessage() {
websocket.initialize(wsOptions); websocket.initialize(wsOptions);
// 注册消息接收处理函数 // 注册消息接收处理函数
websocket.on('message', async (data: any) => { websocket.on('message', async (res: any) => {
if (data.code === 200 && data.data) { if (res.code === 200 && res.data) {
const user = useStore().user; userStore.user.uid = res.data.uid;
const {access_token, refresh_token, uid, expires_at, user_info} = data.data; userStore.user.access_token = res.data.access_token;
user.user.accessToken = access_token; userStore.user.username = res.data.username;
user.user.refreshToken = refresh_token; userStore.user.avatar = res.data.avatar;
user.user.uid = uid; userStore.user.nickname = res.data.nickname;
user.user.expiresAt = expires_at; userStore.user.status = res.data.status;
user.user.userInfo = user_info;
status.value = 'scanned'; status.value = 'scanned';
await getUserDevice(uid); await getUserDevice();
message.success(t('login.loginSuccess')); message.success(t('login.loginSuccess'));
setTimeout(() => { setTimeout(() => {
router.push('/main'); router.push('/main');

View File

@@ -39,7 +39,7 @@ const {t} = useI18n();
const githubRedirectUrl = ref<string>(''); const githubRedirectUrl = ref<string>('');
const giteeRedirectUrl = ref<string>(''); const giteeRedirectUrl = ref<string>('');
const qqRedirectUrl = ref<string>(''); const qqRedirectUrl = ref<string>('');
const userStore = useStore().user;
/** /**
* Get the redirect url of Github OAuth * Get the redirect url of Github OAuth
*/ */
@@ -98,16 +98,15 @@ function openGithubUrl() {
const messageHandler = async (e: any) => { const messageHandler = async (e: any) => {
if (typeof e.data === 'string') { if (typeof e.data === 'string') {
const data: any = JSON.parse(e.data); const res: any = JSON.parse(e.data);
if (data.code === 200 && data.data) { if (res.code === 200 && res.data) {
const user = useStore().user; userStore.user.uid = res.data.uid;
const {access_token, refresh_token, uid, expires_at, user_info} = data.data; userStore.user.access_token = res.data.access_token;
user.user.accessToken = access_token; userStore.user.username = res.data.username;
user.user.refreshToken = refresh_token; userStore.user.avatar = res.data.avatar;
user.user.uid = uid; userStore.user.nickname = res.data.nickname;
user.user.expiresAt = expires_at; userStore.user.status = res.data.status;
user.user.userInfo = user_info; await getUserDevice();
await getUserDevice(uid);
message.success(t('login.loginSuccess')); message.success(t('login.loginSuccess'));
window.removeEventListener("message", messageHandler); window.removeEventListener("message", messageHandler);
setTimeout(() => { setTimeout(() => {
@@ -141,16 +140,15 @@ function openGiteeUrl() {
const messageHandler = async (e: any) => { const messageHandler = async (e: any) => {
if (typeof e.data === 'string') { if (typeof e.data === 'string') {
const data: any = JSON.parse(e.data); const res: any = JSON.parse(e.data);
if (data.code === 200 && data.data) { if (res.code === 200 && res.data) {
const user = useStore().user; userStore.user.uid = res.data.uid;
const {access_token, refresh_token, uid, expires_at, user_info} = data.data; userStore.user.access_token = res.data.access_token;
user.user.accessToken = access_token; userStore.user.username = res.data.username;
user.user.refreshToken = refresh_token; userStore.user.avatar = res.data.avatar;
user.user.uid = uid; userStore.user.nickname = res.data.nickname;
user.user.expiresAt = expires_at; userStore.user.status = res.data.status;
user.user.userInfo = user_info; await getUserDevice();
await getUserDevice(uid);
message.success(t('login.loginSuccess')); message.success(t('login.loginSuccess'));
window.removeEventListener("message", messageHandler); window.removeEventListener("message", messageHandler);
setTimeout(() => { setTimeout(() => {
@@ -183,16 +181,15 @@ function openQQUrl() {
const messageHandler = async (e: any) => { const messageHandler = async (e: any) => {
if (typeof e.data === 'string') { if (typeof e.data === 'string') {
const data: any = JSON.parse(e.data); const res: any = JSON.parse(e.data);
if (data.code === 200 && data.data) { if (res.code === 200 && res.data) {
const user = useStore().user; userStore.user.uid = res.data.uid;
const {access_token, refresh_token, uid, expires_at, user_info} = data.data; userStore.user.access_token = res.data.access_token;
user.user.accessToken = access_token; userStore.user.username = res.data.username;
user.user.refreshToken = refresh_token; userStore.user.avatar = res.data.avatar;
user.user.uid = uid; userStore.user.nickname = res.data.nickname;
user.user.expiresAt = expires_at; userStore.user.status = res.data.status;
user.user.userInfo = user_info; await getUserDevice();
await getUserDevice(uid);
message.success(t('login.loginSuccess')); message.success(t('login.loginSuccess'));
window.removeEventListener("message", messageHandler); window.removeEventListener("message", messageHandler);
setTimeout(() => { setTimeout(() => {