From 247d7935c495cf852c44611f73c3b0c50d7e1388 Mon Sep 17 00:00:00 2001 From: v_hwweng Date: Sat, 12 Oct 2024 17:36:03 +0800 Subject: [PATCH 1/7] =?UTF-8?q?feat=EF=BC=9A=E6=94=AF=E6=8C=81=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=88=91=E7=9A=84=20OAUTH=20#10995=20#=20Reviewed,=20?= =?UTF-8?q?transaction=20id:=2020450?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devops-nav/src/components/User/index.vue | 4 + src/frontend/devops-permission/package.json | 2 +- .../devops-permission/src/css/fonts.css | 18 +++ .../src/css/fonts/iconcool.eot | Bin 5224 -> 6536 bytes .../src/css/fonts/iconcool.svg | 18 +++ .../src/css/fonts/iconcool.ttf | Bin 5056 -> 6368 bytes .../src/css/fonts/iconcool.woff | Bin 3092 -> 4004 bytes .../devops-permission/src/http/api.ts | 20 +-- .../devops-permission/src/image/P4.png | Bin 0 -> 1166 bytes .../devops-permission/src/image/git.png | Bin 0 -> 1073 bytes .../devops-permission/src/image/github.png | Bin 0 -> 1382 bytes .../devops-permission/src/image/gitlab.png | Bin 0 -> 1389 bytes .../devops-permission/src/image/svn.png | Bin 0 -> 1914 bytes .../devops-permission/src/image/tgit.png | Bin 0 -> 1389 bytes .../devops-permission/src/router/index.ts | 13 ++ .../src/views/auth/auth-aside.vue | 40 ++++++ .../src/views/auth/auth-entry.vue | 34 +++++ .../src/views/auth/oauth/oauth-card.vue | 123 ++++++++++++++++++ .../src/views/auth/oauth/oauth-home.vue | 53 ++++++++ src/frontend/locale/nav/en-US.json | 3 +- src/frontend/locale/nav/zh-CN.json | 3 +- src/frontend/locale/permission/zh-CN.json | 8 +- 22 files changed, 326 insertions(+), 13 deletions(-) create mode 100644 src/frontend/devops-permission/src/image/P4.png create mode 100644 src/frontend/devops-permission/src/image/git.png create mode 100644 src/frontend/devops-permission/src/image/github.png create mode 100644 src/frontend/devops-permission/src/image/gitlab.png create mode 100644 src/frontend/devops-permission/src/image/svn.png create mode 100644 src/frontend/devops-permission/src/image/tgit.png create mode 100644 src/frontend/devops-permission/src/views/auth/auth-aside.vue create mode 100644 src/frontend/devops-permission/src/views/auth/auth-entry.vue create mode 100644 src/frontend/devops-permission/src/views/auth/oauth/oauth-card.vue create mode 100644 src/frontend/devops-permission/src/views/auth/oauth/oauth-home.vue diff --git a/src/frontend/devops-nav/src/components/User/index.vue b/src/frontend/devops-nav/src/components/User/index.vue index d28f6e8eeac4..b9a16f11a92d 100755 --- a/src/frontend/devops-nav/src/components/User/index.vue +++ b/src/frontend/devops-nav/src/components/User/index.vue @@ -90,6 +90,10 @@ to: '/console/permission', label: this.$t('accessCenter') }, + { + to: 'console/permission/auth/oauth', + label: this.$t('oauthManage') + }, { cb: this.logout, label: this.$t('logout') diff --git a/src/frontend/devops-permission/package.json b/src/frontend/devops-permission/package.json index fc9e160bc907..5a2f09d877bd 100644 --- a/src/frontend/devops-permission/package.json +++ b/src/frontend/devops-permission/package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "description": "", "scripts": { - "dev": "nx exec -- bk-cli-service-webpack dev", + "dev": "bk-cli-service-webpack dev", "build": "bk-cli-service-webpack build", "server": "node ./paas-server/index.js", "lint:style": "stylelint **/*.{html,vue,css,sass,scss,less} --fix", diff --git a/src/frontend/devops-permission/src/css/fonts.css b/src/frontend/devops-permission/src/css/fonts.css index 537d663265d6..55df3876aeab 100644 --- a/src/frontend/devops-permission/src/css/fonts.css +++ b/src/frontend/devops-permission/src/css/fonts.css @@ -77,3 +77,21 @@ url("fonts/iconcool.eot?#iefix") format("embedded-opentype"); .permission-icon-warning-circle-fill:before { content: "\e112"; } +.permission-icon-down-shape:before { + content: "\e113"; +} +.permission-icon-yonghuzu:before { + content: "\e114"; +} +.permission-icon-yonghu-2:before { + content: "\e115"; +} +.permission-icon-oauth:before { + content: "\e116"; +} +.permission-icon-codelib:before { + content: "\e117"; +} +.permission-icon-user:before { + content: "\e118"; +} diff --git a/src/frontend/devops-permission/src/css/fonts/iconcool.eot b/src/frontend/devops-permission/src/css/fonts/iconcool.eot index e0ad1eaf50ac190323998292730140b27a68d6fc..5b431b515a7797f5b3434f25c25c63e2f03caa85 100644 GIT binary patch delta 1736 zcmY*ZZERCz6h7yD??=1dw(I(F`?1}w>(^klV_kcTz(%KxF__w+pXyw7{j zbKdv<(LCNRjr#!ZdZ#5_xOe~I*mQ29_zVD^0Dw)q3;EHnear6vuoYxC_YEI=@q@Q} z{{avwu7#n!`8|ui^S?v6cggf20_0nKivE8=78xoWKDy`A`FY~|iQ=K*k=^;WzmqAN zFBtiS{LxWtfqnGcOL61Dd|~gDsW@Z-a2pGbjgGv0_=@)`5vn&RDF6t-6Y~k!CajyE zpDzo22J*klUqJ{RdwBoe3-%R%fyG!0;9l#W7oT{V+amPwrzkc7Gf=t=CO>S2(zmz+ z@06O^O7xb7*q+iy%+b9LKv+l=DUFjQ$cPyytFLgHP=g{tzNUf;u!UlYvXB-zI_oXf z@D95R+~5HfygXBrW7}S`{ z7bHQlnb}RJ%mt}@!JIJRN!jVNptHs)mrt6E+UIBZE%pi2K@6UT)l`k{Q8jeiFfPU7 zotW)JHToZ*t302in%d@ZkN#5T^@^X>ThZ3HwJ8E(VoC~Q%({D zDc5*9ur|&a*H(FtY0WAtTI@~Zfh9>vVz|!Tv$1E9OE&v@TN;;nSuJ;~t?PHJZ#4$m zgH&aaPqEuzg+{7SW2sI|C$Y(fGN~rVB-w^;4YM9SOO@aG-xhHl`Gq!*sZ9-r?K}}u^ z-LQccCShe#mR6I)q$2$?X+0ZHsj@>u)g2-rs~dMjq!)5|RI-%bf$b?h9c#f1wIhj0 zsYFn$w1KyMZdMSRec|0QH|HbXX0)15IbFyyp)xGVA*0SKVT|DS4KcqmZ03EHbmKLe3Ga*C&EcX0f`haPG|z`;3VPOp%7J26O+9Vue^N<*YhjA|&^E9#Mp$67I_uPmaDA$Lfy2EvHpz+7s<^J{a5 z_}TL7cAGdX)dy)58!k@RP#Kq9Zks5X3NI<5Ggv<5aB*d%U=l==OOh<62?ebaRyJkK z<_Qe@=T7(yVn2VAeEIjsN0>#_?B$>BiX~8sF?-SOdsPWr&zL01?s3V7wp)UJj;ubY zY#%kNic>&jrnA=G-!ck3rdg>Nlu3>t2n)S`?xDgo z=Tn8L@}*i|9lu)Vt1Vw*w`o>yo?$@migXPM?D0&!=3gEd7zix)YxV4kX)J&EJm=Ge z;i<>huz2!hofpwt_eQa3v=rz&@yo)u^19-<$k1P!aW*UHK^48|Lq7&eKRQe8@+$}T Wcek}Y@#$)usd~NYvsJ&8i2nt(e?-Xu delta 416 zcmY*Ty-Nad7=C|ur-?Txc7;Skgu+o54S`c1ZY>c`Q540Y=7C-c37P~t6a4k^)eV+GuKaOU4s@G76ZU>v*m}Hgu*=D?6ohD-Y zM6{AL^+NmM>WoN;0L4shZ+rN7tw$uaiR4owt*4@k-2l8DAZ9=qsEcvbH$cQNi{+)1 zZDZdvcp{fi>Z1oELCjx(PndeSz@n5vKMX#$qnqgyU)7L_f~z=qSjg`dKYs2SM4=80 zuf&K%&DLl`A{!wwNBI|ut3b{6OV(Ck_M2qMHCRgG#VMSO(MgGkQ=mQ)+%|qdR%o60 zBim$8Too2rh#Nv`9=Zn*0S&-9R{OhKf$Gd@$bMIsXc^oK7sKYV72@OK986yRDOPw- lZ20L51}6r2O?v0o9<}x6IhR}Ap-X`&yb)IUeV9AfegPE + + + + + + + + + + + + + + + + + + diff --git a/src/frontend/devops-permission/src/css/fonts/iconcool.ttf b/src/frontend/devops-permission/src/css/fonts/iconcool.ttf index 96486c21fbfadd067c698035a9f4d9bf19dabb17..d25c0c74c7a162f310fca5756b291fad78db4913 100644 GIT binary patch delta 1675 zcmY*ZZERCj7=GV#Ztrc^+jiY;d;787uHR#;`{>$R1U5EhjKLfsM8-gn@*x9Pwjc&j zw1YTYWW$ceK;-ME;X@LG{?Z?4G!lRK%Ygr2l4y)1{xTstI^WwB6HoJ;x9@Y_^Pcm5 zoO>tnu%j3$ya0eF0AS0Wd~V`9-^vF7Y!%_|{;}h)ef+_|KL94uYhiR>Ztt=m{2!9- zLxMg^gmjM=>Hk-R=xF}PvAv%yE|R~WNFN;=-;?Y3yER4o1;aj{J2rtWu%Fhwq&FVQ z<@XiMg;6Vj+cE&QbjGoHZ)rE{vbw+x9#FvxzS~!rj5SD+ zR)(+iIsbL-yaHeVTqLWYEihjNZHD&<^x}1Xk9`Vt5QpbsEd{H4R1MvBOo;JBH)gw0jr~XInRGnSio`1g4PAB&Cn`q7 zW_3?YPc4zHnAY+8uFd;{5#i3<+}8pI8^%Xgp}J-uSFhowHKs_gf3Uu;c~>YNe{nD@ zTNkmwadqhDHdm2v%)+adQ+8Xb1tx07Ct0O!eXm1ro zh8x`doBNl!B#UpLrE!Iq)pEDmwsGgiHe;gRqbLi!$nJv;8Yx1JrMfZQieWoSlrnDyvciUe0+YWu$Jsmg>*I=Oq>$mmQcCd^;I_KUDA#ysh*>2&+n1H+ljaHd>( zIVK2+tqmVV`z4b}>W`n-j219bn-myNQjwdX4>pyCEcFG+siEo)Q3|uV@r#=1WS2)J zr1UQAOzG)(3uY+qt%zhwH>{+acYJA)5u1FGJrcL%qTVL7SxzY~WSLMI+Ix^uh2;oF z@yCX^-z7WckVTd)A-4}PUjF3ZEMv0=56%`yV0#~PSf1F@s+Q(Ft*L3-lNvhlSYeH z&zl94*(HhvtNDzKwlg+XG`903M*IsW{Dx;ge~)DOx2H#$)ucJfKRaY=pcdl}hwp7U zVw*LKqQm2o4)3rA{Tx|+P~I_NQDsFyWahKBi2Rm}y}O>(ozwTo0UETxils~#h2+@+ zInImuV)<&Vua4iW^VOEGvir1aAjdGE_eOh11orfLz2;vT z3k(kjR{FJicEdcCJ93fpx%^o1=`AcwPS$x5y>%xG1-QMX_69?Li78DodQe3#`p}Po fQnOO(l-@japs%CjnM_ypOjYVtnXSs@)FA%?4v0BO delta 400 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 literal 0 HcmV?d00001 diff --git a/src/frontend/devops-permission/src/image/git.png b/src/frontend/devops-permission/src/image/git.png new file mode 100644 index 0000000000000000000000000000000000000000..5499993efe3bdfe14596e202fb85b190fef581d6 GIT binary patch literal 1073 zcmV-11kU@3P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$?n@L1LR9Fe^R!@jkWfVW>eD}V4 zpFT&%1S^6msD-qYDQIOeh|(fljAURf+E@^ovj|*>5h7Yd*~*0*QIL6+(kd*5K`BBS zr1TLP%_QlFjx*!Ts59^0?|xsu?>X0e@7{MO3`=MZ{N8!rcg}atx#yhk578q1-!s4q zC1Ar_`vX&2)u$})X5|rC+q{ICd_S1De&xdU!GmuG5FP+x;A`L&UIisT%?^uff5~67m9>*vI&dysD@F#(x`Ef2=Fo4NxS8p!qdbm$+O-bYjnE;a5 z_RN>J8p<7`JYs1emgLZhk2e32r_(lo^=}{U zCRWEu$qF*}=D*P(Y)3euJ(W>8Qmt;flbtk}wmmS%@vjx1*Vf70?&)+z%7cLXM6)Pw z!RX2zmGSB)>od+%Q~xQ?l%VI`{^hEk>`^Qa8Ta)W5>mbwQxyMj>a+I`O<$~ShsskK zwdM)u=NF&~{B*Y{Qvx+-wus197GWW`m0JmoMXIhj4n4!4L)rs8+p3i_p2VEL-bV=d9MbwY4VUx`ei5y@^LU?Ujj9dL70pslfv7vM>ugSiO+x0Ytb1cnr9k zT+{=bcYpugb#AUZ>%T1WX%&uWr90|v86|?*kdO?eED2z zJW~P)hJl@cyI4}fNhY^$OkX{Z{@8;3{Wy`y380~#Sep#klGGHbjh6Ts1c6J8$8enN zPn0wrNO=JqgBj<1C6GG7N0^}~n!9XFvP+3{;BZW34X=$KXjx(7CvquL$uMdADO*~F z(-4d<`L_P;S9@PAydD2C_AmX*>w$*ro^3~0`m%gvW(Sv%)$z~T%)STbKjtlKn*pc1Zd?Bg9&^_}*}B^B zZ($Ig`EuV&3%(8V0=(~Yg&A<(Uwq?8r(WuL-ra_7(m`_(`0k(_oWkxaf|6Y@4M{& rZ(7k9xF=W*IFl7E&Mao&0n5Oj33D~acZoOY00000NkvXXu0mjf54Gz} literal 0 HcmV?d00001 diff --git a/src/frontend/devops-permission/src/image/github.png b/src/frontend/devops-permission/src/image/github.png new file mode 100644 index 0000000000000000000000000000000000000000..ea93e0216837dde60f6f03a63c75b1b64ad5dfee GIT binary patch literal 1382 zcmV-s1)2JZP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$@&`Cr=R9Fe^R!eLfMHt?fA8UJ? zHlc16N+K#~N>$uCFO(jNk*c7eS`?umPKXOZRV5A}xI{%2N)J6y1RQ!pTp|!bMFm6> zAw?Dh(nRC|RBqB3fkKE4Z5=1Eh2uX6+_9laXd;=6`9A{V#rBo}G&ME3 z&>kt|^Jg_(?}XF+tZ~pd085Lac+KT@f3Uc?cr%em6j(WSy(xfDC=}#*{#8TQyWzyc z8mO=~MM-)uAPDdNFgcloOvPy27XX|;4Cn8|d6evMI}LiA!1F(PeZE&lM@Qq8bj3=H za5!9R8pcQH9dK?yE{EX+~7|)`wpy$w4&`^_R242S{m#Y`^U7+p5SZf%@0kpwnGU=!Z z2||trhbIvBb5Mp^z9@*|z~t0a4+MK!TU(zi7K^6@j+-@k{%_DoZuUakE9(GI%;!%tLMgY~-OJE6UCOe273upEg4XfDMRkT%bO6vzvy}>A=Q`@)XN3JH zO55rtj` z$^;mmGYm(eQvPP6AqeEST4JbXhd&1a3QLv-$GM@@U|Vl*s%eLyU|rv$AXw?3h8zIE zn59gN0`hjat*z}r8*NL|Xf*1>!_|T)S`oxU^#`l$005N3j8OgR>grnzZPVra+}s-w zdKBHt0qTjh%~|NEMVH6(O;J_XuyzCS9CqN>RJH4PDCCl>t1pklVhJi+Zfrk!@}X2Z z{Td?oGWb5b4E`BDx39_E5dl0LNlB7EB|IG9->MYlEY5Tsms3~v&YiDAM~@CPHa2#Z z3e;w;xw-kJW1-Mj$-C(R=$%9DJYZvU*vvpxRh2!xCAI@VUtgatOVTB9vv?0$a{2r- zyZ7vQ8^xJIZ-C(^vAY1~)&)Z>;oirUZ!{y|M*vPPS+{-gKwaqX?{_>#4gf^wz`=vF zPX7=XVDJF9iJl9wiVsUsF?a&1QRjDvAj>&aiX<~;`VCSdagL(C z5>S*&LqkIw9w91IHUfk>Gc&V-2wcYh-J5vK9$(I8KmP0X?dz#j>NEUYG*ScqjT?_R zUNGYPqTA~|KRi5K_Gg6XRs=wp1=?%L(px#JkJ0*Up)`L4aa{S=<+h*~H#p`>rIa(K0V2gqLR_!htn o;y-W&G8+n&)!A9^M1Vx#Uz9KKrEXANGXMYp07*qoM6N<$f-)0nRsaA1 literal 0 HcmV?d00001 diff --git a/src/frontend/devops-permission/src/image/gitlab.png b/src/frontend/devops-permission/src/image/gitlab.png new file mode 100644 index 0000000000000000000000000000000000000000..76d322b30f3cd2cea3c8124e5b42e7794412faa3 GIT binary patch literal 1389 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 Af&c&j literal 0 HcmV?d00001 diff --git a/src/frontend/devops-permission/src/image/tgit.png b/src/frontend/devops-permission/src/image/tgit.png new file mode 100644 index 0000000000000000000000000000000000000000..2822934bd99da8cc9d113a50cf382dd47ccfc0dc GIT binary patch literal 1389 zcmV-z1(N!SP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$@*GWV{R9Fe^R%>WnMHD_WbN7{O z5|YNowlQhd1d@g$1(g_;P(;z19~B?{Q(GvB+EPR@ z##PdXp*235M4GfV4NbRAHoKd5_U?U*XKr`aWbf`KNJsgBZPp%;R=n94DI@1{|*;!eu%6ge~bJi@&s~9LW}8X zN>?(xidjaev)9z43EuH60x$q3fs!Du+{isKixlOZ$lbAZQn4t2@Yv`~M)9o;basM9 z9WEOHLsLk0G{`-k;&JpKB6>U~h3*t`T1uOO+S*n&Q5Wp3&;$#SlxYPOTC ztk{SFxlX~MZt8}MdRtRnRK81;X#s40>2M~kzf~ZF4-y0Rc>VNHTU%W`IucCE8i)|>yw^dhR4}jCv^*iD z%LNWYCzL6RqVr^XgKh6`vN@Ng{#9v9LCx;g9Htt37@^Bd@$YR!fjJZnqS{Z#KYR1Q z)D@T9L~~LVkD_jd`WPG*U!i4*9=T z3$_|SgfAl(BF`s*+PAg2>r^-}xE+&|hqJ+6AcPZqZ&1nxxMp;4h1LQ$*I+0Oyh8}K zw4YOcr2U;IdZlq&3UK2hawD?1SR~;jqqEbKqXSqU+pxb^1DHtwSn3AnhL1aG9|N|9 z1GyJL;3Y-^I8Is&Mi&gEWB`t!8R0x1SvtW#VRlEOk*lU@G%-rEaX897%d7Pxv>4&5 z)?KM^7fiR{%}|CxQFWD#M1vXafiufL?Re{{1-E0e6#QlIZ$3TW*}Q^L?I0ejPI1&{ zn2x7Ey6=^%az9xFti76@hszusDhXzFNo7lM@T-691`m|ql~)S4xbxs_s2`@Z87R$J z4S~53T$>xKwg7TogV(s#WhntT301IQ_Bz~Ixk}_p&kz%*m0Tt9P7w(~ zSJB?>D>IhEu_2!ofsi@@gHyv$l2Z&{U+#owN*@ITfDOUL>_`tlpljb-=M!=%RR360 zi_mjWhxJvmCTkT;YqOB!%)-mmL_oRo%~Z%m$_Pk>2kQ^z>Y2(~4{;72eS3@e>ZwE) z=d2t`J<~81$|!vA?}CRh4I&DXL=8M}TNPZG9Fni%a!~*?-l)s1D-F5}I`PzL%ZC+sglUSAK*$vWuW1w*(6?04J`+KM(ul`DC|^+_PlhQf7z| zyv6kR_np1}QS;oFzr@d-3G_f95{CN=H^4pl import(/* webpackChunkName: "Permission" */ '../views/m const MyPermission = () => import(/* webpackChunkName: "Permission" */ '../views/my-permission/my-permission.vue'); const MyProject = () => import(/* webpackChunkName: "Permission" */ '../views/my-permission/my-project.vue'); const GroupDetail = () => import(/* webpackChunkName: "Permission" */ '../components/itsm-group-detail.vue'); +const AuthEntry = () => import(/* webpackChunkName: "Permission" */ '../views/auth/auth-entry.vue'); +const OauthHome = () => import(/* webpackChunkName: "Permission" */ '../views/auth/oauth/oauth-home.vue'); const router = createRouter({ history: createWebHistory('permission'), routes: [ @@ -50,6 +52,17 @@ const router = createRouter({ }, ], }, + { + path: '/auth', + component: AuthEntry, + children: [ + { + path: 'oauth', + name: 'oauth', + component: OauthHome, + } + ] + } ], }, { diff --git a/src/frontend/devops-permission/src/views/auth/auth-aside.vue b/src/frontend/devops-permission/src/views/auth/auth-aside.vue new file mode 100644 index 000000000000..59505cdedb50 --- /dev/null +++ b/src/frontend/devops-permission/src/views/auth/auth-aside.vue @@ -0,0 +1,40 @@ + + + + + \ No newline at end of file diff --git a/src/frontend/devops-permission/src/views/auth/auth-entry.vue b/src/frontend/devops-permission/src/views/auth/auth-entry.vue new file mode 100644 index 000000000000..5bb7b48833b6 --- /dev/null +++ b/src/frontend/devops-permission/src/views/auth/auth-entry.vue @@ -0,0 +1,34 @@ + + + + + diff --git a/src/frontend/devops-permission/src/views/auth/oauth/oauth-card.vue b/src/frontend/devops-permission/src/views/auth/oauth/oauth-card.vue new file mode 100644 index 000000000000..bef3d4c62499 --- /dev/null +++ b/src/frontend/devops-permission/src/views/auth/oauth/oauth-card.vue @@ -0,0 +1,123 @@ + + + + + \ No newline at end of file diff --git a/src/frontend/devops-permission/src/views/auth/oauth/oauth-home.vue b/src/frontend/devops-permission/src/views/auth/oauth/oauth-home.vue new file mode 100644 index 000000000000..852a60650728 --- /dev/null +++ b/src/frontend/devops-permission/src/views/auth/oauth/oauth-home.vue @@ -0,0 +1,53 @@ + + + + + \ No newline at end of file diff --git a/src/frontend/locale/nav/en-US.json b/src/frontend/locale/nav/en-US.json index 5b7438c3eafc..a8cc8dad2e8e 100644 --- a/src/frontend/locale/nav/en-US.json +++ b/src/frontend/locale/nav/en-US.json @@ -217,5 +217,6 @@ "undeployTitle": "The {0} service has not been deployed yet", "turboServiceDesc": "Turbo compilation acceleration service is based on distributed compilation, caching, and container technologies. It aims to provide efficient, stable, and convenient acceleration services for businesses, thereby improving development efficiency. To use this feature, the acceleration service needs to be deployed.", "bkci": "BK-CI", - "tencentBlueKing": "Tencent BlueKing" + "tencentBlueKing": "Tencent BlueKing", + "oauthManage": "Oauth Manage" } \ No newline at end of file diff --git a/src/frontend/locale/nav/zh-CN.json b/src/frontend/locale/nav/zh-CN.json index 8ced66c74957..94d2a9c273b9 100644 --- a/src/frontend/locale/nav/zh-CN.json +++ b/src/frontend/locale/nav/zh-CN.json @@ -217,5 +217,6 @@ "undeployTitle": "{0}服务尚未部署完成", "turboServiceDesc": "Turbo 编译加速服务基于分布式编译、缓存、容器技术,旨在为业务提供高效、稳定、便捷的加速服务,提升研发效率。如需使用此功能,需要部署加速服务。", "bkci": "蓝盾", - "tencentBlueKing": "蓝鲸智云" + "tencentBlueKing": "蓝鲸智云", + "oauthManage": "我的授权" } \ No newline at end of file diff --git a/src/frontend/locale/permission/zh-CN.json b/src/frontend/locale/permission/zh-CN.json index 0884a7d2831b..d247b545f0c5 100644 --- a/src/frontend/locale/permission/zh-CN.json +++ b/src/frontend/locale/permission/zh-CN.json @@ -59,5 +59,11 @@ "共N个监控平台空间": "共{0}个监控平台空间", "项目尚未升级到新版权限系统,点击前往旧版权限中心申请": "项目尚未升级到新版权限系统,点击前往旧版权限中心申请", "项目级用户组": "项目级用户组", - "资源级用户组": "资源级用户组" + "资源级用户组": "资源级用户组", + "xx创建于N年前": "{0} 创建于 {1} 年前", + "xx创建于N天前": "{0} 创建于 {1} 天前", + "xx创建于N小时前": "{0} 创建于 {1} 小时前", + "xx创建于N分钟前": "{0} 创建于 {1} 分钟前", + "授权代码库": "授权代码库", + "授权账号": "授权账号" } From cc4a7b7c5b673da9e2561f472b0ae8ab1e7aaf79 Mon Sep 17 00:00:00 2001 From: v_hwweng Date: Sat, 12 Oct 2024 17:39:47 +0800 Subject: [PATCH 2/7] =?UTF-8?q?feat=EF=BC=9A=E6=94=AF=E6=8C=81=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=88=91=E7=9A=84=20OAUTH=20#10995?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/frontend/locale/permission/en-US.json | 9 ++++++++- src/frontend/locale/permission/zh-CN.json | 3 ++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/frontend/locale/permission/en-US.json b/src/frontend/locale/permission/en-US.json index 5a2a0213c057..46a010b155da 100644 --- a/src/frontend/locale/permission/en-US.json +++ b/src/frontend/locale/permission/en-US.json @@ -59,5 +59,12 @@ "共N个监控平台空间": "{0} spaces total", "项目尚未升级到新版权限系统,点击前往旧版权限中心申请": "The project has not been upgraded to the new permission system. Go to the old permission center to apply.", "项目级用户组": "Project User Group", - "资源级用户组": "Resource User Group" + "资源级用户组": "Resource User Group", + "xx创建于N年前": "{0} created {1} years ago", + "xx创建于N天前": "{0} created {1} days ago", + "xx创建于N小时前": "{0} created {1} hours ago", + "xx创建于N分钟前": "{0} created {1} minutes ago", + "授权代码库": "Authorized Repository", + "授权账号": "Authorized Account", + "我的授权": "My Authorizations" } diff --git a/src/frontend/locale/permission/zh-CN.json b/src/frontend/locale/permission/zh-CN.json index d247b545f0c5..9412d07f7c52 100644 --- a/src/frontend/locale/permission/zh-CN.json +++ b/src/frontend/locale/permission/zh-CN.json @@ -65,5 +65,6 @@ "xx创建于N小时前": "{0} 创建于 {1} 小时前", "xx创建于N分钟前": "{0} 创建于 {1} 分钟前", "授权代码库": "授权代码库", - "授权账号": "授权账号" + "授权账号": "授权账号", + "我的授权": "我的授权" } From d1d0db80aee4372c5a8724f7f1e70c37c87ea35c Mon Sep 17 00:00:00 2001 From: v_hwweng Date: Mon, 4 Nov 2024 16:03:01 +0800 Subject: [PATCH 3/7] Merge branch 'master' of https://github.com/Tencent/bk-ci into issue_10995 # Reviewed, transaction id: 22749 From 2e6f0e171276bf1a48a29d793d6877d3ca9c775b Mon Sep 17 00:00:00 2001 From: v_hwweng Date: Mon, 18 Nov 2024 17:23:39 +0800 Subject: [PATCH 4/7] =?UTF-8?q?feat=EF=BC=9A=E6=94=AF=E6=8C=81=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=88=91=E7=9A=84=20OAUTH=20#10995=20#=20Reviewed,=20?= =?UTF-8?q?transaction=20id:=2024090?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devops-permission/src/css/fonts.css | 3 + .../src/css/fonts/iconcool.eot | Bin 6536 -> 6700 bytes .../src/css/fonts/iconcool.svg | 3 + .../src/css/fonts/iconcool.ttf | Bin 6368 -> 6532 bytes .../src/css/fonts/iconcool.woff | Bin 4004 -> 4080 bytes .../devops-permission/src/http/api.ts | 12 +- .../devops-permission/src/image/P4.png | Bin 1166 -> 1534 bytes .../src/image/git-expire.png | Bin 0 -> 1329 bytes .../devops-permission/src/image/git.png | Bin 1073 -> 3799 bytes .../src/image/github-expire.png | Bin 0 -> 2540 bytes .../devops-permission/src/image/github.png | Bin 1382 -> 3276 bytes .../src/image/gitlab-expire.png | Bin 0 -> 1885 bytes .../devops-permission/src/image/gitlab.png | Bin 1389 -> 2912 bytes .../devops-permission/src/image/p4-expire.png | Bin 0 -> 1656 bytes .../src/image/svn-expire.png | Bin 0 -> 2031 bytes .../devops-permission/src/image/svn.png | Bin 1914 -> 2064 bytes .../src/image/tgit-expire.png | Bin 0 -> 2217 bytes .../devops-permission/src/image/tgit.png | Bin 1389 -> 2558 bytes .../src/views/auth/oauth/oauth-card.vue | 387 ++++++++++++++++-- src/frontend/locale/permission/en-US.json | 13 +- src/frontend/locale/permission/zh-CN.json | 13 +- 21 files changed, 404 insertions(+), 27 deletions(-) create mode 100644 src/frontend/devops-permission/src/image/git-expire.png create mode 100644 src/frontend/devops-permission/src/image/github-expire.png create mode 100644 src/frontend/devops-permission/src/image/gitlab-expire.png create mode 100644 src/frontend/devops-permission/src/image/p4-expire.png create mode 100644 src/frontend/devops-permission/src/image/svn-expire.png create mode 100644 src/frontend/devops-permission/src/image/tgit-expire.png diff --git a/src/frontend/devops-permission/src/css/fonts.css b/src/frontend/devops-permission/src/css/fonts.css index 55df3876aeab..6fec16069a70 100644 --- a/src/frontend/devops-permission/src/css/fonts.css +++ b/src/frontend/devops-permission/src/css/fonts.css @@ -95,3 +95,6 @@ url("fonts/iconcool.eot?#iefix") format("embedded-opentype"); .permission-icon-user:before { content: "\e118"; } +.permission-icon-tishi:before { + content: "\e119"; +} diff --git a/src/frontend/devops-permission/src/css/fonts/iconcool.eot b/src/frontend/devops-permission/src/css/fonts/iconcool.eot index 5b431b515a7797f5b3434f25c25c63e2f03caa85..0f98e7e47a9628c22b77703e76c948990ffa26bf 100644 GIT binary patch delta 530 zcmYk2!D|yy5XQfGyKfUsnkJ^{?xt4S#HON)5WB7lQcIzr7ZC(cf-Y_B3P~Gi#HfLK zs1OjU%k!_0TqH+5Df$;k3%S%#4;~fqBG@<^Dfr-H-hA_$8QyEpbzH;A16y`zc>3gS z=!Of=HqZx>e!}M^WgxTx~8Z!zd*UO$8 zH)AO(l+Mr2&67ayU{6Y#?)7L|%7eY0%$R1;G>>IWN>bX&j1ZZc6IK2v|2(9KDwPYtyT4Q}Um8B)FWzXM1r}#vhywE2fT|c7m>4P^ zN=#N`_S{^^%)`hDbR8H-Zf;}IW1M`5)r5(GVe=1GMuE+>Vk?+{HmgaROpcK}46+FT D`nXa? diff --git a/src/frontend/devops-permission/src/css/fonts/iconcool.svg b/src/frontend/devops-permission/src/css/fonts/iconcool.svg index 083cfec781fb..c1861a89e2e9 100644 --- a/src/frontend/devops-permission/src/css/fonts/iconcool.svg +++ b/src/frontend/devops-permission/src/css/fonts/iconcool.svg @@ -101,6 +101,9 @@ + + + diff --git a/src/frontend/devops-permission/src/css/fonts/iconcool.ttf b/src/frontend/devops-permission/src/css/fonts/iconcool.ttf index d25c0c74c7a162f310fca5756b291fad78db4913..ec49f7f979ac0e67de6d04891757c9f303306cfd 100644 GIT binary patch delta 533 zcmYk1&ubGw6vw}BXD5j!O%u~}@Yupd((RHs@*^3qYIFRLl@v^?L*;w4XHv{CB8M@Hk zw`PkVW?AL-mvbwF)4vcm*#N#hc%x7DAP6SSyW$epF&LrCE6f%32zk`gFKCwX`UAD* z|AisBDOfg(Eqc|*fn9dPpw0W~zHfrxf(TQ@qno|F-ZJjU0{0^Nme|sB;`OQ9OoXe@ z`6@0`qL&9kfhlcD*NDw`rX{7e`NqIDA#5a&g%!>~bQsFTwGt*WBQz8lFO}WQm0=Z4 z(s=3W#MBHK=pG+RNn_nEjY)ZY*p+FeETzt*6(uN@OAin!VTYan$v;miq%1|1q12Cf lG8q>?lbO!V>|2A1`nxI{bXFH~9|xjO)*ml8&W-*T{sPmqY`y>h delta 369 zcmZoMeqcC3x!#F^fw6{xfgvn8H?iQTr1gCU1|}OIK9QbNnKrA-^EU$nE08b1kdd00 zqIpWHAE@>L5SwKH1=z1KPXMy_0I^C&Zb?PT#{d6;=3N2uGjj5i6Agdq83FaPfYj$E zRunL5Go%CMC4hW|yu{qp2^>-x+zbq&APZXy@{3DWORNDJD1HQ}NP6NPWqTG>fqZtdxPF4JZoIqywb6z~U?nQ9wQ$P!%K4*oub|lk1o~ zfr{8B2QpVpc4O}61iBjxBsbq<)?=J3#cBeyescgTqrm2?qAQpfr6$)&m`vUxaTsJF E0HBLd?EnA( diff --git a/src/frontend/devops-permission/src/css/fonts/iconcool.woff b/src/frontend/devops-permission/src/css/fonts/iconcool.woff index 8dd403380c77e0b3d4e3970959f0e3bfa1259f78..bea13ee6b7081685b603ec77be9744d852ee6972 100644 GIT binary patch delta 3545 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 delta 3468 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 literal 1166 zcmV;91abR`P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$?_(?=TR9Fe^S6ygSM-={McN2d} zvfH3i@kP*}4}lUWwoNzltw><#23V-d2C*X5Zln%a@&JD-P#VM zpUy@s`YWZnSt~LUhhatfkZR81m~6nz{35JOT*posLA!B{vWp$&N<*@F8m9FFQmv0G zaH&-xe?5}TC$$1F^)=-A7C76V&=vpP!L!DjUE57|0FrNLE&-J}3MuP+P&|R#>Kut9WN}n`rzIMc1-6AR@1E*RRv6or%MA^t;+L zel(l|0ta~lE|)jkNg6mps-`NsDLgGFkjeLGtg~e=x9-KN@xW#{2a3htG(&s-dw$oj zjx(O4uBtGBeq^70qGg5Mr@wFb39|=AkeV^9c_dcQ$Q76`mLWCg9~Za2DUCD`*+%>Z zniDsXH`Hy|=#ukvLO39rkd{$itrnMFo#Q!}G&zn7!|v7lcXT=|Oy^!HT}Gb^6WP2$ z`57LYu5Jhi%76U)-lr$=THsB2s)xMxwO@O`A*sj+1I zDvzB?MzxEOXJEGM(u2{M3dI{sI0qoVF(TwIp@hn6LZ9_46Oa&l zVA}_H411iMkS-(;vxtlJl=tTtzio~9S3uw{M^xenD(mUU-!w7k7*~=}do8cvRcr+r zALEGPb``$^DqES>d`g{SRjIT_5koNJ{d!=a@UcFoUGaSovAM)fcoY=JDb4B0gi0>R z+Y*QCK~jRszkGVh3sir?{#Mp|42ybrT+-v&yvh^vSSR=((JWOz>UkyQULtCS!A0U6 zr*w+~U(=ypCvygCguDk-3O3bqOza>RXCF`mmQZGlvLA&pu2|}apq8C?_AK{0^B?^& g@zTEU|L-gC3fI^{1m#0oZ~y=R07*qoM6N<$g0ssHyZ`_I diff --git a/src/frontend/devops-permission/src/image/git-expire.png b/src/frontend/devops-permission/src/image/git-expire.png new file mode 100644 index 0000000000000000000000000000000000000000..4efe9ecaeb4b1583bf2766d788fa694a848a0b7a GIT binary patch literal 1329 zcmV-11Px(>q$gGRCr$PnqO!fRTRd*Gn4(3G&MxuY>N1&7!4AW%qHy2Zo`5_NqrD1DOL1I zBKlag2p06AieN3+CqaA>Yjjlv#ncC3NwPCZH@k^~frg?L2_m8?OU!PPX77I5s)lx~hzFw(8tOkUb*LA(z|pv_edborH30jp2113m z07|$uW9OGU0{?0-W(a}fhSB+l8(r4`Mn*1$T3YgL%p&Z@$VP6tA-ECe)i87oz>7t1 zXAK{~cG9m0ZO0ujZsmp)h@N^_gkYMB8`>EsUK{}!o1A`75n{%Z$DR|{|IZOj(Bo0< zf^0cy0I5_e91JzT%b+1yv8u*1&Vid>h{f6$Wptzgj9J+y6yO5@x626CAa;?#&&T!1 zu#A>80MpDw1gTvzBDIQDQTkEWdo39~X#g_CcS5WWU?=QSH9c0;0oiP}sklZDcws~p z$Va2yKNFD{9ldb35^AW*FfBATTzs^%bE%x?vH<(YFPl5HPt1selc;Mw1=A|)C>TA5`@8nQEl2W0A?n0 zBKHY^K~ENM7pWZpfcaBH*NzbpZ{~l?4w#&rY+Ea-!>Hh*Q^9}kE;r@H1e19675h?i z+?+b45-y8v`TxsVDG)b(0&Z2Cvr&wo~*bB zs{5FGI;LwM+g`@4+(iQ4U&hy$MzrUM5CD|=523>;W-1;9?0`7%_^FFUFTU)J@Gh4mSb$#k$# zH=Rvu#qeAr(eZb=P4gdv(jFvP2%d#2;2hW1=oQzNnVw2$@hBQsf%VrMVP*c1rseIQ(LDs<9vr@YP0Do!2z2;HJK70O@pkFOPx@kx4{BRCr$PU2Bk3#TEWe-+Al+%ko-Sg5V2LQHho&B`S&!UMdiyyCqnq#w2Jd zpdxCOsT5^v?|irC-tN<16HF;+1gN0BH_pQlpukCB2w(_M;0P4B`(_3(1SoI> z3fz4&0~i7nI06OkzL^0G0SX*}0(alc0EPesjzEFCZ)N~PfC5LLz}+`9fFXeY5Ey!U ztWzXtUqyuJ4C)KY>aJxyGyf6Hue~*E{J&CYodRGufL{anaT^fa3E*7-j{x|n4fQ>% z;=37OaCt1!t+#!SwlD^aI{@mG)$jvu5TFsjrvP3CumC^}fO^lO{C@`W83CAv-}Yju ziUh6$Xf&}rWu)?e02;uz0G0uG9>C`SwgHg;&uZ}z0hr3mE7jh9iBpK_UIIoCQ=hD& zb6{{cW&r7@4!~9bj{{f=;NJk6v+bX62rz2WV_`eqrGz4(3Ig8*;2Z*3*#^i(0?5;z zNWL??2H+h4D^fE-R$cT50hsB+`=9I7p|PkesH}T5=^+3e4`g}rm(VcknJ|+rn!otr z>t*Ve(jUNO0Db{rP#Yu2ExiG&04xXaK7b_v>^8Q~NHt#&pu9Y0ZSR-p8e!@Srr$8Q zFTf=k@z`;vs)3oFwG=N|IOFiC2>5 zrxS_5(#20ye4S~hJt06e8da-z4=807I4uGDZ_HE-AVk^C^~*H2?dqRMl0-OWGgl>= z<4c$R=_bi1%vkY+0OjSeP<=0Z5Q1F6tR{jWPre_LJu(Jt8XZgG$Z7(=l~BRCZ$EtP zS45fnD)4{+Ojk^(?5rYsh$5aupz}d3!S`V7G{TV0ri?8Fe5ft;Y}wAzmG$-8a z8A%+;co1aKr>@NEtyTOoBAy7M9t4(gGd^}UW0=<1%#8s3gEi(w?C=MH(nM`#G&5fW z84rSd_xB8!^y2^zBG4si0aH+oxd!0RECg0ZfL)c3R_xD&`xz$yqER)pW?+X-VU%b_ zX(pV=$36+VsX4@ZyTq;C*o5Ys{Rzm&;N+7}nV$jj39UTz#SkD5gX+X3LjWgeD5bzLXGmG{QV61E*w+CNLZVFi1?3O50D^@|_A@z7)0@@Xnd(}5gW zoRX#D9RM2K;G=5dEt;U6pHXx70+&i2XX zR1pB>#&{X-Lk^hA$zstMNIPG^H3D35f2<_b+}uyA&{az75@r%WeNmXS9L@eO5mqmn zF;0XU4lXwW=nJ50j%-j#(EkqLv*h8_Z_+(n>J|ZL*yOqW1C}*{fhh#^1klkJ(HA3_ zw=uAS6kc95W8Az$?3xSUrvUn;ehPeJ_E8KGwUNr?@%c9Zya_=5-R|NF0WQ4njpB}W z!wAy&onj0CkxZqo^xbaH4sMuV1Q5?;Utm#EyWn1#*;2>O+m%S_N|3IaGVjua<}n04 zo`^~TpCx+c9|2@*SOlwHN}g1HIzyx@m)%X z$k8m2J^}80X&5UE)}Ve&zR>hJ8~~<$n)H9PjgJ=38h5Bp-)%|dt`h-tORWVs0?-GQ zMQ=!?Yec-laTc))1ekX*Tlyr;syl=I`5jH%pxN52mHKk=BiF4xBxqLyC<7oV>baPw zDE`R0fT)h_b4o}T2oO6}E0horVaratKc^0~rM@f#LD9ZALN$vY{<$om99%@>M}i;D zk%gc`U6!X_-Uno%%W>9_F9X(=pqe`FAYcgK4vsn7iy=VHhRz+s4FTN2F=u-*1jyOY zxnsB?fIB$mY%gvQ;CukG_n*mc=uN342-((cS?(MfeJ>Di*bwO&FK&@))!JX5pu{?n zu&8lx$+|D2(P`W&_8IMNs*}L^S+Kv8> z^fZaUa%&Pqi?;62=$xYPo0UpZ50 zJ_$r+NFZ%JWCr##^J+B5*DrqR#zWUQjyW^A5wNKMMAu)OaihN@8NFCe%mUchnhGV? z%7nuxQ^3U3S;J#G>uCiotB-nnaksz|XJAbt8jZGG4l(kcmo5U-AYwX^HTOu{CZ!dZd14oJ;|35#Y4sO&Ft-+V}SW=;g$K zHr6!+I20(tYFO%-{q=YeJxd#_qnA2P29Yk^B7jW$=cQ(Xu>d-`oM34P&`JPi4Wf-q zn7?aB(}N$ske-H+TLh4PpBaxC82Bnu&Dd4c0eYp4{Z;U;jh8W>4tst!n< zvXP@!Zj~dh1fphpQ80x50oz}zfGxkRY$w2hriG2OW zSP5hb*Z^;7;^2`Vs0_nC*TERv`ys0EoRGZU6kprW# z(2w>so*ZDSpR$zPxob*W5MXW~o41n{T$j^Qu|j~p`_(B{!X5(66_Oi;17gvp91Q_( zxn_O?6D)7d~>W2tj46c=lT?KLw>V+l%T#_6mUd0NgpHC6qDe zaY3l{1AaJ4<}{#A>t}}mv6!{to!$P_6LN~6%k@{yo{-4&@BYCiXN3SRV`jQb z0|7&TG{DP;riK9d5XCfnFa$^gynJYC2#^m^Ov495fHc6%ho-(Dz~y&5-#r`*^kr73 z!Xi0k{C!a(3B&XkD_Hl@{OP}Jl|T_`S2*W1=a7tbaG0)8;V(k5T;rUc)e=&c)2Z0N`C-y z+0zBdi=ag9JC}-FS|vLFOHvm;h{kW$iZ2Kt-pd|=vKo371tL?Kc^C*n0uWjVFqsq9 ztBW45*q%a4R7uVOFeIrSHZg1HwQpd#v`U_Sk$GQ`?xj!dGvS9;{vkm0y+EjLV>l2m zx`36Q%)rG2bj~9Jv|jKa*SyHnzcSm?|A7b0H|0RSKxF5(;}M`+7(5D$vlX!bmk%?5 zyugZzm)!9q!d4=CcjzUSo=3w+1UTTk+(1^`ynh%2V+k0qh$TZd9|#~4cXHp~b4fiV zQ9E<2=#>d}_>KT5k6FWd*}YT%*AOsWi3+L4WagZI2N0dZXObzBRmqEX7?o+4lf;3?ex8_W>Ee=+gYB0~UA;r8EPh5-JHiKiAB0(c6y{{}Mz z@LxPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$?n@L1LR9Fe^R!@jkWfVW>eD}V4 zpFT&%1S^6msD-qYDQIOeh|(fljAURf+E@^ovj|*>5h7Yd*~*0*QIL6+(kd*5K`BBS zr1TLP%_QlFjx*!Ts59^0?|xsu?>X0e@7{MO3`=MZ{N8!rcg}atx#yhk578q1-!s4q zC1Ar_`vX&2)u$})X5|rC+q{ICd_S1De&xdU!GmuG5FP+x;A`L&UIisT%?^uff5~67m9>*vI&dysD@F#(x`Ef2=Fo4NxS8p!qdbm$+O-bYjnE;a5 z_RN>J8p<7`JYs1emgLZhk2e32r_(lo^=}{U zCRWEu$qF*}=D*P(Y)3euJ(W>8Qmt;flbtk}wmmS%@vjx1*Vf70?&)+z%7cLXM6)Pw z!RX2zmGSB)>od+%Q~xQ?l%VI`{^hEk>`^Qa8Ta)W5>mbwQxyMj>a+I`O<$~ShsskK zwdM)u=NF&~{B*Y{Qvx+-wus197GWW`m0JmoMXIhj4n4!4L)rs8+p3i_p2VEL-bV=d9MbwY4VUx`ei5y@^LU?Ujj9dL70pslfv7vM>ugSiO+x0Ytb1cnr9k zT+{=bcYpugb#AUZ>%T1WX%&uWr90|v86|?*kdO?eED2z zJW~P)hJl@cyI4}fNhY^$OkX{Z{@8;3{Wy`y380~#Sep#klGGHbjh6Ts1c6J8$8enN zPn0wrNO=JqgBj<1C6GG7N0^}~n!9XFvP+3{;BZW34X=$KXjx(7CvquL$uMdADO*~F z(-4d<`L_P;S9@PAydD2C_AmX*>w$*ro^3~0`m%gvW(Sv%)$z~T%)STbKjtlKn*pc1Zd?Bg9&^_}*}B^B zZ($Ig`EuV&3%(8V0=(~Yg&A<(Uwq?8r(WuL-ra_7(m`_(`0k(_oWkxaf|6Y@4M{& rZ(7k9xF=W*IFl7E&Mao&0n5Oj33D~acZoOY00000NkvXXu0mjf54Gz} diff --git a/src/frontend/devops-permission/src/image/github-expire.png b/src/frontend/devops-permission/src/image/github-expire.png new file mode 100644 index 0000000000000000000000000000000000000000..4954047bf17f01bed4e2892a0f6769c431a829b5 GIT binary patch literal 2540 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 KMNUMnLSTa98Xdj> literal 1382 zcmV-s1)2JZP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$@&`Cr=R9Fe^R!eLfMHt?fA8UJ? zHlc16N+K#~N>$uCFO(jNk*c7eS`?umPKXOZRV5A}xI{%2N)J6y1RQ!pTp|!bMFm6> zAw?Dh(nRC|RBqB3fkKE4Z5=1Eh2uX6+_9laXd;=6`9A{V#rBo}G&ME3 z&>kt|^Jg_(?}XF+tZ~pd085Lac+KT@f3Uc?cr%em6j(WSy(xfDC=}#*{#8TQyWzyc z8mO=~MM-)uAPDdNFgcloOvPy27XX|;4Cn8|d6evMI}LiA!1F(PeZE&lM@Qq8bj3=H za5!9R8pcQH9dK?yE{EX+~7|)`wpy$w4&`^_R242S{m#Y`^U7+p5SZf%@0kpwnGU=!Z z2||trhbIvBb5Mp^z9@*|z~t0a4+MK!TU(zi7K^6@j+-@k{%_DoZuUakE9(GI%;!%tLMgY~-OJE6UCOe273upEg4XfDMRkT%bO6vzvy}>A=Q`@)XN3JH zO55rtj` z$^;mmGYm(eQvPP6AqeEST4JbXhd&1a3QLv-$GM@@U|Vl*s%eLyU|rv$AXw?3h8zIE zn59gN0`hjat*z}r8*NL|Xf*1>!_|T)S`oxU^#`l$005N3j8OgR>grnzZPVra+}s-w zdKBHt0qTjh%~|NEMVH6(O;J_XuyzCS9CqN>RJH4PDCCl>t1pklVhJi+Zfrk!@}X2Z z{Td?oGWb5b4E`BDx39_E5dl0LNlB7EB|IG9->MYlEY5Tsms3~v&YiDAM~@CPHa2#Z z3e;w;xw-kJW1-Mj$-C(R=$%9DJYZvU*vvpxRh2!xCAI@VUtgatOVTB9vv?0$a{2r- zyZ7vQ8^xJIZ-C(^vAY1~)&)Z>;oirUZ!{y|M*vPPS+{-gKwaqX?{_>#4gf^wz`=vF zPX7=XVDJF9iJl9wiVsUsF?a&1QRjDvAj>&aiX<~;`VCSdagL(C z5>S*&LqkIw9w91IHUfk>Gc&V-2wcYh-J5vK9$(I8KmP0X?dz#j>NEUYG*ScqjT?_R zUNGYPqTA~|KRi5K_Gg6XRs=wp1=?%L(px#JkJ0*Up)`L4aa{S=<+h*~H#p`>rIa(K0V2gqLR_!htn o;y-W&G8+n&)!A9^M1Vx#Uz9KKrEXANGXMYp07*qoM6N<$f-)0nRsaA1 diff --git a/src/frontend/devops-permission/src/image/gitlab-expire.png b/src/frontend/devops-permission/src/image/gitlab-expire.png new file mode 100644 index 0000000000000000000000000000000000000000..01e75145fb2f9ba589e670d1f08b5a389852c9c2 GIT binary patch literal 1885 zcmV-j2cr0iP)Px+7fD1xRCr$PT6=6$RT%$$w|l6I5}zT2D8VP9i0j?pK02+4CW?vCI8cKcjR|Tr zktnE>Sn+|c;44PaM8Sw4YK+m40P1w>ZR>hF9fA13%tsU@7)4RX+Vy_sY^%<>cIUL* zt-9Smx8L{se&=_;^Y!$6C5-Wh#`yX%Zoqg2jBy9Xx4;-Lfbk|+^cIN4+Ds4H^UQee z`|mm*Yiw-Hj$}1$*svimY4Vht0qrU#ToW?%4~xlPv;nP7@?Iip0wW66=G%7d&SC@< z82|*KI6DK(R5cvD7>QuLW=j z7@u2aa2gSLs(eKm;5f-sm}o1|*F%`;zK|8XQ#E-hcqi^Yz>KB+9G(VDH%OKIs4@lOz^V`l7Myd}qH#b*QRv-KYfMfpFpe?tI(<4O0Dkdl!(CoTLRHb=6 zgXRoK#Kb(qvg)>}Brg{0IBheTwDw#D_VaAkkiOJ3&7V|wl?`y5)LBft9>9@<60NX| zV3X<_P!Zd=-B@$t?GFHa>!8?O9=!PtX8i{$oXQ47W3DKDu?7ASOW=3YRkR?i>p!Xp zP{le<$5Bj~R{)$jC{{GUrM9U*qQa?UK>z;l0C4KRk}!TG(0t1ZzNaEU6&pXkP?31hv|x-XMXKyANnHtEX%a#E zydLf7hKAbR!(pW=pw)42BEsXtk^S|5Lc%t5LmDpujK*9SKu`kO3n9YwGTUHS12%2y zsHr(P{USgY$tDMouBz~ksjsj9K_MnDG?D0-+~Z}$CrhO)9|5lt(pQ?M*;OcJSOXlV zt&T|(-G7Q~@_yW#%)N)Ek{=>(8bB8)5_NKx8bhIAsw4xVvE(%XiH<7mzM@dS;299E zwGDkuX$Cm%W)SB3rP5bk!baQB&oA15EnD0P2iD*_05!e}^^bgSrhD(Ca5(&1z7z#} zfD=z$#mq1Gr_X<8Vp?cf!IzW`*uH&x)z5pno(JJ_|7H4`Va)+mxK`Ko%ureKRzM<= zn$hF2=>8}AD$i$f20qc48}nV)c-$l$S}%|-+8}K z&Y}#+5k{l!lSuPcF(5|e2l}wMLX>|1*iu#DEh^>ett114Ix(#!%3SRM_vD!w`r%6k zpeC<}R?FP{`c?r0iK7WO438rKN!`bn;L7`1*6upPs%+P!B5m==O?gyI5r z1GMJQ2?sPypFTaU7%L6;)c~PlQ%6Tl%^yAIg87*tepr=H=q?XfbWjyG>$)yJ?tFWE zHz23naol4;bQgmc6d1B(z*w8D$Syx))~qjmTlE0q5i>yK6f=I(x^H2k8wi*%Xo2Dg z`(&m&uu}CnTZ&O5YCukCES9Wi(9;ae==&Rg%$l|+G`sK|uat%6iyajMgqT>&Jt<4P zggnY}Ma9FRSu@3tuSfhDH3LR`rFjyL8&EE9VzhLOSHNgFUoLsaE1+E7#AxXl^A+$X X6K`T)6$Sr$00000NkvXXu0mjfyTN>l literal 0 HcmV?d00001 diff --git a/src/frontend/devops-permission/src/image/gitlab.png b/src/frontend/devops-permission/src/image/gitlab.png index 76d322b30f3cd2cea3c8124e5b42e7794412faa3..89c47fd9737c53fd7f15da00ecd0ca806f142287 100644 GIT binary patch literal 2912 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

