From 9a5fe32c613e80d7ea8fe3e349250e623275af5f Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Fri, 5 Apr 2024 15:28:39 +0200 Subject: [PATCH] remove temp login screen --- .../apps/auth/e2e/login.spec.ts | 19 --- .../apps/auth/index.html | 15 -- .../apps/auth/package.json | 20 --- .../apps/auth/playwright.config.ts | 108 ------------- .../apps/auth/public/favicon.svg | 17 -- .../apps/auth/public/login.jpeg | Bin 30678 -> 0 bytes .../apps/auth/public/umbraco_logo_white.svg | 1 - .../auth/public/umbraco_logomark_white.svg | 1 - .../apps/auth/src/auth-layout.element.ts | 72 --------- .../apps/auth/src/auth-legacy.context.ts | 10 -- .../apps/auth/src/auth.context.ts | 13 -- .../apps/auth/src/auth.repository.ts | 44 ------ .../external-login-provider-test.element.ts | 40 ----- .../external-login-provider-test2.element.ts | 53 ------- .../src/external-login-providers/manifests.ts | 29 ---- .../apps/auth/src/index.ts | 7 - .../apps/auth/src/login.element.ts | 148 ------------------ .../apps/auth/src/login.test.ts | 21 --- .../apps/auth/src/types.ts | 16 -- .../apps/auth/src/vite-env.d.ts | 6 - .../apps/auth/tsconfig.json | 12 -- .../apps/auth/tsconfig.node.json | 9 -- .../apps/auth/vite.config.ts | 32 ---- src/Umbraco.Web.UI.Client/package.json | 3 +- 24 files changed, 1 insertion(+), 695 deletions(-) delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/e2e/login.spec.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/index.html delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/package.json delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/playwright.config.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/public/favicon.svg delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/public/login.jpeg delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logo_white.svg delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logomark_white.svg delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/auth-layout.element.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/auth-legacy.context.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/auth.context.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/auth.repository.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test.element.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test2.element.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/manifests.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/index.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/login.element.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/login.test.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/types.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/src/vite-env.d.ts delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/tsconfig.json delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/tsconfig.node.json delete mode 100644 src/Umbraco.Web.UI.Client/apps/auth/vite.config.ts diff --git a/src/Umbraco.Web.UI.Client/apps/auth/e2e/login.spec.ts b/src/Umbraco.Web.UI.Client/apps/auth/e2e/login.spec.ts deleted file mode 100644 index d34e280a56..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/e2e/login.spec.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { expect, test } from '@playwright/test'; - -test('login', async ({ page }) => { - await page.goto('/'); - - // Fill input[name="email"] - await page.locator('input[name="email"]').fill('test@umbraco.com'); - - // Fill input[name="password"] - await page.locator('input[name="password"]').fill('test123456'); - - // Wait for console.log to be called - page.on('console', (message) => { - expect(message.text()).toBe('login'); - }); - - // Click [aria-label="Login"] - await page.locator('[aria-label="Login"]').click(); -}); diff --git a/src/Umbraco.Web.UI.Client/apps/auth/index.html b/src/Umbraco.Web.UI.Client/apps/auth/index.html deleted file mode 100644 index 75922ccae2..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/index.html +++ /dev/null @@ -1,15 +0,0 @@ - - -
- - - -TKnzuV;JCD+20Y(2@yV~>~Jrw5#Qck-5(66NZtp(#Mq`XpN+kZwyO){8 z3<4sn!ZCp!asu@k^mo&OubR*%`M!@Sy|nZuq*C7darrJEyV4jxF{5}I7RN#5u2Zt! ziPNe{0TF%Y6C&{^vM$6qaoyK?7J2^2nn5D=nRwyC{J|DI?J%bSWs~AdDMuLHvH5Wt z7Vyn!KyK}7=8UiXdx{Y&a}$|a7smT^W6$M9bF~#2gq<8}R>D-U({(yh{-!?n=q@d) zo^W!YqYl)xjQR4+DL2htN|%>=5&O=1PhexBbq5{IYIJb7S*tEf&};6>N8UbC-?Zmi z3N -?^IP}Wb3XqyioFWj(63VxEviEy=Oq#)RFF)S`*vXXKxI?)mu1sI=)OZ z5xG0T7{aP|CcR$GSk1C< A-F ^tUee0A z4jm@9FP?9r2AaHf7~E=;qKXZtW58N0(5V+?=1j^L8kW4Gf-f){hle>tPk1?=Fig(R zOkux#>scPD><8q_pRAJ^`!8^b>b4i|@lH!A|2(s-;j5?a$k*-nre~Y5OyFLpl-d_z z|L)~DX}plHkAL86%h#-tv$WBn3n@$j0_F`dbWGA0GwwG19J_3kr}sYbL5q4!;OE+* zvx0`6vaZqQOs)m|&o$Zob_wp@<-`~L^oB*CM 6}u z ?bt^q7jd`pj*E*#6 z$<0~3+RWv(rNc@!;Rh&vN&4P3%7bCyL!S~9f;*ocvDaI7Def}hi#cTJc$B{KkkXpl zSKqvN>tfXPY#`lmV(iFOTs->pdD=#*57w^c!dmrBN+qAsed+dHhcQKW-DkV{rye%^ zpvlunx 1X4&)A{ z;%dTKQlDmA$k*$;`7>_0|6yIXhT>3LdHC~^GF(OYvr*q0x8KN((B |nKN;Hr z(gtE#zH3A)S|MvALHilaEMLu29(pLjGHFRee6gf&k|nS)-MWK;dEHGeUi(I8HNQzr zFt0g<{KfDAjnq(!^j0jj2+fL6^?~WLgZx4DOBdu=`Uj)puggZ>P2f8hcS !z#}s``d<_Y29t-`l>&Y zg{t%0t)7<(%w)S3qkYdsy6$uwdDu}e(xIz-Ui+-+1;3sZ*&_~ ?)nDBAOtdZsb&G0IjG8w~{(RKHmuNfm>3Z-$ (rNK5lml&nJtIfr?(Otiy6rdvyGrv#)>4Grm-eW5;hq}8^5 z=^qS!wd{4;MPuDxqTlK|PeU;O0OGQR`^g5+NFZJEQnt_TD$iY&jO@fD`j(nm=`4FV zuvR#r*2`^et0ibsPX!8l9hS=?X3=6E6%|%0QNbgLw3b5&C1Q;Xx70fCD--_1MLn2( znI?&e28#*FZ{9hFWA4DJ;#I&Te|-|rhZB;tg$@K(&q<&j&SAn&6lSy6WwV`_g(uXp zTRnH `zdBd^yU;hAC{2#8J>2w?a0ErCQJV2qe>RAf{!W?9*ElZ|JH6F!M zl`UZiNm7((0K}VJxf&$W@D>4zcRQ;808Wj^5X(z-!V-i6r5*rUV;HG~#rU=2>dL9W zY#oog3hTtDh)MqXh30!IC6-5+oUfm;TaPCZ5h|HHnzqTwXc3C^m(pS4a#F$#9Emv} z!?&^*ZFw^Vqta~u0CA{I-sk3zt6)}0_-6Jf%S(OaGTL&MwFIPbCeqjxOQp<0H-kw4 zo+oM2UkQhgPgdGZTZbIb@7vi4JG|7@gT+}tJv*)jS#iUH5>#xZ6)33ZB-Hy9xiBIs zdC#a-5Xmd};53tH;VqR!MVeK#9FfIX3n@ivD^Vp%H6-mlkV4CDC1Vtti!|b1X$~jJ zSPB|x qI8$~VVWLXgZ?X@*nYi|kVJFR(1Lo+9Gx}h zdov6VTF S=*bC5QiuR&CewKHGMhw2pCxPRdXh5@%$8hM2|pVM zMQu KwkR7ZhZBlV!*j?Yxrv7~qeQ$iemgYN*SXoM#>T)v?5a{! zLQ)AQFapF=F&l{5qSe;r=?Ip>pkS6zKAJn
o= ptLVv+7SmK2tB6H<2F%#6ZAvhy;$~veQmV zB++$L1Mk4EhvFjBPE0QZ1y>G+qnhH%sIQT C zZ8SO0eCJoxo}5%1G;<}GxOSgt;)hTaEi~l9@5kjT9S*>{cCxCc J~T5v02rMYn-`?}ILvb8pUzw4sEvkq<*iFyuq zPdL8ehUQ9&R0zabw*!a@8aJBf5$hOQlsk?VCCEsGJkjeX>MaQt+-y2tYXgYjcxbO1 z*>eQ9v9x_o;sBFCGuerGS6SS{(XtyuX`&JmJz57FL#fGHLWQ4~sU2pCQ1o{0i 0Wh2kYsy~=!)s>Ez3fm1e!Ho!tih@zh;zNk<8Y%q4?K#v$ zKs9eGA-{BPc3tL|U56V3QKO1)B|&2Yxh2yFCGi<)&f2prJZ!`5#Il!KP*N44k9(h( zKIX!+PVK^kDa8b&RGULWC4dxjua6BROd4JpNzA|RWhF>aN`(mA+>lED0QiL2Y2gmp z`m6mKY;82TH+pSVL`zyjr}G&5wS6(P(~=BVDVcXS6hG80G`W|8QB_3CT~lN8864t% zmcvq3lnUw+sO3v$knw5!wSu9=I2$2pakRLF1tCBXM$w?X6A!bbPpu}7JNHQMKk;4D z4DaQW-J@|CXer#X`HQmms-ClF%0W2V7A=^@L#(c&Xxa}>G45gw=XRw8j{U*`Q2+{) zXjowmik~dvbkT6Z^i+9c4_$~L(2V19+__)bH%ea)Q%4lvI_JE+`jqPL$Yu;W{LTU$ zK?y5cw8>Zl_lA2qP^Xrr(U5|oQkvF-hN5xO0jXS>u!@%$7ghJr{!gtM3-vJP=54_s z^&!($d&hLvhRnOpBi1p|zMPkoH!Lh$&~FD>T@KN(+FdtdI0O^Tz33B fvL-84$C9ji)8hXbB&4{MWCY@m_fA^!m8VXqooxPh)73b z9W+BoD>jLUaxN*@hfP-M%GJ7?S#5bj$xu>37#$Q?>!k4;m>r 7vGFTMVPUTAwR(PJVR>EkWwSwU)nmfA9vRanS*)-Fv`g5nRjUm^V*b z_YWH(X>kc!6cm*Tf(=0(8}%^eC9T0A_2Ly(d!u$kJCLk{fzd`_jnIXywS}Q-N`?g{ zhS0Z)C8{O#hm*$zS{io)5kOt$)xpfxN|L07B!W1DX~W#~(etq Xw;(Z-3 z*z?6m_i#_p4M^jm16R8@rBcF}NWxbLPGw?Rvu+{g(&I}?(4kbRCZO~$Jj3l7>+4CY zO`d7K;r{?N-LUTErzH79Lm7fMTTi;dt4^&4_f$ocqNNom)RR(oDpsT@DI|qj8aXa? zU7}UTVbVsUE){%6eZ?o2u4_4ifJH%l H*ugqZH*;kPcyv z{H>}u+P0{*MXRf^5VjRmoZCg1i9_k?nk#BgN+nqk&L7>}JeSJ+diDsFrmaD?UH&Wv zr^@uxA{GKvg=boe?hjDRom>joc15QPYp%_<1SnKt;d#)~J!cD4lT*EFZBuHSROnNV zuoP0Nq>x3Sqr$q6W qpDAG~2M!ScSnO}-sr(>3yIU4OpxSYf5m8sv!r`or| zImD{1GOl61 Sw|QZHHvxouSB92M+^_OKBxmTFZ*cJJ^cp6RktVt&GR4juvU= z-cC{te@_fsy!1gM$r*;=X{EmM8f_&@T7puZB-&K~iCm@<1-~VRlHYj)In<}KAt;c? zN0I?yr71PqtP(zCSxQpWRH90hYDv`22fzh;ESR7g>t|51)~6L!Z-OggDWVwbZMe3T zl!Xv&4H}ndmC-Bu8%Dp)GeCOk%r_4wQoppXj4G6xw+akGz8HN-)cIPPc)XGpT7`9@ zoy%XijZooWJ&2t4BAOA7x}~Xf$|RASIovYIyuwWoUzbI>4&f9f2Qlv$8%p_GnXyDn zpxKK?)uZm$X }cLCjj`V4~TGM;4Y8G?N(C<+9kA*L;Q=Q-{| O<*I~h})8d^@n)GXn9ncc%9cw5)B-UbRheQ&VNs3WORl-hf0)% z1tCQ$7!YV}E5Fx{S45&cQ4NpFi5%dxua)R$D2c4OZ5^&doT2hImENfw<0L^$m|KSi zlyVpHJuXz{o;!MkB28O@Xe0Q}bL_B=h{v&VyWc*O oRB`mxXc{v^-Fnxsj2~|=2r!}K_N}J4NF;d93m{EN>9QpxDfc9QR zf5;IP{{SFFSHM5W0TurM^auaM05K5&0s#U91P1^C1Ofv9000010s{aM1QIboAR#bN z1rQT5K~Z2rB2r;+6eBZ$!T;I-2mt~C0Y3o!)&Bs{2hRThzB~i*2CrA{XM}cu3DSft zXh1${Rm$7L<_~f_BZl>VA-xf?p$FNa5{?PSAa{p=cPn|@v7+WSp#qI)C>n9dE~j{Z z0yk=GZ_;sQBX)R4Xq1ov6p{w*@tdgV&N<(CYPDLe+Gh57M=kj`T=@-^{D(#ZsOZct zz1f&9rk@lCwxN)^-0URwA2{W=BiJv(IuRQ;M2m}eN1Ya*630$dNj%S%5c4Bo+8zXu ztt$o>8{^gn;{6##o47No>S^&`+9~8`)bQbb$7-xp+)_v%wZd+_8H$}dbK((n=TC@s z)0aaCH9Hpf9uRF&%bStet}q-~hvWYMy<2pkJnh0=My8D8;*88_l6CE}vnt(botsnA zg)$%;89m32Ic>?dGs+^2xuGKm&+}18BtYZmY=+Dak(EUm&%mQ29Zu^Q){fM($hsO_ zYY%Xx#m05zO6uAjnW _NQak%&2=#!jkzT6ajka? z!nlbSLraZ6$W&7-qn5@*4lHU&${QXyp)w!wN})xD%6&&gT&d+q;fGX^1 mO|&t z3pb-Me(5u2a(M8IXz#LR3@mBzzbQ={E~Cw2cF $|mNBfB B^e~ @#gJROG)UTt7*q@xc2mGNSjoLd`N_<1L5>CErE3Sr<6b~lY-mlsRcpV9`AH_NmOk*^x z7+iF(#x_^0)%Ih*;$^q=4wN$FKjUIHgJwJPHdQ8xB;54y&zWuYup2?M9n|>_JX2Xf z=`2p#3S2Mu8c5YN9guz~apI5l0mi7!pryi-?liEX=sP(4N$6s|{0gPCrNXh+k_2AV zJ17LujlQTt)F3n<`!st#ENEx~bfm*M*Oew27g_)fKNcZs5E>8)5UmK;>Vkp9{^Qx% z0}C2e3!waRNLGUaE;>_tzizBl+)_vzqdvd52Go+@k?2qGdiSf<>h*fR>7$n1jRSru zy}ywp0dq=o3-*+9w5%IW8GWZ wiQ3#r(i z{O%M}F=KP&p3$*+<6TWQGy6q6(mtoi8ykvKadEbeZ-(GMjd=pmB%7Zxr&N$B@iDDF zF^{xUNbjlQ!oB0S*4-p4K!PqjoLP>@_o*ez$Wb@g;z1G+dN@b3+wX9$RNPWHYM0;m zxh1zD!aCT*(Yh$vSTzoNfNf0Kxu3;JFT(LIqpdP#jE c1>)n*DVY2+`_i{3i;gv}Z0K>4Ew@ew`w9)UI;e4?^1)p~37UXp!R zqLt{adJA5FuS5LOMU>xQ>y?V}1ue)5Oe39nQehBl&Xq!o4w>wQfYk0mwIk*navLe_ z7{#*&^HgT`icA|HakVBEHJ|{~VmGZKE~c9q7}A>>$J!~e61U9~O<|ifLvoB%-hl*M zaZT;*7>LY?VM&8O$kJisUyX_1ONtS;TT^2sI#WvRsp7#mBD<)h%6O;HegJN9sb&q( z!ZoC~M*AqF{wIcW%y*-|nm oLpFOc@1JbVrS(a^on^N zLw7gx@QG)6vgSEQXPDYDXfYa6;$>f&TzB^hTwF$#)wDm4$K%EsY`oaik~EB6&Cd^n zLFvJq>fN6e{{V>bEb=afmm1?yQR0=(TYfJSI>8Z av4A_QFq%o`ihuwi}|T+6a$ z3@mDR3}^gsV3$_d;c{P|ylkO`jYx$W$7PId7o!*@fE^Rp$6>$ZLR07BnM#`Fu1YB`qlIxr6Wjp4Oo{kYN`MM`z z;(i_K{{Y(-zJ4DEqlZ;Go_lCt_?{Vk`$vsm+$r!t`%Nn4P&RSO(VkTl%O;#IE~IQ^ ze2816g-o&E@1k}%&kc_e{X>&fJ{L0L6=WQ@5x!x-=Inb=By$xOE8+II$Fha!fpcL% zSXgvVYDUU$K-^q;J7pcVDcU|?6p|~8k11O!6S2g;X%9yVnWVqhNcOm%+>exxnD!CX zRw`~P97ujmtzzW<17PiyOHnuI;L^#PyEB#+J&13}2a%`3#?<&W9@9-5C%AE< w?dPIAAvg47{C4Bf9obczYD^;^l}{LrtT+q5t0!$e z^)T+#m{c44&;WZ6Ojz~@fH%;}4H0hYJA$J>#8P1o_B4?qY&7EjBZ@`omffuMM{Z0r zw*J(ZWL^FG7_+e8jkPk{hH%!yi8$v~s@=L3R(mxnD*Q)EXU^pCS8Z&cjto(m94! FH!f*!r}nyPA^}PqI-r;m7H5S%qg6p0n0-S w4ucz;@os36du|dekq^nyj*C2Z{C6k?+WO@-Q{Z@b{{V78 zx=6UOsiQHuUgH3=-(Dc>JP!dCl)3xW`h;6ZJB)6&16;=M;7Fy|D5Ow|6l$C)jD|hP zF&j{whV&;NbRAB|(9t(H@GJyZa_8$zn26)~8khA3KFBRh?B?uyuyz|7GcguE2ZxXL z;|u6W0_LU1M!w7MQsU)*yLsjkFWi)V1xYeT@-;8&A5n^uSCHM0pCrzJg)~V%=l=j5 z0Gj=`{83Uj^Vr~Lq{E`n0B!2fqi!lpDIV)YTh3v_{{Uy`OA5#-l&P`vd^A@%&q{c+ zulw_4Qp^CQ0Y!&T6q#Ev`}15P-HUXdR87r3FZ@M3jQ;>5=D0!p3D(Z5xu?aC>M7@T z-1){6;h~r==ARU!<4=fo@e9@J^?uQWJBlO?>G3GLd(+}ww)Ub)-@@-#tJUiI$7e?< zZnVr>e-0z2Jm8Lq^O8CX=R|8BA_eG+c9Jy@5CZfCskh=JF8c~>D=HQ|Vl)pA3wi?H zhkgoS %LBTee{dc9t+z*V ED7jsXHjBW2vjB~fOGZr^JyaIVd zYaOEo_d>p{BB#jH<4}A>>G4uE5>EZNBOQeZ7|?)ynh_xMlv&SU9itB@jqYjjqxy<` zOpW*3(h|b-AX*5cVXATN4=9aG<1jb1x)Y19ER8GUDA`*51{W6Q5ukX~Fa1wJ#h8wG z@wny9?045V{#WJ^ ^Wn<%{#b92NxM+g!P#YZ4*7=y6jw?G^4ut~dgWFRRg zkrU)=&^PtPJ(n*O>Krtm>8Km}Om6%ly43Kn>6S1$ILESO wnq!#U_hH*e zy%Fd);Nep&W21|FvD@?ANc01@m8Bd6T+9}Lw?`QFe7)M<0tp`ClNBP;V^sWwEQtRA v6R4Y0wq`BoX^D}3=`o}G3Q3XnKDd|58T0g-MA*_}Pxcjwm`Py2@qho>T_+Ml diff --git a/src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logo_white.svg b/src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logo_white.svg deleted file mode 100644 index 3de8e82ed3..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logo_white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logomark_white.svg b/src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logomark_white.svg deleted file mode 100644 index 9372e25d3e..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/public/umbraco_logomark_white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/auth-layout.element.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/auth-layout.element.ts deleted file mode 100644 index 163ece1736..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/auth-layout.element.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { css, CSSResultGroup, html, LitElement } from 'lit'; -import { customElement } from 'lit/decorators.js'; - -@customElement('umb-auth-layout') -export class UmbAuthLayoutElement extends LitElement { - render() { - return html` - - - -- --
-- `; - } - - static styles: CSSResultGroup = [ - css` - #background { - position: fixed; - overflow: hidden; - background-position: 50%; - background-repeat: no-repeat; - background-size: cover; - background-image: url('login.jpeg'); - width: 100vw; - height: 100vh; - } - - #logo { - position: fixed; - top: var(--uui-size-space-5); - left: var(--uui-size-space-5); - height: 30px; - } - - #logo img { - height: 100%; - } - - #container { - position: relative; - display: flex; - align-items: center; - justify-content: center; - width: 100vw; - height: 100vh; - } - - #box { - width: 500px; - padding: var(--uui-size-space-6) var(--uui-size-space-5) var(--uui-size-space-5) var(--uui-size-space-5); - } - - #email, - #password { - width: 100%; - } - `, - ]; -} - -declare global { - interface HTMLElementTagNameMap { - 'umb-auth-layout': UmbAuthLayoutElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/auth-legacy.context.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/auth-legacy.context.ts deleted file mode 100644 index 42b0679aab..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/auth-legacy.context.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { LoginRequestModel, IUmbAuthContext, LoginResponse } from './types.js'; - -export class UmbAuthLegacyContext implements IUmbAuthContext { - readonly #AUTH_URL = '/umbraco/backoffice/umbracoapi/authentication/postlogin'; - readonly supportsPersistLogin = true; - - login(data: LoginRequestModel): Promise- -- { - throw new Error('Method not implemented.'); - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/auth.context.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/auth.context.ts deleted file mode 100644 index c38afcb618..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/auth.context.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { UmbAuthRepository } from './auth.repository.js'; -import { LoginRequestModel, IUmbAuthContext } from './types.js'; - -export class UmbAuthContext implements IUmbAuthContext { - readonly #AUTH_URL = '/umbraco/management/api/v1/security/back-office'; - readonly supportsPersistLogin = false; - - #authRepository = new UmbAuthRepository(this.#AUTH_URL); - - public async login(data: LoginRequestModel) { - return this.#authRepository.login(data); - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/auth.repository.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/auth.repository.ts deleted file mode 100644 index f615a915c1..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/auth.repository.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { LoginRequestModel } from './types.js'; - -export class UmbAuthRepository { - #authURL = ''; - - constructor(authUrl: string) { - this.#authURL = authUrl; - } - - public async login(data: LoginRequestModel) { - const request = new Request(this.#authURL + '/login', { - method: 'POST', - body: JSON.stringify({ - username: data.username, - password: data.password, - }), - headers: { - 'Content-Type': 'application/json', - }, - }); - const response = await fetch(request); - - //TODO: What kind of data does the old backoffice expect? - //NOTE: this conditionally adds error and data to the response object - return { - status: response.status, - ...(!response.ok && { error: this.#getErrorText(response) }), - ...(response.ok && { data: 'WHAT DATA SHOULD BE RETURNED?' }), - }; - } - - #getErrorText(response: Response) { - switch (response.status) { - case 401: - return 'Oops! It seems like your login credentials are invalid or expired. Please double-check your username and password and try again.'; - - case 500: - return "We're sorry, but the server encountered an unexpected error. Please refresh the page or try again later.."; - - default: - return response.statusText; - } - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test.element.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test.element.ts deleted file mode 100644 index 7dda2a047e..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test.element.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { css, html, LitElement } from 'lit'; -import { UUITextStyles } from '@umbraco-cms/backoffice/external/uui'; -import { customElement } from 'lit/decorators.js'; - -@customElement('umb-external-login-provider-test') -export class UmbExternalLoginProviderTestElement extends LitElement { - render() { - return html` - Custom External Login Provider - This is an example of a custom external login provider using the external login provider extension point
-- `; - } - - static styles = [ - UUITextStyles, - css` - :host { - display: flex; - flex-direction: column; - gap: var(--uui-size-space-4); - padding: var(--uui-size-space-5); - border: 1px solid var(--uui-color-border); - background: var(--uui-color-surface-alt); - border-radius: var(--uui-border-radius); - } - p { - margin: 0; - } - `, - ]; -} - -export default UmbExternalLoginProviderTestElement; - -declare global { - interface HTMLElementTagNameMap { - 'umb-external-login-provider-test': UmbExternalLoginProviderTestElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test2.element.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test2.element.ts deleted file mode 100644 index 652293ad27..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/external-login-provider-test2.element.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { css, html, LitElement } from 'lit'; -import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { customElement } from 'lit/decorators.js'; - -@customElement('umb-external-login-provider-test2') -export class UmbExternalLoginProviderTest2Element extends LitElement { - render() { - return html` - Another Custom External Login Provider - This is an example of another custom external login provider
-- -- - `; - } - - static styles = [ - UUITextStyles, - css` - :host { - display: flex; - flex-direction: column; - gap: var(--uui-size-space-4); - padding: var(--uui-size-space-5); - border: 1px solid var(--uui-color-border); - background: var(--uui-color-surface-alt); - border-radius: var(--uui-border-radius); - } - p { - margin: 0; - } - uui-input { - width: 100%; - } - `, - ]; -} - -export default UmbExternalLoginProviderTest2Element; - -declare global { - interface HTMLElementTagNameMap { - 'umb-external-login-provider-test2': UmbExternalLoginProviderTest2Element; - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/manifests.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/manifests.ts deleted file mode 100644 index 534b6a9cc2..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/external-login-providers/manifests.ts +++ /dev/null @@ -1,29 +0,0 @@ -// TODO: could these be renamed as login providers? -import type { ManifestExternalLoginProvider } from '@umbraco-cms/backoffice/extension-registry'; - -export const manifests: Array = [ - { - type: 'externalLoginProvider', - alias: 'Umb.ExternalLoginProvider.Test', - name: 'Test External Login Provider', - elementName: 'umb-external-login-provider-test', - element: () => import('./external-login-provider-test.element.js'), - weight: 2, - meta: { - label: 'Test External Login Provider', - pathname: 'test/test/test', - }, - }, - { - type: 'externalLoginProvider', - alias: 'Umb.ExternalLoginProvider.Test2', - name: 'Test External Login Provider 2', - elementName: 'umb-external-login-provider-test2', - element: () => import('./external-login-provider-test2.element.js'), - weight: 1, - meta: { - label: 'Test External Login Provider 2', - pathname: 'test/test/test', - }, - }, -]; diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/index.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/index.ts deleted file mode 100644 index 43ef4da338..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import 'element-internals-polyfill'; - -import '@umbraco-ui/uui-css/dist/uui-css.css'; -import '../../../src/css/umb-css.css'; -import '@umbraco-ui/uui'; - -import './login.element.js'; diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/login.element.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/login.element.ts deleted file mode 100644 index d55dd07276..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/login.element.ts +++ /dev/null @@ -1,148 +0,0 @@ -import { UUITextStyles } from '@umbraco-ui/uui-css'; -import { css, CSSResultGroup, html, LitElement, nothing } from 'lit'; -import { customElement, property, state } from 'lit/decorators.js'; - -import type { UUIButtonState } from '@umbraco-ui/uui'; -import type { IUmbAuthContext } from './types.js'; -import { UmbAuthLegacyContext } from './auth-legacy.context.js'; -import { UmbAuthContext } from './auth.context.js'; - -import './auth-layout.element.js'; - -@customElement('umb-login') -export default class UmbLoginElement extends LitElement { - #authContext: IUmbAuthContext; - - @property({ type: String, attribute: 'return-url' }) - returnUrl = ''; - - @property({ type: Boolean }) - isLegacy = false; - - @state() - private _loginState: UUIButtonState = undefined; - - @state() - private _loginError = ''; - - constructor() { - super(); - if (this.isLegacy) { - this.#authContext = new UmbAuthLegacyContext(); - } else { - this.#authContext = new UmbAuthContext(); - } - } - - #handleSubmit = async (e: SubmitEvent) => { - e.preventDefault(); - - const form = e.target as HTMLFormElement; - if (!form) return; - - if (!form.checkValidity()) return; - - const formData = new FormData(form); - - const username = formData.get('email') as string; - const password = formData.get('password') as string; - const persist = formData.has('persist'); - - this._loginState = 'waiting'; - - const response = await this.#authContext.login({ username, password, persist }); - - this._loginError = response.error || ''; - this._loginState = response.error ? 'failed' : 'success'; - - if (response.error) return; - - location.href = this.returnUrl; - }; - - get #greeting() { - return [ - 'Happy super Sunday', - 'Happy marvelous Monday', - 'Happy tubular Tuesday', - 'Happy wonderful Wednesday', - 'Happy thunderous Thursday', - 'Happy funky Friday', - 'Happy Saturday', - ][new Date().getDay()]; - } - - render() { - return html` - - - `; - } - - #renderErrorMessage() { - if (!this._loginError || this._loginState !== 'failed') return nothing; - - return html`--${this.#greeting}
-- - -${this._loginError}
`; - } - - static styles: CSSResultGroup = [ - UUITextStyles, - css` - #email, - #password { - width: 100%; - } - .text-danger { - color: var(--uui-color-danger-standalone); - } - `, - ]; -} - -declare global { - interface HTMLElementTagNameMap { - 'umb-login': UmbLoginElement; - } -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/login.test.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/login.test.ts deleted file mode 100644 index 3bdfaccdd0..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/login.test.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { expect, fixture, html } from '@open-wc/testing'; -import { type UmbTestRunnerWindow, defaultA11yConfig } from '@umbraco-cms/internal/test-utils'; -import UmbLoginElement from './login.element.js'; - -describe('UmbLogin', () => { - let element: UmbLoginElement; - - beforeEach(async () => { - element = await fixture(html``); - }); - - it('is defined with its own instance', () => { - expect(element).to.be.instanceOf(UmbLoginElement); - }); - - if ((window as UmbTestRunnerWindow).__UMBRACO_TEST_RUN_A11Y_TEST) { - it('passes the a11y audit', async () => { - await expect(element).to.be.accessible(defaultA11yConfig); - }); - } -}); diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/types.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/types.ts deleted file mode 100644 index 114c515c5d..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/types.ts +++ /dev/null @@ -1,16 +0,0 @@ -export type LoginRequestModel = { - username: string; - password: string; - persist: boolean; -}; - -export interface IUmbAuthContext { - login(data: LoginRequestModel): Promise ; - supportsPersistLogin: boolean; -} - -export type LoginResponse = { - data?: string; - error?: string; - status: number; -}; diff --git a/src/Umbraco.Web.UI.Client/apps/auth/src/vite-env.d.ts b/src/Umbraco.Web.UI.Client/apps/auth/src/vite-env.d.ts deleted file mode 100644 index b0fda2b4ce..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/src/vite-env.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/// - -/* -interface ImportMetaEnv { -} -*/ diff --git a/src/Umbraco.Web.UI.Client/apps/auth/tsconfig.json b/src/Umbraco.Web.UI.Client/apps/auth/tsconfig.json deleted file mode 100644 index 3f90319d83..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "declaration": false - }, - "include": ["src/**/*.ts"], - "references": [ - { - "path": "./tsconfig.node.json" - } - ] -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/tsconfig.node.json b/src/Umbraco.Web.UI.Client/apps/auth/tsconfig.node.json deleted file mode 100644 index b8b8971494..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/tsconfig.node.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "compilerOptions": { - "composite": true, - "module": "esnext", - "moduleResolution": "node", - "allowSyntheticDefaultImports": true - }, - "include": ["vite.config.ts"] -} diff --git a/src/Umbraco.Web.UI.Client/apps/auth/vite.config.ts b/src/Umbraco.Web.UI.Client/apps/auth/vite.config.ts deleted file mode 100644 index 74cb265ca6..0000000000 --- a/src/Umbraco.Web.UI.Client/apps/auth/vite.config.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { defineConfig } from 'vite'; -import viteTSConfigPaths from 'vite-tsconfig-paths'; - -// https://vitejs.dev/config/ -export default defineConfig({ - build: { - lib: { - entry: 'src/index.ts', - formats: ['es'], - fileName: 'main', - }, - target: 'esnext', - sourcemap: true, - rollupOptions: { - external: [/^@umbraco-cms\/backoffice\//], - output: { - manualChunks: { - uui: ['@umbraco-ui/uui'], - }, - }, - }, - outDir: '../../../Umbraco.Cms.StaticAssets/wwwroot/umbraco/auth', - emptyOutDir: true, - }, - server: { - fs: { - // Allow serving files from the global node_modules folder - allow: ['.', '../../node_modules'], - }, - }, - plugins: [viteTSConfigPaths()], -}); diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index e8c3085c05..33e545c0fa 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -117,7 +117,6 @@ "url": "https://umbraco.com" }, "scripts": { - "auth:test:e2e": "npx playwright test --config apps/auth/", "backoffice:test:e2e": "npx playwright test", "build-storybook": "npm run wc-analyze && storybook build", "build:for:cms": "npm run build && node ./devops/build/copy-to-cms.js", @@ -146,7 +145,7 @@ "preview": "vite preview --open", "storybook:build": "npm run wc-analyze && storybook build", "storybook": "npm run wc-analyze && storybook dev -p 6006", - "test:e2e": "npm run auth:test:e2e && npm run backoffice:test:e2e", + "test:e2e": "npm run backoffice:test:e2e", "test:dev": "web-test-runner --config ./web-test-runner.dev.config.mjs", "test:dev-watch": "web-test-runner --watch --config ./web-test-runner.dev.config.mjs", "test:watch": "web-test-runner --watch",