From a3ee7ca2d83732668f909dd38a47c2e2e61c42a9 Mon Sep 17 00:00:00 2001 From: RockYang Date: Fri, 16 Jun 2023 17:28:21 +0800 Subject: [PATCH] feat: import iconfont styles, change password function is ready --- api/go/handler/user_handler.go | 40 ++++++++ api/go/main.go | 1 + web/public/favicon.ico | Bin 16958 -> 67646 bytes web/public/images/logo.png | Bin 5161 -> 31229 bytes web/src/assets/iconfont/iconfont.css | 31 ++++++ web/src/assets/iconfont/iconfont.js | 1 + .../iconfont/iconfont.js:Zone.Identifier | 4 + web/src/assets/iconfont/iconfont.json | 37 +++++++ web/src/assets/iconfont/iconfont.ttf | Bin 0 -> 2452 bytes web/src/assets/iconfont/iconfont.woff | Bin 0 -> 1700 bytes web/src/assets/iconfont/iconfont.woff2 | Bin 0 -> 1276 bytes web/src/components/PasswordDialog.vue | 96 ++++++++++++++++++ web/src/views/ChatPlus.vue | 34 ++++--- 13 files changed, 231 insertions(+), 13 deletions(-) create mode 100644 web/src/assets/iconfont/iconfont.css create mode 100644 web/src/assets/iconfont/iconfont.js create mode 100644 web/src/assets/iconfont/iconfont.js:Zone.Identifier create mode 100644 web/src/assets/iconfont/iconfont.json create mode 100644 web/src/assets/iconfont/iconfont.ttf create mode 100644 web/src/assets/iconfont/iconfont.woff create mode 100644 web/src/assets/iconfont/iconfont.woff2 create mode 100644 web/src/components/PasswordDialog.vue diff --git a/api/go/handler/user_handler.go b/api/go/handler/user_handler.go index 625d8f4..b6d5208 100644 --- a/api/go/handler/user_handler.go +++ b/api/go/handler/user_handler.go @@ -318,3 +318,43 @@ func (h *UserHandler) Profile(c *gin.Context) { userVo.UpdatedAt = user.UpdatedAt.Unix() resp.SUCCESS(c, userVo) } + +// Password 更新密码 +func (h *UserHandler) Password(c *gin.Context) { + var data struct { + OldPass string `json:"old_pass"` + Password string `json:"password"` + } + if err := c.ShouldBindJSON(&data); err != nil { + resp.ERROR(c, types.InvalidArgs) + return + } + + if len(data.Password) < 8 { + resp.ERROR(c, "密码长度不能少于8个字符") + return + } + + user, err := utils.GetLoginUser(c, h.db) + if err != nil { + resp.NotAuth(c) + return + } + + password := utils.GenPassword(data.OldPass, user.Salt) + logger.Info(user.Salt, ",", user.Password, ",", password, ",", data.OldPass) + if password != user.Password { + resp.ERROR(c, "原密码错误") + return + } + + newPass := utils.GenPassword(data.Password, user.Salt) + res := h.db.Model(&user).UpdateColumn("password", newPass) + if res.Error != nil { + logger.Error("更新数据库失败: ", res.Error) + resp.ERROR(c, "更新数据库失败") + return + } + + resp.SUCCESS(c) +} diff --git a/api/go/main.go b/api/go/main.go index c0fca3b..43e849c 100644 --- a/api/go/main.go +++ b/api/go/main.go @@ -106,6 +106,7 @@ func main() { group.GET("session", h.Session) group.GET("profile", h.Profile) group.POST("profile/update", h.ProfileUpdate) + group.POST("password", h.Password) }), fx.Invoke(func(s *core.AppServer, h *handler.ChatHandler) { group := s.Engine.Group("/api/chat/") diff --git a/web/public/favicon.ico b/web/public/favicon.ico index 9af616ce594dd3e9f3ea26ee0863ac45fe04d0a8..32b5cf3ed1a6a6575b3fd590fa0e859075806763 100644 GIT binary patch literal 67646 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 DCo(qT literal 16958 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 diff --git a/web/public/images/logo.png b/web/public/images/logo.png index 8d010414a9150f1b17428b16686d07351af24e32..43e5d5444237f15bc55cda9bf0b6ff921e7c17d0 100644 GIT binary patch literal 31229 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%0D?ln2 zTCC(P)A4#GME84%$h5`phNElrQCm(=`ylE2u)4$>6D7xGHg+;huWRa7nLRT3mRm0Y z=je>s0i8-x{MY}|Q+~EUs5~7jhL${$3yi`rx^KgsoU}vv94vN30?(BX9`2)UO5PtK zpCa)G60UB2F1bVjr5p=yP=Gx#q>Ecy#)xkSB>Ak0v^C4V0cFT+P|^fN=!Y0KgLt`) z*W@2p2!uVOY+7W@2x^E7S}0YL$2AP<Runs=8|PWZ{dk2M1iodJE&h+3u1L@uF5OZe%bPm$qN1#snKw3X z7xVrg`%TS!EaxpqT#XW{5wWGE3)fdSLui+uWO~;SE|I8rrL-AE<&qQ4@m3R6fbdZ- z;xv{8$=dO5)2kzt0c^=-Z;4v4LQWi2{P&*(sQ0SNF#K0Na$bFHkpb60r{B`sFAAcGo~m>+wl2M_-# zBKK$-;H?j~CXTrrRQAP-Pjh(IpG5d7=0a0a8e(IRu(P%@Ug@tCoD}eboWt@`1gUri zz67{FzPlJz7h~cKcWqJZiB?pDG*2EG27ToOhvr6G5&^2E5ILIdBGL{pQ&zhgKqdFh z5&j9TihVR<%Lh|vWE`7_g!#kYnCOA)eFC%u$07w*z?9mu(gU>lz>J`Z;9v`?ECen$ zC-(@aM~}%14n%%ZrkO<60+cP!Zb?(eVWnj_RkSR=Whf}y z4PIW>>a0+5fkp~dmnNQpF9;XT>{PlWMnmvJz7y1C zOrX8vuO=PfDuw;qq62m#cHfrmyXKKD2prU*@(23u$R|Ium=R#(hm?~_ zv~4!Yw9Axrj>9^_S_>9c7Xfl!f#pVI1-B*>^96gJSukxo(^o2#g3yWgJRz!y@#253 ztab*qIEdpiaG>j>Ml8B^$NQAL2}B7j#$>M zGhr5F{Q{sQja<$\Bs%zpXB!*?YcgE00<0Cujp#z4H`-Vc6jJYwss>#=gafrB8y zNX<7m&o+DkdN;kW^r<&WC>XkFdSSwFRYW4g9jige)X&K|Cz2M474tkhbK>Yz$K~_t zH_?MP!Le?V#|l5xy@Na?e(iNaZcON^+FX zf)aGPF&msT**p~&L)0UnFtlov9w#2-iwnLSJfC<4iLl&%Di zB4_?0*?<09OkSLZGI*vzCH1{+g|~!|spLJ36!=F@E4PDry4>$BZh5vk`Jqf)n(0T# z%WQ;&3X7~>O=7mhg3=u*G6Y(MlJyToN#l{P_0od-6|PyOqdWiL8H!Y!G*t#OCEt52 zFBW_7-TIbi@Hc~(7J5^d@EKW~WIIS!aB`7}!eMDKQ{S-t)lEMk^0Izj6J()oNhtWi z=$UxN8m}$v=`5QBn8d(PT+R>Ffk|uy6HM()Hp&45S|P|@K|CGe>rQV{7ga?gcmH(Z zK{A9rrhv=B^N$^hGM->Y+_Y5g$CHFktP$x@LxIzLW-~z)iA@t-pdILKxjQ3i=zh6g zmKwB`8p>%dXf!83yR;VzktQgYiG2sNGmFtBEXEhB_UUR{08HxoH#XVi$N<^ zaf^opX);8#^K+K&2W6j&S(uUWkwv_UoGj$vkIv7p^2&UFXXVA7_=Zq|t~rezDVJCK$Z`oRMycZGLY{ zTxImTpbjiuW*D@h_He73=uG>36Jgip`tu|*T?)iwgR!6FaQE_tD$;P7PO?{mep4mJ zruYsqC~(uOys#PcsDPVqq%v4ba$DCsT;SVNP{uDmdbie{aMEyU1_9!ryE&UOQ5K)^ zSo11v8j7F;?)IR{n5chz%8gm4zbw*c_zopi7F$BF+l+))XR|y;gckkL<MXpNsIDcx;u#vc_7aVbjgWwGDwVzieS zO_XPC@5)(X>t5Jd7ZLr^&$qycyhw_B&qlz}5uh85k`r*BmbLSFBgN{r_TyZmgtUE@%lzi3r1%aF4W@l1}W3ZOpWpe0az zni*b`d{0?@D(R4jF|67?Q~4R`ra+v=! zv|%U&R2Ti)x-tSV+UpfzI1$W)wIC8czBmtMiyVvL?B36pUs`|BHdEn$FTV?wTt+A^ zwIVJZe@@RL0i!plj&P&b`?n$qYAZuy=!lRQS;nRH^sJjICCd={L0emTj2zR^URo%q zDho~DzRTQ{C!c<4mK!UuWc$F-q^t(9qo2=7!@cxUCoI2+njdvQ_Aq=7M9ZuI&3$4?>*hh6uOMiZK)ncri%5GPQ!A6>G5pA4afh{1v z9TQjG`b1M=ySRSDfPWBiSn@ieR$_Qe6Dt7&cKh|TNj!T!Gk9-)l=_7=)W^Blw2g<+ zLA$$tmay>INO)a)BojagEG=B(7B-SpI%jZttGnGOyL`yicGL47q zc`wIfpzqaUI@$m>m0-k9@a5X#Cs;Uiy!xXbm1LCO4Tb2t4TVBPrh`B|3unclUz!t2 zE>&vgl#Uw9)XuABA9NLf2XCzUOGujd9#@&;5zHA^$5 zrAr6K%72A>m;L9;>?lInOfwP)go^34)+24i0YSYXGBgm?T2ZS1Rz%rFv_^9Wh&6Rd z4D2uX1D`J)A2Wd6+@cbFE zn%2O=H|3_GK5l;&pspdVN#l+m!Xn)~#q zEnK1cy$BZw!4ABwee&igAWxJrA0O$=cHz?_b;ZPP9nc)x%taXF(NZ=Xek-! z>BYj_)rgR0Z0c;Cp1b|Ec&tq<)YFI)6AqRFURUZI_tzLPsQa}bt_20PjgL_Pica)( zH4%Rm${c&mC+)dMV+6&r@zU}5@kpVK_!Ku5L8awQTKCwhs%Ml?#ah)8ug$&CFU6n| zq>p$)5oVF{kqK6ejs5}FHd3w!MQCgOHvMghvcAH&sN=b!d_G6FwWpV3UFwznOU_sD zpjE#hT#BGGw2!*a@8c$FS>YJP7!?umF#X@G0puK&A+154OwtJi7e(TbDJ8(i+ z9%USa(2|xQAPc*sTYK7UYX57&GUJZ_$R6RS!dZZF=)7(wBlDPA^%;5j*X%{-2D3G4 z$TS7@#7^FGLhw2=vDP+0w32UJ;!5HlQ7~2eMvht3$)M|C79TE$^23g+ye$nE00uHe{fF zugb6mSb{jU-0a&#x~?&@Lw!!&f-;0MMyb^CMXNiCr&5!aZ`-lE4jGXMTMLUn0f(l+ z_k8kF&|~*wQ>DZJ3MH!;m_m2pG)YtlEvMwe>*R(v$77-l4MhU&b)p|NxtQTKam+Hd zNd0c6w)Ae^%J@k$sFadYJ~_VxN^oMtep4JWV{!FDQyJ?0OwfpI+gCLBi+k_Yb}p5E zj_$=FSSn(I?yMXHBAsIUPKCa2?YsM{_Js^8mx;>Nl7W|g)&0dfaOIbrF@z=Y%IB6Lgx-XHgc(7XsWM!v zzATQiB{kaA`Dv3p-7Mjdj!GK#W^$1onRL(C*yGg4=$$rr zixiC)&Mw`5A(rxbhGSd0w2GH!Ned;jq2Z>ICm%zFFkWEIA^yxqb`^&KPk9P)XD3%o zVd+?El7Tkh&GZ}x;*ztGsSE+4^!<~VBR9N*@jCABZPst~UD7reySbbsp<>k>B}Bq4 zyh~bC1p^MpWRl9&@Uwv{@k=pGi=QXBh@T>aon5k?_SL4<<+GR-=GxAa`R+ru%R*3s zYsfh~P(54&dnUhdbeA|yNy`?RxlS%f6&S@Ow4FrPYZ=ufD~Qk+B0}cG!rIg6=N#lL3$0WgbAe7?!kP zR5U9gE5gr_>BgM|LPqPXmIe3c2R)cE&+YM>bj{A(RZ>+U!y=MqDaasnj@vYCSL-0d zYt&EU(zx=Lq;64)6=f$1<}GpTIV%kQl|L5JY5%Sod`Pi+@4<3)RNV)J=<6J=ndX1C zFb4WI;GoMoE@#h05NvG3+A}8-okk9Q>q}Tmk8#YsZqyj(K+?aA zrbsXHVZX|deB8JkCfk7G#w_{#RZemYmo_ellnL&$%oqlNpTnP8i%{Y3VXhQiW}<&# zfC<|Lv6AZ`k$&a=P(&Ut<_CH&Xk^T#cuf4gV42(FW3$FzI5Q8dFZ=oTZG|yBDeQ`g zPLpL`iIA^|7Qsjg+NX18J3%>vPyHTqLK0ZBTh6rdEsqpuS9-xQ3+y6bg+3c-q`nU~=6!1Fzp5Y$H*e%(P zyag5cpv%#Q&cdEM(_aVbHUBMKMlIQF#rWwvfF0O-r|i|Ktm;6G0)Fk^)s5jCs74N* ze{R#|MQ1)@PZ7E5(_V>onKsddb~L4%Rr_y7e$&=ur0!Qchw2jPj(a3^Oy1UEv-C70 zjsrm(Nj?nn*1ykBUhkS5ICImZ_XhyfoJ;}s{yN4#?nGB8ySFlTh~y@CVJ2WetJCS( zL6GvE9&Z|L>W{zi*a`tAnv1Ku2!-Dh%78)Bjgi}szS*8dn#hx6ve)z{O`~7HFbp7s zc>6nC?-STn{=Fe62@PP4+~CPJ!SJJ{GGYO