kb6vKXnE) z^L7rz-cOAI2jX&Z&Nu`>9F#uGdk!(+v;21B-0ctp;-K_d-t&K-D*0{!cg=$U0000< KMNUMnLSTZok%^rE literal 1389 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 Af&c&j diff --git a/src/frontend/devops-permission/src/image/tgit-expire.png b/src/frontend/devops-permission/src/image/tgit-expire.png new file mode 100644 index 0000000000000000000000000000000000000000..7831ed48f714a476e55661fa3a28993b8b329874 GIT binary patch literal 2217 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 literal 0 HcmV?d00001 diff --git a/src/frontend/devops-permission/src/image/tgit.png b/src/frontend/devops-permission/src/image/tgit.png index 2822934bd99da8cc9d113a50cf382dd47ccfc0dc..308bc65981355711305b6d8b5faa0cb1e6a2491c 100644 GIT binary patch literal 2558 zcmVPx;xJg7oRCr$PT6<7b*BSqvd++W7yNjT_M2zxK8JdPztuHV`G%83{YJyR0j5Zxj z)QqB?BxV|2$0k)!(6t3RxdU_sLAPyz35(PHY&No) zf=qS^R!WYTsqKw#{+wb3uo}Rx8+oY-z#0Ib0H|`+gWUuGCGn{{lL)wt0PX3LQmq5P z*yjS63m^x8=!!hI01&r0-OocL8v!H{5SMt0z){MZXCD634CVnV0nBW|KpTM10j#R^ zkh{+m0G&?9ohgZopepi5KE%=Qx$^zxYr;; z<&0pr(h%58AnRW0cDYce)5$s(odzIb!OrdAkPJZKR%4uGMu8j@z(%-IN+fX=NJ_^WIji#_aVH;o$G6koKBKM0!_a7S8OJu?=Jc&|b#0mz*vD z+6(E9D#sxYU`dZ5go^~Vx_svI;6#hk_Tb3sY4__v=?_5D1^`t6xYJs>><|Eni?yYv0zGJ7O9wXXkE&|`j4#X(YFn@fL&%* zEeQVtU~~?E1?hoiLOk8H`rvqx5(NzVS59X^ijAOJSM_ig|0eht06c6i7`EyGZKzm> zVBH0P1Iy4`W`t&a`%)Hp<8;RbjlLw%0T~WW5lygVZAvZ%2u=K8yRWHQp%pk=i^nI0 z)#P2Eda!%<6m}}e4}t)G3rK~Jqu#>W)Vlzbuy(nc3Uer>j?%UWgecm|wfBY1%$RYh z>G1$JoB%DyCy`t{b~)nH0&_DVc(uB`<|w0a)&nByFCj)cXhnwsfD&@hsvuL3u1YqrZR0Ee z%uAAL6A6~NX&nIJLhYIR0f3u{sb7VOu^pjF`DuoP*n-48Ums2B~|b zpfMbE?Yhh(sLJ2x`3JvIXiZU^LS*$wvwDkWUT@Z`@*Z9fSZ~Z1G7o(AE0zbi3_zBD;>ozi<~05WO7)a* z@BbxsnZ5je0(jW~#4Y^7$CFb;@*Ll0`MWBp$|qo0KI;=mZqE}Auk;#$NS`oh1TUCG z3$8u9iEoR}qS8{0Fl`8a?*CJ06kaHw?xyY|7ZfIyB4-DQAtFt#@9{(mAfP^I( z{-j1+K?$qj-QN}`Jm5E|C_vrY;K#J|R%$RcY&-%z{qTKhE^a-#2dzSbn81PX5pxENUdoNr!V$l;VbNK+go23G8ct?7^ zLfn5Vr1Ui+U}ymZb)Dib2MK##m?$Q5q-;V~)#ktadODk$0%*e^1W6@2i#kT8T!_UJP)4~&R;ND5(R^&<3Qo?^B zeg8D~OFJ0_xJ7BPOV_&$0ArAlx^pZD83PeQt5(UF&~wzSWL0-#FFVQFVN393-d>z9 zyYhI2Sv=_J<&QnLk4W2KYWR5YgvZuve@CgYuFWts-~~+TGa4VBUDr^0W?HOnqFVq+ z&dA`6mn&4JN>8V}s5wl+lWzP7kZ}9&9}iB&p@JNoC_F2D>Z1w9jDAVjabv&Kp?tOP zI9w>ZBE^VOQw0v?=fEmjF*G2$9su@=rhX9QrN!u27rMbG8LQJCQ{Tza=~?Wv%VNd` zcy`B{i(g1boPrY&-6Imi{9lBHT5!7f05WZS z(i^I6NQ>1ykyE&J_1pnaV*u)c-7k@6xPz>_-=fOe^t~rLE!fJZL`;yjLvM8u{+hQ3 zd3ts=@Ob@~hH5ud&vZ_dPs(F{amWX)Cbc_?)IEP8I!t!v&|BlDRJ}RyWDbF@Ta$ z^U|MFDY+d08B8e6BvZlQRyUlL9~ zIFEnaIfkG3MxflJM=y0C2KzlP$+%rvfb9F@TuVIw<_V*N zheOFL@MGCE9BF#b+qH0CG30_>vPc`3!;Ohq>C37=ffHabKZ32kMtDkyyUSr&R=6;^ z(>FvIcAdH<*3fyRm_V@%1g`)HZK0LNj=Ec*ILZ?&Z>jasU7T07*qoM6N<$f-k4Cvj6}9 literal 1389 zcmV-z1(N!SP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$@*GWV{R9Fe^R%>WnMHD_WbN7{O z5|YNowlQhd1d@g$1(g_;P(;z19~B?{Q(GvB+EPR@ z##PdXp*235M4GfV4NbRAHoKd5_U?U*XKr`aWbf`KNJsgBZPp%;R=n94DI@1{|*;!eu%6ge~bJi@&s~9LW}8X zN>?(xidjaev)9z43EuH60x$q3fs!Du+{isKixlOZ$lbAZQn4t2@Yv`~M)9o;basM9 z9WEOHLsLk0G{`-k;&JpKB6>U~h3*t`T1uOO+S*n&Q5Wp3&;$#SlxYPOTC ztk{SFxlX~MZt8}MdRtRnRK81;X#s40>2M~kzf~ZF4-y0Rc>VNHTU%W`IucCE8i)|>yw^dhR4}jCv^*iD z%LNWYCzL6RqVr^XgKh6`vN@Ng{#9v9LCx;g9Htt37@^Bd@$YR!fjJZnqS{Z#KYR1Q z)D@T9L~~LVkD_jd`WPG*U!i4*9=T z3$_|SgfAl(BF`s*+PAg2>r^-}xE+&|hqJ+6AcPZqZ&1nxxMp;4h1LQ$*I+0Oyh8}K zw4YOcr2U;IdZlq&3UK2hawD?1SR~;jqqEbKqXSqU+pxb^1DHtwSn3AnhL1aG9|N|9 z1GyJL;3Y-^I8Is&Mi&gEWB`t!8R0x1SvtW#VRlEOk*lU@G%-rEaX897%d7Pxv>4&5 z)?KM^7fiR{%}|CxQFWD#M1vXafiufL?Re{{1-E0e6#QlIZ$3TW*}Q^L?I0ejPI1&{ zn2x7Ey6=^%az9xFti76@hszusDhXzFNo7lM@T-691`m|ql~)S4xbxs_s2`@Z87R$J z4S~53T$>xKwg7TogV(s#WhntT301IQ_Bz~Ixk}_p&kz%*m0Tt9P7w(~ zSJB?>D>IhEu_2!ofsi@@gHyv$l2Z&{U+#owN*@ITfDOUL>_`tlpljb-=M!=%RR360 zi_mjWhxJvmCTkT;YqOB!%)-mmL_oRo%~Z%m$_Pk>2kQ^z>Y2(~4{;72eS3@e>ZwE) z=d2t`J<~81$|!vA?}CRh4I&DXL=8M}TNPZG9Fni%a!~*?-l)s1D-F5}I`PzL%ZC+sglUSAK*$vWuW1w*(6?04J`+KM(ul`DC|^+_PlhQf7z| zyv6kR_np1}QS;oFzr@d-3G_f95{CN=H^4pl +import { + ref, + watch, + computed +} from 'vue'; +import http from '@/http/api'; import { useI18n } from 'vue-i18n'; import GitIcon from '@/image/git.png'; import TgitIcon from '@/image/tgit.png'; import GitlabIcon from '@/image/gitlab.png'; import GithubIcon from '@/image/github.png'; import SvnIcon from '@/image/svn.png'; -import P4Icon from '@/image/P4.png'; +import P4Icon from '@/image/p4.png'; +import GitExpireIcon from '@/image/git-expire.png'; +import TgitExpireIcon from '@/image/tgit-expire.png'; +import GitlabExpireIcon from '@/image/gitlab-expire.png'; +import GithubExpireIcon from '@/image/github-expire.png'; +import SvnExpireIcon from '@/image/svn-expire.png'; +import P4ExpireIcon from '@/image/p4-expire.png'; +import { Message } from 'bkui-vue' +import { debounce } from 'lodash-es'; const { t } = useI18n(); const props = defineProps({ oauth: Object, }); -const getCodeIcon = (type) => { - const iconMap ={ +const oauthType = computed(() => props.oauth.type); +const showDeleteDialog = ref(false); +const showRefreshDialog = ref(false); +const page = ref(1); +const pageSize = ref(20); +const relSourceList = ref([]); +const isLoading = ref(false); +const hasLoadEnd = ref(false); + +watch(() => showDeleteDialog.value, (val) => { + if (!val) { + page.value = 1; + isLoading.value = false; + hasLoadEnd.value = false; + setTimeout(() => { + relSourceList.value = []; + }, 500); + } +}) + +const getCodeIcon = (type: string, expired: boolean) => { + const expiredIconMap = { + 'GITLAB': GitlabExpireIcon, + 'GITHUB': GithubExpireIcon, + 'TGIT': TgitExpireIcon, + 'GIT': GitExpireIcon, + 'SVN': SvnExpireIcon, + 'P4': P4ExpireIcon, + }; + const iconMap = { 'GITLAB': GitlabIcon, 'GITHUB': GithubIcon, 'TGIT': TgitIcon, @@ -21,10 +63,10 @@ const getCodeIcon = (type) => { 'SVN': SvnIcon, 'P4': P4Icon, }; - return iconMap[type] -} + return expired ? expiredIconMap[type] : iconMap[type]; +}; -const createdTimeAgo = (name, ts) => { +const createdTimeAgo = (name: string, ts: any) => { const now = Date.now(); const diffMs = now - ts; @@ -46,36 +88,231 @@ const createdTimeAgo = (name, ts) => { return t('xx创建于N小时前', [name, hours]) } else { return t('xx创建于N分钟前', [name, minutes ?? 1]) + }; +}; + +// 获取授权代码库列表 +const fetchRelSourceList = () => { + try { + isLoading.value = true; + http.getOauthRelSource(oauthType.value, page.value, pageSize.value).then(res => { + relSourceList.value = [...relSourceList.value, ...res.records]; + hasLoadEnd.value = relSourceList.value.length === res.count; + }) + } catch (e) { + console.error(e) + } finally { + page.value += 1; + isLoading.value = false; } } + +// 删除oauth授权 +const handleShowDeleteDialog = () => { + if (!!props.oauth.repoCount) { + fetchRelSourceList(); + } + showDeleteDialog.value = true; +}; +const handleCancelDelete = () => { + showDeleteDialog.value = false; +}; +const handleConfirmDelete = () => { + try { + isLoading.value = true; + http.deleteOauth(oauthType.value).then(res => { + if (res) { + Message({ + theme: 'success', + message: t('删除成功'), + }); + }; + }) + } catch (e) { + console.error(e); + } finally { + isLoading.value = false; + } +}; + +// 重试删除oauth +const handleRetryDelete = () => { + page.value = 1; + relSourceList.value = []; + fetchRelSourceList(); +} + +// 滚动获取授权代码库 +const handleScroll = debounce((event: any)=> { + const target = event.target + const bottomDis = target.scrollHeight - target.clientHeight - target.scrollTop + if (bottomDis <= 1 && !hasLoadEnd.value && !isLoading.value) { + fetchRelSourceList(); + } +}) + +// 刷新oauth授权 +const handleShowRefreshDialog = () => { + showRefreshDialog.value = true; +}; +const handleCancelRefresh = () => { + showRefreshDialog.value = false; +}; +const handleConfirmRefresh = () => { + try { + isLoading.value = true; + const url = encodeURIComponent(window.location.href.replace('com/permission', 'com/console/permission')); + http.refreshOauth(oauthType.value, url).then(res => { + if (res.url) { + window.open(res.url) + } + }) + } catch (e) { + console.error(e) + } finally { + isLoading.value = false; + }; +}; + + + \ No newline at end of file diff --git a/src/frontend/locale/permission/en-US.json b/src/frontend/locale/permission/en-US.json index 46a010b155da..f4cebd6bfb61 100644 --- a/src/frontend/locale/permission/en-US.json +++ b/src/frontend/locale/permission/en-US.json @@ -66,5 +66,16 @@ "xx创建于N分钟前": "{0} created {1} minutes ago", "授权代码库": "Authorized Repository", "授权账号": "Authorized Account", - "我的授权": "My Authorizations" + "我的授权": "My Authorizations", + "重置授权": "Reset Authorization", + "刷新": "Refresh", + "已过期": "Expired", + "OAUTH 授权:": "OAUTH Authorization: ", + "无法删除 OAUTH": "Unable to Delete OAUTH", + "有 X 个代码库正在使用此 OAUTH 授权,无法直接删除。": "{0} repositories are using this OAUTH authorization and it cannot be deleted directly.", + "请先修改对应代码库的授权方式,或者请新的负责人重置代码库授权后重试。": "Please modify the authorization method of the corresponding repositories, or ask the new owner to reset the repository authorization and try again.", + "重试": "Retry", + "删除成功": "Deletion Successful", + "确认刷新 OAUTH?": "Confirm Refresh OAUTH?", + "刷新过程中可能会导致正在使用此 OAUTH 授权的流水线运行失败。": "Refreshing might cause pipelines using this OAUTH authorization to fail." } diff --git a/src/frontend/locale/permission/zh-CN.json b/src/frontend/locale/permission/zh-CN.json index 9412d07f7c52..e03c04846c2b 100644 --- a/src/frontend/locale/permission/zh-CN.json +++ b/src/frontend/locale/permission/zh-CN.json @@ -66,5 +66,16 @@ "xx创建于N分钟前": "{0} 创建于 {1} 分钟前", "授权代码库": "授权代码库", "授权账号": "授权账号", - "我的授权": "我的授权" + "我的授权": "我的授权", + "重置授权": "重置授权", + "刷新": "刷新", + "已过期": "已过期", + "OAUTH 授权:": "OAUTH 授权: ", + "无法删除 OAUTH": "无法删除 OAUTH", + "有 X 个代码库正在使用此 OAUTH 授权,无法直接删除。": "有 {0} 个代码库正在使用此 OAUTH 授权,无法直接删除。", + "请先修改对应代码库的授权方式,或者请新的负责人重置代码库授权后重试。": "请先修改对应代码库的授权方式,或者请新的负责人重置代码库授权后重试。", + "重试": "重试", + "删除成功": "删除成功", + "确认刷新 OAUTH?": "确认刷新 OAUTH?", + "刷新过程中可能会导致正在使用此 OAUTH 授权的流水线运行失败。": "刷新过程中可能会导致正在使用此 OAUTH 授权的流水线运行失败。" } From 1fb6d446531743acbd81471b8d82e3fdd330bae8 Mon Sep 17 00:00:00 2001 From: v_hwweng Date: Mon, 18 Nov 2024 18:36:20 +0800 Subject: [PATCH 5/7] Merge branch 'master' of https://github.com/Tencent/bk-ci into issue_10995 # Reviewed, transaction id: 24099 From 8dd5e34efa0aa72c36f01189fb39e2b9bcb7023f Mon Sep 17 00:00:00 2001 From: v_hwweng Date: Mon, 18 Nov 2024 19:06:59 +0800 Subject: [PATCH 6/7] =?UTF-8?q?feat=EF=BC=9A=E6=94=AF=E6=8C=81=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=88=91=E7=9A=84=20OAUTH=20#10995=20#=20Reviewed,=20?= =?UTF-8?q?transaction=20id:=2024101?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../devops-permission/src/views/auth/oauth/oauth-card.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/devops-permission/src/views/auth/oauth/oauth-card.vue b/src/frontend/devops-permission/src/views/auth/oauth/oauth-card.vue index 9de22acc5370..023cfce72e60 100644 --- a/src/frontend/devops-permission/src/views/auth/oauth/oauth-card.vue +++ b/src/frontend/devops-permission/src/views/auth/oauth/oauth-card.vue @@ -11,7 +11,7 @@ import TgitIcon from '@/image/tgit.png'; import GitlabIcon from '@/image/gitlab.png'; import GithubIcon from '@/image/github.png'; import SvnIcon from '@/image/svn.png'; -import P4Icon from '@/image/p4.png'; +import P4Icon from '@/image/P4.png'; import GitExpireIcon from '@/image/git-expire.png'; import TgitExpireIcon from '@/image/tgit-expire.png'; import GitlabExpireIcon from '@/image/gitlab-expire.png'; From 2dce0ee4c8595c6a9b78769ba376d77a57a6d142 Mon Sep 17 00:00:00 2001 From: v_hwweng Date: Mon, 2 Dec 2024 15:11:07 +0800 Subject: [PATCH 7/7] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E6=88=91=E7=9A=84OAUTH=20#10995=20#=20Reviewed,=20tra?= =?UTF-8?q?nsaction=20id:=2025503?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/frontend/devops-nav/src/components/User/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/devops-nav/src/components/User/index.vue b/src/frontend/devops-nav/src/components/User/index.vue index b9a16f11a92d..6896fb700e88 100755 --- a/src/frontend/devops-nav/src/components/User/index.vue +++ b/src/frontend/devops-nav/src/components/User/index.vue @@ -91,7 +91,7 @@ label: this.$t('accessCenter') }, { - to: 'console/permission/auth/oauth', + to: '/console/permission/auth/oauth', label: this.$t('oauthManage') }, {