From 8a60a6a71c9073a7bb5234f4ec57eb52d6f2fb6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=8B=E7=94=B0=E5=BC=98?= <1240092443@qq.com> Date: Sat, 30 Nov 2024 11:12:20 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=9A=E5=AE=9E=E7=8E=B0gitee=E7=AC=AC?= =?UTF-8?q?=E4=B8=89=E6=96=B9=E7=99=BB=E9=99=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/components.d.ts | 11 +- frontend/package.json | 2 + frontend/pnpm-lock.yaml | 31 +- .../login/{新浪微博.png => sina.png} | Bin .../image/login/{微信.png => wechat.png} | Bin frontend/src/assets/login/GitHub.png | Bin 0 -> 4041 bytes frontend/src/assets/login/QQ.png | Bin 0 -> 2761 bytes frontend/src/assets/login/gitee.png | Bin 0 -> 3288 bytes frontend/src/assets/login/sina.png | Bin 0 -> 4601 bytes frontend/src/assets/login/wechat.png | Bin 0 -> 3718 bytes .../src/components/desktop/LockDesktop.vue | 97 ++-- frontend/src/components/setting/SetLang.vue | 154 +++--- frontend/src/components/window/IframeFile.vue | 517 +++++++++--------- 13 files changed, 430 insertions(+), 382 deletions(-) rename frontend/public/image/login/{新浪微博.png => sina.png} (100%) rename frontend/public/image/login/{微信.png => wechat.png} (100%) create mode 100644 frontend/src/assets/login/GitHub.png create mode 100644 frontend/src/assets/login/QQ.png create mode 100644 frontend/src/assets/login/gitee.png create mode 100644 frontend/src/assets/login/sina.png create mode 100644 frontend/src/assets/login/wechat.png diff --git a/frontend/components.d.ts b/frontend/components.d.ts index 9b87c58..f49431f 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -67,18 +67,26 @@ declare module 'vue' { ElCard: typeof import('element-plus/es')['ElCard'] ElCarousel: typeof import('element-plus/es')['ElCarousel'] ElCarouselItem: typeof import('element-plus/es')['ElCarouselItem'] + ElCheckbox: typeof import('element-plus/es')['ElCheckbox'] ElCol: typeof import('element-plus/es')['ElCol'] ElColorPicker: typeof import('element-plus/es')['ElColorPicker'] ElContainer: typeof import('element-plus/es')['ElContainer'] ElDialog: typeof import('element-plus/es')['ElDialog'] ElDrawer: typeof import('element-plus/es')['ElDrawer'] + ElDropdown: typeof import('element-plus/es')['ElDropdown'] + ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem'] + ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu'] ElEmpty: typeof import('element-plus/es')['ElEmpty'] + ElFooter: typeof import('element-plus/es')['ElFooter'] ElForm: typeof import('element-plus/es')['ElForm'] ElFormItem: typeof import('element-plus/es')['ElFormItem'] ElHeader: typeof import('element-plus/es')['ElHeader'] ElIcon: typeof import('element-plus/es')['ElIcon'] ElImage: typeof import('element-plus/es')['ElImage'] ElInput: typeof import('element-plus/es')['ElInput'] + ElMain: typeof import('element-plus/es')['ElMain'] + ElMenu: typeof import('element-plus/es')['ElMenu'] + ElMenuItem: typeof import('element-plus/es')['ElMenuItem'] ElOption: typeof import('element-plus/es')['ElOption'] ElPageHeader: typeof import('element-plus/es')['ElPageHeader'] ElPagination: typeof import('element-plus/es')['ElPagination'] @@ -97,6 +105,8 @@ declare module 'vue' { ElTag: typeof import('element-plus/es')['ElTag'] ElText: typeof import('element-plus/es')['ElText'] ElTooltip: typeof import('element-plus/es')['ElTooltip'] + ElTransfer: typeof import('element-plus/es')['ElTransfer'] + ElTree: typeof import('element-plus/es')['ElTree'] Error: typeof import('./src/components/taskbar/Error.vue')['default'] FileIcon: typeof import('./src/components/builtin/FileIcon.vue')['default'] FileIconImg: typeof import('./src/components/builtin/FileIconImg.vue')['default'] @@ -106,7 +116,6 @@ declare module 'vue' { FilePwd: typeof import('./src/components/oa/FilePwd.vue')['default'] FileTree: typeof import('./src/components/builtin/FileTree.vue')['default'] FileViewer: typeof import('./src/components/builtin/FileViewer.vue')['default'] - GithubNext: typeof import('./src/components/desktop/GithubNext.vue')['default'] IframeFile: typeof import('./src/components/window/IframeFile.vue')['default'] ImageViewer: typeof import('./src/components/builtin/ImageViewer.vue')['default'] Install: typeof import('./src/components/install/Install.vue')['default'] diff --git a/frontend/package.json b/frontend/package.json index d4dd0ff..22879ee 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -19,6 +19,7 @@ "jszip": "^3.10.1", "lunar-typescript": "^1.7.6", "moment": "^2.30.1", + "nanoid": "^5.0.9", "pinia": "^2.1.7", "pinia-plugin-persist": "^1.0.0", "vite-plugin-svg-icons": "^2.0.1", @@ -31,6 +32,7 @@ }, "devDependencies": { "@types/file-saver": "^2.0.7", + "@types/nanoid": "^3.0.0", "@types/node": "^20.14.10", "@vitejs/plugin-vue": "^5.0.5", "sass": "^1.77.8", diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 41b4d5b..1e4f202 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -33,11 +33,14 @@ importers: specifier: ^3.10.1 version: 3.10.1 lunar-typescript: - specifier: ^1.7.5 - version: 1.7.5 + specifier: ^1.7.6 + version: 1.7.6 moment: specifier: ^2.30.1 version: 2.30.1 + nanoid: + specifier: ^5.0.9 + version: 5.0.9 pinia: specifier: ^2.1.7 version: 2.2.4(typescript@5.6.3)(vue@3.5.12(typescript@5.6.3)) @@ -69,6 +72,9 @@ importers: '@types/file-saver': specifier: ^2.0.7 version: 2.0.7 + '@types/nanoid': + specifier: ^3.0.0 + version: 3.0.0 '@types/node': specifier: ^20.14.10 version: 20.16.13 @@ -534,6 +540,10 @@ packages: '@types/lodash@4.17.12': resolution: {integrity: sha512-sviUmCE8AYdaF/KIHLDJBQgeYzPBI0vf/17NaYehBJfYD1j6/L95Slh07NlyK2iNyBNaEkb3En2jRt+a8y3xZQ==} + '@types/nanoid@3.0.0': + resolution: {integrity: sha512-UXitWSmXCwhDmAKe7D3hNQtQaHeHt5L8LO1CB8GF8jlYVzOv5cBWDNqiJ+oPEWrWei3i3dkZtHY/bUtd0R/uOQ==} + deprecated: This is a stub types definition. nanoid provides its own type definitions, so you do not need this installed. + '@types/node@20.16.13': resolution: {integrity: sha512-GjQ7im10B0labo8ZGXDGROUl9k0BNyDgzfGpb4g/cl+4yYDWVKcozANF4FGr4/p0O/rAkQClM6Wiwkije++1Tg==} @@ -2040,8 +2050,8 @@ packages: lottie-web@5.12.2: resolution: {integrity: sha512-uvhvYPC8kGPjXT3MyKMrL3JitEAmDMp30lVkuq/590Mw9ok6pWcFCwXJveo0t5uqYw1UREQHofD+jVpdjBv8wg==} - lunar-typescript@1.7.5: - resolution: {integrity: sha512-AlOwYrxHRCR9Plba5TlZY0NVv6aFobmR1gxfiAE1KxjDzBXoDtT2KrsBYCVaErGokiL8qLMS1FNwGPiPRX2a4g==} + lunar-typescript@1.7.6: + resolution: {integrity: sha512-vrNRgzJ6UgK++P81jaOykV7YBCLemC8l/XDbsXE7MinojXolOKiIHm6sOZg5wdDMbJxCWP1ERAaqcBV9mhw2Bg==} magic-string@0.30.12: resolution: {integrity: sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==} @@ -2145,6 +2155,11 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + nanoid@5.0.9: + resolution: {integrity: sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==} + engines: {node: ^18 || >=20} + hasBin: true + nanomatch@1.2.13: resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} engines: {node: '>=0.10.0'} @@ -3356,6 +3371,10 @@ snapshots: '@types/lodash@4.17.12': {} + '@types/nanoid@3.0.0': + dependencies: + nanoid: 5.0.9 + '@types/node@20.16.13': dependencies: undici-types: 6.19.8 @@ -5330,7 +5349,7 @@ snapshots: lottie-web@5.12.2: {} - lunar-typescript@1.7.5: {} + lunar-typescript@1.7.6: {} magic-string@0.30.12: dependencies: @@ -5481,6 +5500,8 @@ snapshots: nanoid@3.3.7: {} + nanoid@5.0.9: {} + nanomatch@1.2.13(supports-color@3.2.3): dependencies: arr-diff: 4.0.0 diff --git a/frontend/public/image/login/新浪微博.png b/frontend/public/image/login/sina.png similarity index 100% rename from frontend/public/image/login/新浪微博.png rename to frontend/public/image/login/sina.png diff --git a/frontend/public/image/login/微信.png b/frontend/public/image/login/wechat.png similarity index 100% rename from frontend/public/image/login/微信.png rename to frontend/public/image/login/wechat.png diff --git a/frontend/src/assets/login/GitHub.png b/frontend/src/assets/login/GitHub.png new file mode 100644 index 0000000000000000000000000000000000000000..451a5e2d33e4fd6dd485013233a42c444e038e6a GIT binary patch literal 4041 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 literal 0 HcmV?d00001 diff --git a/frontend/src/assets/login/QQ.png b/frontend/src/assets/login/QQ.png new file mode 100644 index 0000000000000000000000000000000000000000..715df9b7a113040480f0460ec2698faa9eedfc3e GIT binary patch literal 2761 zcmZ{m`#;m|AIGoH*f6JI=BzEMk*JkW$sEQU%W~MdBjlJv3n8ht><&52Dw=YpkkEuA z9Vo|=Lvo0+yXlTbROpt&cl`n1AFk_lJ+Alb`tA9;9jUkfkVV{e!C;{q;j zN5Gzpa9m+|Jbi8Oyo)Yg`&%VachmxN5YK?gEB|8d6=|k2K#enDhtL2eWWvBDiNl3X z5P{5%xMiFI1B5P{-LD96Q0ipTn`;9Bu79ywAQuKGw>5&Civh!l&@WTx1OdIl^t!FC zfOu=$N@UaHDqPq`e##eft%MeDi;by4ZwQ3cOiy4uQHtUg+Zm=;V#KCS!2ezDms(wG zf&srtwwFhoS9Y21?gtq&vOe9qa5iD$NnX8G7K2Cfw%(~H+^-?1g(1n2Gb0r%jDSK7GuGi%rvbn3Ch@K{jwRpn7Kg!)12U| z!Z>;Wk~1-F$Ot&KRZd>=jYm@(PPR*iG4B>3W2@VEF$uvM&_}2>;{^`)d?6@&mz43Mhx|Qnr{B0|FZBFE2}Yhu?w` zmOxfZY(L!#7&QcnmxNIZeZY@>U<+djah;uu@v^he`<_qrnvCjrR@e6AMFbw=i&?VK9Y}yRt zuy?xHp-zG$2GxD{bZ7GFmlOi_vBQ3h4sICN{bvd%t2;j=I4X+f3!PLuaqN!U7~;`# zRbDzhAp0c3cTHj7_0FC$o?BIvGj)4MoVUV~SUox!|QM)wW|1FJe9OIY^ z$G48~9J$K-64~bB;bAHShOmCixe+tx2LS*=xqgj7zW?OhR=WjL^DZVb&&9-_eN(2j zMPBR2QZkwdN|WCB|E8a{(2YzXA+i>E_LCs;s^zcvO-cnJduQ$w4>^!}v7mT5Ahq0! zXBSQM&JM6=&s#z{9Ztn!t&SANeLaA^srdD4{q+0yM-co(m_3xU;{#od75k=$p8_-d z%HEk8o!kbytSIf?^NhD<0u*|B0uPLe*kdKDS%mH80XDweYC-gEv<*u*=X2nO4X zel8u>GFR0sBH#Gk$pCL=$D zVtcY5g?tcyyi^VApNV>cP2NBUQv&P7MRs!?y*@#^uM)9SJ1fD` zU_ZRFPLeTsCri0}Ju=DT5949GC+@rF(1t|k=|@4AJ40jZfIlMVm3e#R8L~7HU-Nmd z&(D6(>oj+fgS3oT7+Q~pF(!-n%H_1Ax3Jc4l5(eNa0u#Sxe7RIu>-ZPb^)~p@rMg9 zn+%b~q9N9%QOz!^6PabdGU89Cyp(%4lA#_J{qnCCK)9i#+Uo^B27D!?O)BvKtG}Cc z%Mb~YQ-#r$#S8=Nw~d3y`Ql>2>2Cc(DRR6x`QZIw&9dJa_vGE->}5WuEfZ z`$=9{(b02XHSpN?Uu4s*vzr7Vg~pzeT)l05yOHB!rPCy{Z8we*BZqM`w2C(_vb}4U zAM${HYH#+E@sxY24CjXn8KW6$tKVdm>}<{t#M9lv_q6P^NWG(Tlp;`%Tuf?dIg_4*^@i3^f#ekD%9Fh1+E1`GN)Rw|D_~w7@C~a0#&rP;7m!zm$ z!2Ktz{hSGmGl@ z5Qq#Ja$+Wz4eg~W6CW~z0}m}%JAMhTsTwU0t>Dn2Ah@wh?D&!t=~g1;86Ku z>`+j<)?3xOLuflB`sq~cTYAq^$12MRiC5;FYz#fb5hmB9_*D)c1~va`t~{bd;uZK>x&Cg!$-im|x zfj)6c%aS|A@qE$up#9K<<4@cS6G-1u1|O!s3gp65?{bBtzgN-C^VE<4t@RrTsFo=o4V~ z4O-JbAYVz7Dfy=;KbMYwSs#4~WA`Bz<*I+nd8pINNh`UehbsSszl>XpHM+M~YBP-R zqY?jPV&U^ryI|?gsJCiVqK-d;R!8nVwW+--XrBZW$_i-o;A;J zZa9sYCklO1s%a|b4mb`Zxc!szd$UBWlJE&=J2%S1)#I2e7dW`>QR^aXnoJ2i!i$$UD>vIUWj(5_>H<_NDEg zvurch*X!Au{ih E2mQ#yX8-^I literal 0 HcmV?d00001 diff --git a/frontend/src/assets/login/gitee.png b/frontend/src/assets/login/gitee.png new file mode 100644 index 0000000000000000000000000000000000000000..8d8c1224c6169486ac5409c45d2430a7db0a3d08 GIT binary patch literal 3288 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 literal 0 HcmV?d00001 diff --git a/frontend/src/assets/login/wechat.png b/frontend/src/assets/login/wechat.png new file mode 100644 index 0000000000000000000000000000000000000000..e0c0b23ba6b84ac701655052bf5c490a36a95448 GIT binary patch literal 3718 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 D>FAtJ literal 0 HcmV?d00001 diff --git a/frontend/src/components/desktop/LockDesktop.vue b/frontend/src/components/desktop/LockDesktop.vue index f3023a8..a49b9cb 100644 --- a/frontend/src/components/desktop/LockDesktop.vue +++ b/frontend/src/components/desktop/LockDesktop.vue @@ -48,54 +48,17 @@
{ @@ -219,6 +206,7 @@ } }); + // 监听code参数 watch( () => router.currentRoute.value.query.code, () => { @@ -249,6 +237,8 @@ const returnedState = router.currentRoute.value.query .state as string; + console.log(returnedState, "---", store.State); + if (returnedState !== store.State) { notifyError("登录失败,请重试"); return; @@ -402,7 +392,7 @@ break; case "gitee": loginFunction = async function () { - return await authWithGithub(); + return await authWithGitee(); }; break; default: @@ -423,7 +413,6 @@ const authWithGithub = async (): Promise => { // 传递state用于防止CSRF攻击,使用时间戳加随机字符串 const state = Date.now() + Math.random().toString(36).substring(2, 15); - // 存储到本地 store.State = state; const url = config.userInfo.url + "/github/authorize?state=" + state; const res: any = await fetch(url, { @@ -452,6 +441,26 @@ const authWithSina = (): boolean | PromiseLike => { throw new Error("Function not implemented."); }; + + const authWithGitee = async (): Promise => { + // 传递state用于防止CSRF攻击,使用时间戳加随机字符串 + const state = Date.now() + Math.random().toString(36).substring(2, 15); + store.State = state; + const url = config.userInfo.url + "/gitee/authorize?state=" + state; + const res: any = await fetch(url, { + method: "POST", + body: JSON.stringify({ + state: state, + }), + }); + if (!res.ok) { + return false; + } + const data = await res.json(); + // 跳转到Gitee授权页面 + window.location.href = data.data.url; + return true; + }; diff --git a/frontend/src/components/window/IframeFile.vue b/frontend/src/components/window/IframeFile.vue index 6cd4c06..9c10f3c 100644 --- a/frontend/src/components/window/IframeFile.vue +++ b/frontend/src/components/window/IframeFile.vue @@ -1,269 +1,274 @@