LwWo@s5mE6SHVy%5M15fO5x7mvf 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 literal 5161 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.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}")}catch(t){console&&console.log(t)}}o=function(){var t,e=document.createElement("div");e.innerHTML=n._iconfont_svg_string_4125778,(e=e.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",e=e,(t=document.body).firstChild?a(e,t.firstChild):t.appendChild(e))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(o,0):(i=function(){document.removeEventListener("DOMContentLoaded",i,!1),o()},document.addEventListener("DOMContentLoaded",i,!1)):document.attachEvent&&(c=o,l=n.document,d=!1,r(),l.onreadystatechange=function(){"complete"==l.readyState&&(l.onreadystatechange=null,s())})}function s(){d||(d=!0,c())}function r(){try{l.documentElement.doScroll("left")}catch(t){return void setTimeout(r,50)}s()}}(window); \ No newline at end of file diff --git a/web/src/assets/iconfont/iconfont.js:Zone.Identifier b/web/src/assets/iconfont/iconfont.js:Zone.Identifier new file mode 100644 index 0000000..df2640e --- /dev/null +++ b/web/src/assets/iconfont/iconfont.js:Zone.Identifier @@ -0,0 +1,4 @@ +[ZoneTransfer] +ZoneId=3 +ReferrerUrl=https://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=4125778 +HostUrl=https://www.iconfont.cn/api/project/download.zip?spm=a313x.7781069.1998910419.d7543c303&pid=4125778&ctoken=SHhMU2NkC6BavrZsXJmrL-LS diff --git a/web/src/assets/iconfont/iconfont.json b/web/src/assets/iconfont/iconfont.json new file mode 100644 index 0000000..e3d0c29 --- /dev/null +++ b/web/src/assets/iconfont/iconfont.json @@ -0,0 +1,37 @@ +{ + "id": "4125778", + "name": "chatgpt", + "font_family": "iconfont", + "css_prefix_text": "icon-", + "description": "", + "glyphs": [ + { + "icon_id": "611345", + "name": "密码", + "font_class": "password", + "unicode": "e62a", + "unicode_decimal": 58922 + }, + { + "icon_id": "1418205", + "name": "发送", + "font_class": "send", + "unicode": "e604", + "unicode_decimal": 58884 + }, + { + "icon_id": "1048893", + "name": "注销", + "font_class": "logout", + "unicode": "e62e", + "unicode_decimal": 58926 + }, + { + "icon_id": "14401714", + "name": "github", + "font_class": "github", + "unicode": "e66f", + "unicode_decimal": 58991 + } + ] +} diff --git a/web/src/assets/iconfont/iconfont.ttf b/web/src/assets/iconfont/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6b8609916cf70804d8b87fb27d71daf8e98899f3 GIT binary patch literal 2452 zcmd^B&2Jk;6o0d8@7n8+_}h-tI2$`&=hKcI+i6qBcABOwGzFTpO%J8TbsRg9?KSqM zZ8$_xk&qBbw45p-L?z(B1<}HRN+5bbLI}9@00N<^T-*a(kr1K@Z`K=8QvL&GH8a2W zIq&_}_815Nm|zQ77(cpr`jGfq_$2_cAGN2RU5q6%-B0CEejVi(inT)Ho2TEt0l=V0 zZkMYYD>skdivh5Aaf+2vVR_){cVDCN0nT&<75shn6~v$69H`WkD=q{W`x`E_ra|%+tjhM?`-KX6N(14HEN)l^iV=x=%5V? z_yFus5eKykFb-K@4j-961=eaose_*up$=+)9Fyv5xq$gQkpykjN>D?9)3iDrkZX7< zFt0M-qVA2(PJV?1!AJ)5oodkZ@A2Hq+%nv4>)Nu)2e3cG7JASc{uvBCaPLGFo~L#> z+A))+7FR_r%`l2Pc8+=-mKZ#3xE*cFJIKi67(M79=+}8@;RJKw(S&yTe;;O* zfV@TnveMQj{gkzbJCicsj&>$}J8ii$)fY%ZPeFy~@Y8~}oonn(wg~}zQ)%Qlm5fLc zDadm?*GsI7+wKaGiT*^Er0hwFxI?KZNoGkRKwO-&Kh=S5c5G0ZJ^aqxp~zt9U@)8y zGefu>+J0E}i@ouKiQYhSTTY*=olBFyF3jh1VMz+-^7H4JfvMp3je$%klo=qE@nhR} zHZEJ@2V(p7#rDU@?1|*k#Kck(>&1SwZyA2x+|Dt=k~QYUqmS2gutk0f50W3ZRYs75 zoln{K*gTwtWef|3cq^g3cs+f@^I*Wld7~S@fF0-xIlb42~$%)ihJZ})(Hqq)Z za|WI@@=m|eVbmLmV2t#{tU=%KU@9|ra&dk(7mbYDd1GI<)MYnuMnP|QKb(@JRG9gY z5W&FlUcXr|I^4;bRDE2Ua=19oZ0-xLWM*^mAv=Z$KCg>+5d(MtZ7n-PPF}xY zvxNiQZkySF+(rCm&g_v))@aJd_Dl~Yd-{Do6Js$57N@%>aA|%2uuHHog3sUIlN_3M z*chAb{PmM$Cc9Q+PcykprMg+XeKo*#nVvDQtjTB*OvVwPgJ;=pr_WC;1KqsCJCwPEhb034&FZM+caBsfvdNQo7GAN?=En_eaenHoVa!{ z{pEFPm;oMoG|Zwts9_!AVGZl?mP}}vL;bXd1sH)j4Vy4y1HX|(XT)4)u>TEWjCJ(Xa_5Qk-p;3QB2NytpB*7UlYiTvvAY zg;IIFT4?TyyZf0^v$ZPM#dvglS9P>hFEw}5v@Vqsin1cEH07Fj1oM@uRatB_<+V~# ziB=S)F%^r^bErOAlxr{xO}r)xpy0X;B3y(GTvwq8GSp#3U6m)~1@tb%I#e;T`Gj?E z^cnPSLJR$9P7&e|#jAI(*HQGUtDbwSX~88tErB&ESdoaciJ5AMj%f9ju#zfb5nmv+ ztzn)bdPkw6Mm1mxV)*R#v+EyK`>fGBt~2O=g#Q|P!r)Jyj_C0YG&BmW)@8Z5tZS9( T%Uo41%j*hPUR5gV7cus4fh$~X literal 0 HcmV?d00001 diff --git a/web/src/assets/iconfont/iconfont.woff b/web/src/assets/iconfont/iconfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..9988cbfd0680e06685b2e945af3420321352f141 GIT binary patch literal 1700 zcmY*YdocHx87~!TR7MFrg**n3SFU-||2>bj!X-Sl1Si1^y z2Ao@m1HSp1aW*3!uHOIvLIMCtQ&HfAJ(Es}0{{&X+-DEN6?xeH67Mo!(0!BkrBL{Wz*Ds+i;0i1B?VWk|^o$Tut@;j=(Sl4S;hjN)jE`aPVv| zcs2vmM35%4Q&QpgGT|O~7=c^8)}r)!8WaaX^Hc{&N`uaydyAsX5BuB7X%$q6k_%K2 zoa!8{oIUt?$RXsTmfQqA)A;mTDf4&rclY@M6TK#G5K+gx8 z^#`_D(c8qQ!p%GH|46qg``ti^YWBynGYxuac<&>W7ME{GW6u-7I$rsyn?fW`4(bSK-9rVo@=<;^^Upu!s*D0>e+;WX7mY8Cay0 zfhbn}h5;t><{Uqs;kOetvVHL*qUw3d_WlNQt4lF8_LSkLXyOotKpF>*Fqtdymc{GW5zCK4dmW>5Jb6BkjS)}xG!Vt1TUfK7z0%u`w+IUKjXBkc zEr|M=L)w2lmTR+G6UDO$EfTm-k2ejzJChky!%5zYERBuRk;`UeO^H3v-=qH*~o^wQ(_pT0;HrQTX7dc9&c8s+%E}9b=IZVFJM%0uZfX0`Kmwh?z@84^lWs4+bn6N`*Qyy)?htyW)N=av`qFy;ZFAzjP^D38 z5Z%JexwSjzo^JDlaa7OX#$3~4+kn1_mazEgk|R$i)X`kAg3?<|4O4ox3ziMY(~qs+ zPjVZOr6>L6FYqTyQ+gWzDCrvQu9;tWyH#tnd!Na#`bu8;{l9Xsh)eDJJ1OvVDJ_!fY0Ud zJy`u-7*0c9g@ynZaNQ;0v^CB^zAYe$Lqs=4+HK2zcW21C^(4y;KF3xDf+VfT2zqOH=VQ`VGRy;UU*zPv}$SR_pTW~(_FX`gP$ zYNZY733CQ-bJ8gK9UBEx>UzZ#1F6e>Si=A&VHx3c1JHp znrio|;|X8o%``wmjgA~z{bv;Jp~YQh=rG@tsf^99*EC(PMkVZA2v*&FC_ZwYV~0o` z{qp1c6a5+PpY!msuR<@R+OUSN6}Ski?zY0(M%jbF2A9{8~PTU(GMeYcg%=>?HK!IRA0`#GZq<^7QC!FTi`WVVhiv N@<2dRzbhL6{s!oR&HDfV literal 0 HcmV?d00001 diff --git a/web/src/assets/iconfont/iconfont.woff2 b/web/src/assets/iconfont/iconfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..cfd18dabca2a726dbb3e247359bf7fa9d7f2173c GIT binary patch literal 1276 zcmV3X9r6gGYAn?q$iO5IB?vC^*f*1PUFrd zl9Z*OTbxC>Rn?h*uc-%CHJl2|xsr1iI5Bw>WXQcOKnSp{>DUh8BUG2HW%=oU-6HR6#AuAr!*0k+-R_3Hso@GzMKB-zx>WNZheY60KCAt?27bRiF#0U5weG}WvkYaB-we^Pwa3C=70Lfu$v`h&>9(dy*;D9%g2ncu+ zi+}-dddl98M#f1s0EMp0AgFaWm3Z(;RLYf$_a4hlUFr% zldqp9CRsW{P3v|^+b>VPxYfL+g_b0%b@JW2K#QI|nhzd0N$osmjeS1n1s-!DSS+!(Jb zb}t%i9Ju6L#x+fr*R}K~z4bFIlT!>W61&?%|JO){*>t}mxFXDSPvC%OTZw8`L>R@? zbAzJ>PtftJZG}B{-LH#(){efL5>8rl|al`(QIM^6Ex^v(RmGfBrcv>*A z)Ara}nSj@+B4Uoy_zSEof?(^b~{ z!mywX=cLpvtS)Hepsl`FdZ|wZmTtb?-?tyXW`6Q4T=88xaCuNY+ng$$v;W&|g!bQ` zt$b!kH9I3g8|7WljtWUr_z}7G!d5c+ClfTv=1oVBgxQ$)*uS(71 zYi#(aN1t(YPH+?; z%8XP2j)E63N`V+pMS_e*BFHJ_fLfHzat$Zm6jcQv)I$Jb?+F}R2Z6Eo!g%TpGOm6g zXYUVchAcPJ2#r}WDnSeS4wa$a*?I}s?y(qJ#buE*a;PW-X_VwsJM58%m=Z2UCgQ*` zb+DC>!?q>xOf?#bN)eyOv8%dBWT+dhFr)}%0qqV{4AOHRy=1>{4;2P2g+c7>VnGx$ zdytAG0JhWgP}7xk4=xHBA)GkOVWb1LnhUj7oB&_luZ9c}DSJe{T+DP1)kO2_x(6)% m`L;CAC<{l7c#@GE%Bc{p#C8_2w~Lkv8e~yaQVx1F0ssIWZdpzM literal 0 HcmV?d00001 diff --git a/web/src/components/PasswordDialog.vue b/web/src/components/PasswordDialog.vue new file mode 100644 index 0000000..be64763 --- /dev/null +++ b/web/src/components/PasswordDialog.vue @@ -0,0 +1,96 @@ + + + + + \ No newline at end of file diff --git a/web/src/views/ChatPlus.vue b/web/src/views/ChatPlus.vue index c53df95..4d15102 100644 --- a/web/src/views/ChatPlus.vue +++ b/web/src/views/ChatPlus.vue @@ -55,6 +55,11 @@ 聊天设置 + + + 修改密码 + + @@ -63,18 +68,17 @@ - - - + 注销 - - - - - - + + + + powered by + chatgpt-plus-v3 + + @@ -180,6 +184,7 @@ + @@ -210,6 +215,7 @@ import {httpGet, httpPost} from "@/utils/http"; import {useRouter} from "vue-router"; import Clipboard from "clipboard"; import ConfigDialog from "@/components/ConfigDialog.vue"; +import PasswordDialog from "@/components/PasswordDialog.vue"; const title = ref('ChatGPT-智能助手'); const logo = 'images/logo.png'; @@ -229,6 +235,7 @@ const roleId = ref(0) const newChatItem = ref(null); const router = useRouter(); const showConfigDialog = ref(false); +const showPasswordDialog = ref(false); if (!user.value) { router.push("login"); @@ -712,6 +719,7 @@ const updateUser = function (data) {