From 7a5cb7dbd2c21817b787ee261f9c80d3ff69fc55 Mon Sep 17 00:00:00 2001 From: Colin Darie Date: Tue, 12 Mar 2024 16:49:49 +0100 Subject: [PATCH] feat(faq): can render images --- .../faq/usager-confirm-update-email.png | Bin 0 -> 9208 bytes app/assets/images/faq/usager-dropdown.png | Bin 0 -> 14830 bytes app/assets/images/faq/usager-edit-email.png | Bin 0 -> 8264 bytes app/assets/stylesheets/markdown-content.scss | 20 +++++++++ app/controllers/faq_controller.rb | 4 +- app/lib/redcarpet/bare_renderer.rb | 2 +- app/lib/redcarpet/trusted_renderer.rb | 41 ++++++++++++++++++ app/views/faq/show.html.haml | 3 +- .../je-veux-changer-mon-adresse-email.fr.md | 41 ++++++++++++++++++ spec/lib/redcarpet/trusted_renderer_spec.rb | 35 +++++++++++++++ 10 files changed, 141 insertions(+), 5 deletions(-) create mode 100644 app/assets/images/faq/usager-confirm-update-email.png create mode 100644 app/assets/images/faq/usager-dropdown.png create mode 100644 app/assets/images/faq/usager-edit-email.png create mode 100644 app/assets/stylesheets/markdown-content.scss create mode 100644 app/lib/redcarpet/trusted_renderer.rb create mode 100644 doc/faqs/usager/je-veux-changer-mon-adresse-email.fr.md create mode 100644 spec/lib/redcarpet/trusted_renderer_spec.rb diff --git a/app/assets/images/faq/usager-confirm-update-email.png b/app/assets/images/faq/usager-confirm-update-email.png new file mode 100644 index 0000000000000000000000000000000000000000..b93ff568070c30e508dc14dc7e28ee7ed803c3fb GIT binary patch literal 9208 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 IoLT7q0TE}FzyJUM literal 0 HcmV?d00001 diff --git a/app/assets/images/faq/usager-dropdown.png b/app/assets/images/faq/usager-dropdown.png new file mode 100644 index 0000000000000000000000000000000000000000..6fd5f65a27db73ac55a06cf2041c2cf2555b8cee GIT binary patch literal 14830 zcmZX5byVBIvu}W6MGD1f@dBkdG!(buRxG#`3X}ka;x2_E#f!UJfbbUS565%2j1$OCuwD$HzD6=`*%Ao#7FaoSgaBt(}*pRgaI4tE;PZ zb#?pu`!qB(LPElq7nfaKT`@5+r>CbkH@8++)@*ESAdp6GZf;gqwvCMq91iE=;%aDU z`1I+Mva+(TukXyvOj1(v!NI}A#Dt8D3=R&?v;7}FdV(zi(`8_V)H}X=yn-J2x~m1cNO-JUqUA`}XCFa$H>e+qZA&=;*e# zwuXm?zkW6D?Ch+ruC}+g-`LntRaL93garrxSy)&oFE4j=blTj!-rGCZ*Vm7V`WqM+ zWNvP*rKO#kntFG4cYJ)(-`{_GdnYa~uB)qCTwL7V-d<8tc5-rhb#?vwcfi=#SZLS? z1hSf&yF5RCTUWbL1zVk&x$f%RjE{%+_U@p*j^X2jE-&9>y^f!pyi87>BPLFspP!G8 zo|KX*e|&tpyu3R*y9WXbOif$F#fu#rx;8e>5eP&@MMY0f&-C>4<>gg=e!=zib#Lzp z)BBvk!P8&A`l+bX$;ngq_Ab}g*U!%{Y;AuA1qEqn)XB?NT3WWTvgVDBoV&U8sHxSo zwCw->-Os>~6%aV;?Cg@5nAq3XS6GNhPKN91)^&Cs-QPbR99+)K9L>)k@9$q-U*G5E z&7Pdx4i4>XZ(mMK9JIG@oS#4R_VzwJJl@|w+}%A~U*DXbp6%}+93Ebsp587m?JO>C zFDz`$&27vg)@Ei_;qb-r@%iBq#NZ&jr)Ok+{a|fve`RHNYHF#scXDUvbbI?`YwP$K z)&2d;ot?Ao?dMr`H#RnRdGSHlT z2->5ao%k6J09nG;vXp_;fe`rGt|0`3@?Iz;n7kX5l^<7A^c=?*M9lZ3`m}YCjebbrBgf zLlfd&N{oZy!d%|v8SbV)jKI4f{OQ9SihV*?rb3sL1 zQ6*9=^60mLlo~#pP2!Bivt`=&`2pbQCYnl9%h5g>spi4}h` zi14H*@SBOPJOgV0iNf}ogLyCo6kOwqj?gC_%|Itz5o*#PrD*!|;jXZT|H_wzYQP=ltsnzW6KuLkP7@|;g{+XJXLlaoH(tr7 z85}!!{X$JRi+5Dosnc|K&&~t8C~iQlY*%p>r$`Kkn3^XneQ$0s9&u=Lz+Zkm`ZA(u z!CX8!RcI|d2R)wtuA@60b`}=0xG!JVDaS&zawE~|F$&w?CsT-#D$@%3J4;4Rpcrot z!NgELB+G|k)ebbvn8b{=u(yxkt{HZ>#VUov1j+FVFB zXH9nt#?0SC>J&_~$T^c}{^F5RoZ)8-;MJs+t(&Ee3$~+~k;B(r4s)X_CwgS3#A(a|>qvIpSZz^BjfxQSE2Te3rI z-(Z-f)3b$GI~B5A$^(C97$N!S_O|6*v5fs|II*NuK$AL<;w%@%x`RQ5B{V@HUW&cL zyUa(9Do~SsL(geo+#CWswES^H`W_18%&o3-z-o=HinCLOln(KD7YIhc-N5p0{6WIa z2oKh=d_?Tz3D_~mpM~^wqI;6|Uy1LJ9OwsRa0}CXFCZB8P0(3{)K13_#aD#jw1a?bTEoTW8 zf0$^+EK3Uq&v9g z@j8b~Z41?SV&ze7D>iMRZzCnz7dhD5s}8>nz@iaxZ*#4;LCOGn)Byu zoEQ&+7I_Auij>u8w3GUCLUkS9ADnwa4$w3jHEHRE=BR6{X^kaOv$B%30r1GcT3HpG zsLit&8g^9C4AVYBb3I1*dorhQkrw{Ag?W$f)A(BOIJxDGE`g#naUku{DKxpR?@v_~ z3M$1Nhq}s86`XH_K_qO5pNxa5VLIO-zttPKyKi!wKMvw|-}p@P4jcb|KX~4{a@ z*pY2AhRiBGQ*alqrr%22t@k5-xTE`?`I;iI<0JR$wg7Zv3+X3Zedm;#{D$Ex;Zwn- zZ@gLg$&RNDC4KK-?d3C)eJT$;JX#1}3PQ=lI;&t){pavSq(EmQk4V0A6#GJ_Ylp&2 zDFv3OkrEp&QaKTA3m_?YYP^Y@CLddRBVReA$n>*4_S_Nf80Tk z_aSFh%%{uGS(sJEB$gITQ5T~HEuC}w3vudUT2<$%>CETz5P6i^KUzf)Co^YqK`9TL*|_{fR8a_h&XSy@ z6+q^*0$QzsZ{RZFD*tsJFY4qs5A3oRC;h>!Je>={`M7L7jRfTIPN`|Y%WWn}ff8#` zmRhHS&-EGYj$fQwe=+AEB&QTNd2c4IX=FcAz3ZhcCp~GU8_uTi=;v&6W!Y0DkvKo$ zWhgqSt+V-^aK5-vmG@;~tfj-YX2NsnUECh}L-HUm1FgRzU5Qw^lc=C9;&X$7Z1~~#GwVYnQ zcU1M1^}r%FrhzjgxY*wc6Np|oe3714Ig0lBT%+=Fx-YMO_H(qwUo$wWM}YpiM-rbW zbBt^;xS2xFZ^4amTJhMoWGk68(Imh=T3!%32NjmBn(-3|?MD*ZB^0$Cj^_KvB>VH{MOhHc zKs97h^N!#Q_th(b_A1Eli4HM%-?n;c8tZsL-rZTci9h&uOyID^Cjd768D|Pgl|Dp- zvQQ-&>wtS|rzQhCou7Z@58hElxrPiY7RA3-hiA}h_BZV;Q5XDxq~I~LIxIuu@Cx4n z@pX}O@IL{3RvyF!Uf#$6`B8WA=gc1{wm+~S^@y;r zzc#)DLd1wQO0_~=FwCGDn3=>m;IHA*>aQZ~-FuF%)f)x^)J+0r7QA@G81K7F5jHZg z_nYdPFEqlOw(WV36zv`#UbKj8EJ>u~rLW$veC9tNyYW%CFNEN`dsg{9)q5$xl1~-= zGPOoE)P5AiUcEtV6crUsROea}T#kEce}!X}ihg470K*|XG6ndSe(Y-2f0^`^)$fRA zB_W<&S$C4@79c-cnn+v&M8gVa@{G;QLhZh0_1RL~EVBD6a}N6c_^)dN|~ ztj3yKR5%zf1f?)8nAkDB5@1`5nVuf^H#n=&L5yQn1CJsjzF;S)a2FnfoI`7{;N!xT zgZLr|lWv}l^ZZ5hNbLjW9_;nB0G$;pGsddHASZX+HQMGi!u5AFS2lKYz(dL{kNL5l zLT$)}9a37n)3M=n1jK2f+Ux3Z0%ybUs0eHkZ)y2*B&d&=Z^%|+_~wUm^l5y$BPyyc z(R^C(mnz5!+Ym<$m_%!9>G85ggjb3X{x}>8u#ND<{L#LLHCiBrdRC&tl1#`b&BnD$ zmraKZMI+d!BA+6hTwM2reI9oPSp3Z`D3Fm;Hd_^mQmzpHRppO;O?oL;okgn+Q3uVT zlqtGpS>ahx1ZfNN>-5Hb5qrmilaT~Nel;DbH3IVEQsAWzsMdxYNZ!xa;KLY@&N|CT zJL%)pJsJvK(G_2cdy*%8MHk{`?S9o&IeVhOV213I34C^w7)t*wS-T4%e!^~5O9NjGrG zujfB8L7dTbqzEniFBr>k4WX&hF|Y;~eRd93ArWn^9L zPs1lkW@KUa;zcw1R4r3Z?|i^7jJQR)n+p)&&JIhRA=fvjKuF^6*tv)!mn8;j-K)i) zGZB|-Cwx_9xX_{8+>i*YlRtPNd&RR(gVzB?dTAQbI$>ng5b+#Fe;xO}=18yz65Pe+ zg$XX*mK1vOTZ|mUBz<>6e#D-hA2~d&I77C7+w3PfJnw~hRvOuGy7g;mOQAzC;dNsL zDgj*>`f3gbL}v6j?JSUmCE%9 z$>QSv4x0OG#aOCQ43NoAe`zUNr%AWI@AON(pn(@l5;Ipc7c^l?2yld8{}f`Gafd0B z7r%|TZh@se2AA&`Q0nC%#2=jQ?vHX}aBK?Kc38KB>gD!X$zqz49JKn{V=ssphu z*J8oBtc*4VQn6`5g(=je20FjO04F=H-__Cv=eM6W!Tl}6kIbf*i^X_gF(}WPBk$qq z4M8FCt)j$JarOMKr>^lbaU=(!LgEiOI!oD^!oumdit2{jHB!y0nS(*@Be5dZ`L9j_ zUKU=q=x=}W2+TrMD6{6{i2qi{f&tXA9J5{HyMD~Z-ahTma)!_G5_X@kqZ>tGS>rdT}yZN*1f<*5@a^jNaxeGJ7^Erx|kLsUmX&DpL8 zMsO`)IUn`)-;>X;Xf=xQm3v=CE~~a?eG@&d4blP*gGCWWB+m5R^8$OJb3O%85d8C> zsINVOx@Uc?jPO(c!H3*+g>UM1ysXq}6(K`eZxvefj?9ng`^l7}Da%=B88c0U)}+T?<% zDQ2pyFHW)sda8}5y%7K(@sQ1k$Kb+EQ24k!33502Y7@;J5ZsqwVE2%D;q z>MUSY)OB-eGWbG1`J{!Yb~uRFrYmn=F2V4Uu@!Awqv0=6X=t3v(f`uH5vqgTVOu{{ z)?_eML~&yH4L_x3HG8f$vdhh6K*_F*Sa^*FKbr?$0Ozy*f#7vo&<-hi(}RGy8bGy^ zy^?@0c>>1ePYQXz*;GX7ml=QUaz)QVUl1|e6f5Q_Cbn*A0R>7sLoe@is-I=_+;6&Y z<@hivf{nWv-kETzQibenMQ~8N4L+Q0sG`GGsEPylOY{xA>itw_>06ECc{b}>(b7kg zw+P*>#1Bsrg0c}kf)E_KD)K;At-J4Ewdk^r?zSxUGeDoxnvXI@!-A$%iVxEl$aGR0 z>itSO$gAj#C-XKSJfT}}s_IjFzSb2f7Jmy1!rFG+zC{1-IOE&_%O#2l0zoxlX9qYs zO$);p6;lfEAQz2f66Fg}vZgZS6hgEJVW$DbDiCEZWZt&ZvdjWY6d~L+-0!f9g>tc9UMV$l4XvMFVFkQQtMQ$0=Cb6f|gO(}Mv85R_d zqj3<#fL9JSTu(+oJfqo%Kw&{3fr1i5W+DW?96Xl?sWyEU1Zspmlly^T3R|AI!=G=T zgqb!7l`O`0=FiYxvS?jOviNvnVwIH|0eECmFAHs}Wf^4oStOD~|H`EjTYMYuoBde$ z0YPH#e!jlFZ??I(XMm`?yE78(J9~1+_CSq++TK2?0r6Gf-EhGt`QI0X5QbA^b(nYr zDY~vl*TW7cv%jGM|6Vra;Yvas*2`S7mBIZIk%*JvjFmRg6!tpJMKlARh87R=#S3{>kTnn=bkK`?N$%9J>Zam=m^b}8pY0*w zA14$_J{8#3XPW87Z=fWlZO)NU>6H*NFI*lTt*u8GX!J)nN|Vv)c}x%-7xa5 z(?>yOCCsLYwhZLuIR!TC&=FH2(t16~9P>uoY6F=X=|pHF8DZQJi$Y|uIxs3$9dFE4Auea;&#J^Obq@2**EBAY8Yk~1K|MLCcgGx4HH)NNC3Lf^W= z(Ot2WPfIQlRxt_;sNmTi_Af&~Q6U$>hAksApUQX**6JoT!$3F6Rf#-M11uik#3UOkG%ySarM|&I*EDqS8VTX-za56oB*T^uIq%7X?8F<0d1-_tI3+eL13GY9c&n z1!k*jEQLA(S4H4tgUTsg4eN8BV)9RB_S(Q#L3+kJH*5~LRO1J6(LXJB1RzPhngw7> z2HH5j2ZZ1>;NaLz}!&j{WFMA0;a7O=FJw!(!q875JhdT(wuoz3*E)* zu*!M-K;gqS>2Sf-bQ?w_vv7a=xiUYb#Q%&W8d2Vh+E^t9J`9t!#D!fz?k|_10Wd=jnH13 zU^3WOnrHPn_n5EGCC{BZs7X$Kvm*e7UY&LKKj~XCcWV zIq8C?LQ>5eATweKk2br|uTK>!bn6=Db(L;`OEgP?{7jxGjrivlO=DeFC(dNMPkQG1 z#C~@=xC?Kx^P67ty7z4T_z^e#2%JJ+ypI0(dEgBGB5tnE4E4joe802$zljbk7k<)l zaYMfnlaK=u+{6`vEe|cc*Ug*_J>e1(AOZf(CFQiES4UzX0{jP0SUfE)BniUsACd(* zafBoV6@dRgLYoCC1pjXm90bXO1owW@gBdo1o<$&eOJGB~v0t&>H>nd) z!Onj6`5z4z=?P|`4uSi|F&i%HF;jT1od1MMLvFsbO?d$*7%OYvETe%8B24#gw_(Viz!~OK&cxn!~anBS_1+EU8R)Hn1wxCoqdU>@;7r_RLcGECEu38%V>0-oD{=e>)4tqc_y;DRHN< z`ebdSyRpue$WiIQD9k;?yV&;vAEXF!XU&^C<2-)M5MSL~hA8Yi*&Vl@vZcy6zn-q- z`g_ZG=Y%(*UfuKa{;HaxS>n^-OI4_w*uG_ETn;>#A}~$PHS@IWB`EFc7F#Pb59EW4 zfxCZ&*?_b=KIZ8|#LTlctX%L*&FF=)+0@ZFF*u-^hMiz8ap%EPT-@$dgpn`V1~-#l zBMd}G`(LEk9}gdDW-C#Y)YT5bkHyts&BV;4*Mhwk>x5`aXbLXUvs_zW;CqlQY?Yc+ zA+dWDk>e8;fiFpO5-8lsZNy0IjFv*t4gE)`xYN0o+P|Sfr6f?HNiw2x82hdeN zlo@mK&Uo7?8(&O6BY03jB*+r%KRI(=C*(}iRD{BISsSy;>qUQvCR}U}gEP+}o{5^ZZqHFUWGKXw{Fc zD1de=_G{|_$n3GwTj7C%lUpPFSYIQoAW{oB^IQLsI$u)DX8`fhW07Y$i$A$o#}u!= zPn6YG(E@D{b1)bm@R_sD4QU(d$M%-Xbl2Qhw=Qs`Cxwt5@T_7~3;2%w4M9u)e2Y&e zS;i@O&Wdt1*g126p-%;Ud4ujcMjoJaR|!=!CRcTu$`PFUv>E;t{>Lu}6e0kDQvCF| zRJZP)m?S=7ex*GXk_zvD!Q zwV(C}_yKT3Bn~F-Ky_A{5|nMuwP}z&N-g8-+wOVJfB0pCDOUB~2Bi}aug_PwLIJ!e zo(vNfu#HHFqOOfdPf*RSD7>*auPwfW$J6AH^tpEVqXL9d@HY_gv5F@L5S~~jLEi?d z<0w_`sxIWAfEr4#o2GpC|66+|Sm~?pFl|b&z0*8jP>23*iA@L6N`v1T$?YqF01#c4 zIA|zb$ceETPa8-`27M0Ihn8m?jp5CfM({^b?>iKq0(GbcposimAK7>oCmwxtU+(kX z`Q)54GxW$?qVV?QVYk1bhRJn;-gQlqP8>lRH1+&UPm@H;7ly^c)0H7!I{LFRtn?%s z`Ws;rQvR>HMXR2V7r>fQ4RpV-*%UQO7rM1nl&9z!%0Hha=zHVMK|A;c<$04(>ErFm zgp-?4qMK$r$UR=JB)>+)GgN9LY%2_dG1PavH;T??aZp;sDt9{mlZFaJ<5S%9gf3Oq znayJFn{*D^eR7ns_V!;2a~|hwQ;6}obQOq~S3_0x1t&kdAA?P!rNng`X%GX0lj(H$ zzQm`AK6Ok@)>s7_Dd+H%NZI6s>$c}YkxL2Au2Bo=jPcswk8 z!SEYqqj9pK7#>hnUaq58r}H>@iGkrR;Q7&FaDFAjCU<_TM(42#;7H|&VP<-CXVQ@4RmB69ZBYW`= zhk^`{0Eu+m*&qI2)5g7PCk5G&n-W+)XhdRg29k%=_{p>0W2SgO$|Xt`lFt(Z12aG& zc*ie#7E;$_H^%Z9e5_yg?0O>NC*)Mg;fyAdPw=Q|Rqh<`g8T|lGI99e>X-%Ruh1ms zNJ_NZN{||V1!#|W1Xt<#zuSp(e!AX&V0Ycww4nfmN%|$wFDZ!d0ns0fnov?<1Z0>$ zDMTa4TtNc7!FD7*63et)|FL)!G*Fi@TpbI%K+dd3>YPjM-M)A$eWm$f+17KKsz|mq z6KDDEGTdVCV2kubV?*;``5j_%>TxSSW=@)uD5Ub)UX>H!-|ltdAom8}wT^a3K(loB zg*Q4OObzuH5J~fQ-J3QWWH$I2;J@NvKd%tconZ2>OVbXhcun~wkWcI4_`oPIVGwktsVb)kx zUh?zpQiE-B)31!F*LrW?e^Z$Z5(z;?*%-yT&{Gt}qto1+sUPi6F{Yno+>b1jr; zqYS!_&NJebD8mn98+5J?9o*ds?k21&Z}33O7mjebEHFxQ=h6@8Pq=}hn3kf_KzNFO zDuh06SxXIunQg)-pEOSB5CZlf2+zd)OTK;k?RBbR7Txh82o}px?}Szl!kYPQ?b1zp zranXn8aV$6=gI0*T{pNA&5cN7z;Tl zuP>w_-Joo;_kIqVFqf;T_w)=%>p_sOMlzTCGw)LORhHk#`epur{{qlL1PJhiA-7Gm zVoenLEJ!1jIhxi>&3FtJn61_|;HWnHtQ_+}zY`S8IGPr{(Hc;+AuC4_Bc4oV#kUg=?h`^imyOfJ)<01S+Ns7>KK!sGd2FD#4*%Z@6ki z6nb!H>SwVPcq@{&(9SXCl+XTZ0Poq(9xkHLpN6|~4(rg;@JxY!Co6C}yZ#;7dRk!b ztV_|`OiD}^SG0oCr_E?Q0}E;5E(Nio*I?3~dj1;nmQ2zGM6W}V-0TzhRq@6p3MpoO z@%_~>dXwY~vc_hUKZLk;HEX@jy=1r^Mb>(tDMa?tGqebVjNzTNl|0~eNYF3Oc`}KDy&Bki3W;Qh6s5%e-wF>k|^YotM{_zfi3O7rde&PSwjudZGHgQLNh@@Uufj)mS6{G7< z10*5-VtyLJgJpCV46!f?6-t3YRG8CA{IisAXNi9QvNb3ngBxUbgXRDn@r-?+>cz*W z{XDL|&RoxYOh(Pza4{e-&}Bpt!_$FC;reuxw_uYNnA zeO;{f6-o5uk^cL4>oQn5c0PEP2E&E{5ypg3x+^g&i=AFz^-vP$cm}$y$6aPG27i3{ z6{gQ0+Kl2TBc`1A3R=*+uY;})vW-gJv5@D|edym`=BDCec^l*BX|i&{*vcLJ>i zN|uF?bQo01o3-_1OEYWmBmd@U4)U5--eRqio)rsYwexAEUa<5;riPuCZC8 zx`M24P@WmHSPVLq7zyb*C6GFb(V5PBJXma%G3g-@Y+QI zl8k8SZfeNLkgo-P=dV3CKi1G%+8x1+W|~oppoDZirBo|eE{+ZhBz@S-3{M0Ev@!>3}dT7B`qT` zuKD{zxSK^e>e@O|hJGe@v(#KS_V{5pcm$jIGk$C83Q`*AA%zlnbZgw5T|t+gZqII? zT1s9$-g{T;Fpf;~GQAJ&&AEx_qvG7?sYx;nGR`wQ#XCfQXZY$`L--F?vkza;F?Ho7 z-b-45DATKAt?C?V8r4-Ami&SE(F#Et1Qvj&ok{S1g?uDrPWA45;`%uMi>l?48LVnW zWn-?OWzEtd>;+(VobQP?Ps1`K^-x)2g=Pg7<>B5s{T<ZU7piYSCX+g&GG zjhwQ6uuy>czVBCYZpNkoWnct>kBGMI6?yBiy?M)nsLz+Mz=$PeX@NKF;ecL{qbN?R zZKdfPWSErM)4te+9Anai2#8S+enrc#3)k|X5N9=NqAGb&%O?v09_4YpunLl(dF3zh z=K@=!useu*h%)CvNpslIe{rz;_CN+xYq8Qf&?`gtC-5m}voLSoa%Am$J~!#dox`5f z#}i0xBB6hko$Le)I~8dS)qquNB5%~*HtcienO^bb&Tgsq^o*fqI;90{WaIZu|MyHf zK&<0!X_(jw>I>KvdTB#z;50k4R}MU;KN(fvr@K!~14nu)_v_w95A)iGJSv4c`9S?v z{zucoYvNuiidbE|5A0U)F>j!fOYF1xfT1PaMQNYz#{t7+g`23Nsii>EF+b(HW=h+@ z$O`nR#a1CY{p##K*~1ShtekJlBz}%vMMr z<&d2e?H|+hW{0r9^2Kdd`ZU80oyOXV2IHQ?4u71UbSVW_#}*hSQu5e%vAw(-(W70= zbM_;_`-Tgt>vgMK%(wvE+ky5&RYT7vr(mwiX~97`sP&M|E8V#e-5RvG_|2Q^5rBXylZ?5_J_(UTM z5qE775_W%gZDki8Cl)&9Q<2Is!5rPAmDYR#0OgP#eik>+5J$e$eV6h|R2cVer6!c4 zLlIE?%TYgY1u(O_`3ta}TZHP>KpJC@y8S0i1(PUO5L;a7VC8fon<9=0uQBy zK>GO?-#%>TCg&B~Qi`u4KRYdJMH@qkh##dcJlaXd+*RYgq2^Hd!XpN*L1My?(p;4b zXAl_0$;P~`4yj-LT%H5J)Oa1KWw}89euUX5Anc!q%8^jAUoz3XtkZUJ=XP-!4JcOG zIKz0m$O|*CQi-b&wU9OU!Z263QF<>j^4{lK+m#=BBT1uMa+ksE_Iz^!|L3LlI;qJg zU!O9zw+C+TmtV|a-Yt6pa{K3jzdvjllSRnA=nd|6eBDZo>;u{dSpC7O@buBll4|8c zDhLnTKEz{1FDZ?$X%jLY4CX~I_>PCE`^}Jg#ZHe$M{JmgIvJ@o$d|F2>CH=EtD%>th5dq6kJ6uwJ<yGSx^>64x3(Y|+VEZN3 zF%jrHuYf)qu>m zKGkCvMGR-%^^mZl%RS*y3airM1ua%O=CxF=iEJR9)JI;=8ng6Mp+vB?l-vPRkp_X6 zQYwRlb+?4RzVM3w6erEeAI^t$KcqMe4k?P|%piGcS3$YI?7sdIFR8W7pOH-o#@iN9 z!YK<-GIoHw5NR7LuwqBzy=gVbq}hzbbMynCf`*A&UsD05Ld4|U0k=O0YpZ~bNuLgz zCMYY2cuANt@De}jhkX{rF=(c&HM3Mp`9kSiGT`{OhVDo;{|gp>H*stD$;)Z9A~Hu~ z*tjJ_O6-)n1?=Yj!Ph=}Q(JL!0j9H)J9WYCrg8RRsUoS~Y$ek>A^p`UMIu;H?m)IE z&IxIVr!bh%2(2*qt&x(T-8?O4oFD2B0!ob5VRs}Q%7_3AA0myWoa+31?M&omRq}m) z(eVXwbXGrH;Rfz{2v0=}kO`@5<=W>^hT29_Cx!Z}`MN^aPJdmv?G=&^(P%qE8QWsk z=i;~LUO#*SOEl4yDJneP(dav9?lh*KS=zu0?%x zaCb>KK?peBSm0-9UL^j6PnYh<@kxKg;>%1j z>pcjUci~sCjb1|u5(xkOA~!`b;lNj>w+=b7nF$}Cd|hI1HA{o?^`EDw9C>Re$$+t(YS?9fbqrJly+dci^ z?R* z(b1e8YAI?5XUqhc!;&Hvof-zb;*}t3 zyylWQEW0SjeOq_cO77jq%1L=GHNBeD)f=$ghOp`-wbq z8&c@4(426)1&60cR3$k!R-3&&2mIv@I58v0u>al|X#cf{)JAwhpI6K6Nlqs$>}Jn* zI!qVE&9Pg{J@M0PuA^}HOtN-Lp^{TZ89(G6$pWZRX~}KLEL8NT+(mh#=i9AggH3f4 zs_3zY2lbet{s);u^ko}HhaV=a?7H)eyi9b_zY0wWIP5Fy6@)qKBqi5qzHy#q)}<*a zee1Ni6Q62KHm>{7s<~zT;r77edvDU>^Gw#t#TMzEKG4+kzCWKSor^up-Jq~m2( zO0gc?^(lRb(|z%UhkTym*qL2XbaP=X3p!tza<-7HF!$oSRnh5vqRs)|xTEU*kp+VI zOHeH9dyzqQ{0ABs&jWoHlNwYA^@8EaJzV%Srbsi!{0SPB{#aXoJDvZ04h@$B;Q#CW zA2+<`+d@@4Q-nSefF~?EsjVWT)~;6FzZb(g`fyRWle9N2%9p7m5Dv(1u)--v8?FrO z^=~1E1cWgu1J!ZVaX_D+hbaRWRe}Ha9a(bNw;1C-8(csRnWFN6AVJVFz<__`xm`g1 tKji;%pS%7aw}AY=$Nq1DheGmJ)aIsS=4Jw9*MB$BWF?g(O2mzR{U5(fgG~Sc literal 0 HcmV?d00001 diff --git a/app/assets/images/faq/usager-edit-email.png b/app/assets/images/faq/usager-edit-email.png new file mode 100644 index 0000000000000000000000000000000000000000..6a8b0b48d6e4a4d04f57fd779aca55f6cdcfc20c GIT binary patch literal 8264 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 n(*NOfucXxoUQqoHDg3t literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/markdown-content.scss b/app/assets/stylesheets/markdown-content.scss new file mode 100644 index 000000000..c166078e8 --- /dev/null +++ b/app/assets/stylesheets/markdown-content.scss @@ -0,0 +1,20 @@ +.markdown-content { + img { + max-width: 100%; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); + + display: block; + + // In markdown img are always wrapped in p, + // which already contains vertical margin. + // We only add margin when there are siblings. + // NOTE: CSS consider the img is only-child even + // when there are only text node siblings, but it's still fine for us. + margin: 1.5rem auto; + + &:only-child { + margin-top: 0; + margin-bottom: 0; + } + } +} diff --git a/app/controllers/faq_controller.rb b/app/controllers/faq_controller.rb index a6b28d7ed..6c28f2725 100644 --- a/app/controllers/faq_controller.rb +++ b/app/controllers/faq_controller.rb @@ -8,9 +8,7 @@ class FAQController < ApplicationController end def show - @renderer = Redcarpet::Markdown.new( - Redcarpet::BareRenderer.new(class_names_map: { list: 'fr-ol-content--override' }) - ) + @renderer = Redcarpet::Markdown.new(Redcarpet::TrustedRenderer.new(view_context), autolink: true) @siblings = loader_service.faqs_for_category(@metadata[:category]) end diff --git a/app/lib/redcarpet/bare_renderer.rb b/app/lib/redcarpet/bare_renderer.rb index d8944374c..39bfc9342 100644 --- a/app/lib/redcarpet/bare_renderer.rb +++ b/app/lib/redcarpet/bare_renderer.rb @@ -33,7 +33,7 @@ module Redcarpet when :url link(link, nil, link) when :email - # NOTE: As of Redcarpet 3.6.0, autolinking email containing is broken https://github.com/vmg/redcarpet/issues/402 + # NOTE: As of Redcarpet 3.6.0, autolinking email containing underscore is broken https://github.com/vmg/redcarpet/issues/402 content_tag(:a, link, { href: "mailto:#{link}" }) else link diff --git a/app/lib/redcarpet/trusted_renderer.rb b/app/lib/redcarpet/trusted_renderer.rb new file mode 100644 index 000000000..f0ee50129 --- /dev/null +++ b/app/lib/redcarpet/trusted_renderer.rb @@ -0,0 +1,41 @@ +module Redcarpet + class TrustedRenderer < Redcarpet::Render::HTML + include ActionView::Helpers::TagHelper + include Sprockets::Rails::Helper + include ApplicationHelper + + attr_reader :view_context + + def initialize(view_context, extensions = {}) + @view_context = view_context + + super extensions + end + + def link(href, title, content) + html_options = { + href: href + } + + unless href.starts_with?('/') + html_options.merge!(title: new_tab_suffix(title), **external_link_attributes) + end + + content_tag(:a, content, html_options, false) + end + + def autolink(link, link_type) + case link_type + when :url + link(link, nil, link) + when :email + # NOTE: As of Redcarpet 3.6.0, autolinking email containing underscore is broken https://github.com/vmg/redcarpet/issues/402 + content_tag(:a, link, { href: "mailto:#{link}" }) + end + end + + def image(link, title, alt) + view_context.image_tag(link, title:, alt:, loading: :lazy) + end + end +end diff --git a/app/views/faq/show.html.haml b/app/views/faq/show.html.haml index b72b8c8f0..cca79a4f0 100644 --- a/app/views/faq/show.html.haml +++ b/app/views/faq/show.html.haml @@ -5,4 +5,5 @@ .fr-col-12.fr-col-md-4 = render partial: "sidebar", locals: { faqs: @siblings, current: @metadata } .fr-col-12.fr-col-md-8.fr-py-12v - = @renderer.render(@content).html_safe + .markdown-content + = @renderer.render(@content).html_safe diff --git a/doc/faqs/usager/je-veux-changer-mon-adresse-email.fr.md b/doc/faqs/usager/je-veux-changer-mon-adresse-email.fr.md new file mode 100644 index 000000000..eb0ab61b9 --- /dev/null +++ b/doc/faqs/usager/je-veux-changer-mon-adresse-email.fr.md @@ -0,0 +1,41 @@ + +--- +category: "usager" +subcategory: "account" +slug: "je-veux-changer-mon-adresse-email" +locale: "fr" +keywords: "adresse email, compte usager, sécurité, changement, profil" +title: "Je veux changer mon adresse email" +--- + +# Je veux changer mon adresse email + +Si vous disposez d’un compte usager sur demarches.gouv.fr, il est possible de changer l’adresse email associée à celui-ci. + +**Attention** : pour des raisons de sécurité, les comptes instructeur et administrateur sur demarches.gouv.fr doivent nous contacter à contact@demarches.gouv.fr pour demander ce changement. + +Cette adresse correspond à l’identifiant avec lequel vous vous connectez à demarches.gouv.fr. C’est également à cette adresse que nous envoyons les messages concernant l’avancement de votre dossier. + +## Changer mon adresse email + +Pour changer l’adresse email associée à votre compte, suivez les étapes suivantes : + +1. [Connectez-vous](/users/sign_in) à votre compte sur demarches.gouv.fr ; +2. Cliquez sur le menu contenant votre adresse email en haut à droite de la page, puis sur _« Voir mon profil »_, ou [suivez directement ce lien si vous êtes déjà connecté(e)](/profil). +![Menu Usager avec lien Voir mon profil](faq/usager-dropdown.png) + +3. Dans l’encadré _« Coordonnées »_, renseignez la nouvelle adresse email que vous souhaitez utiliser. Puis cliquez sur _« Changer mon adresse »_. **Attention** : Cette adresse ne doit pas être déjà utilisée par un autre compte sur demarches.gouv.fr. +![Section Coordonées avec formulaire de modification d’email](faq/usager-edit-email.png) + +4. Ouvrez la boîte email de votre nouvelle adresse, et cliquez sur le lien de confirmation que nous vous avons envoyé.
+ ![Capture d’écran de l’email de confirmation de changement d’adresse email](faq/usager-confirm-update-email.png) + +## Si l’adresse est déjà utilisée par un autre compte + +La nouvelle adresse email ne doit pas être déjà utilisée par un compte existant sur demarches.gouv.fr. + +**Si la nouvelle adresse est déjà utilisée, vous recevrez un email vous informant que le changement d’adresse ne peut pas être pris en compte.** + +Dans ce cas, revenez sur la page _« Profil »_, et choisissez une autre adresse email disponible. + +Par ailleurs, vous pouvez également transférer plusieurs dossiers depuis votre profil, cela vous permet tout de même de conserver votre compte. diff --git a/spec/lib/redcarpet/trusted_renderer_spec.rb b/spec/lib/redcarpet/trusted_renderer_spec.rb new file mode 100644 index 000000000..046472026 --- /dev/null +++ b/spec/lib/redcarpet/trusted_renderer_spec.rb @@ -0,0 +1,35 @@ +RSpec.describe Redcarpet::TrustedRenderer do + let(:view_context) { ActionController::Base.new.view_context } + subject(:renderer) { Redcarpet::Markdown.new(described_class.new(view_context), autolink: true) } + + context 'when rendering links' do + it 'renders internal links without target and rel attributes' do + markdown = "[Click here](/internal)" + expect(renderer.render(markdown)).to include('Click here') + end + + it 'renders external links with target="_blank" and rel="noopener noreferrer"' do + markdown = "[Visit](http://example.com)" + expect(renderer.render(markdown)).to include('Visit') + end + end + + context 'when rendering images' do + it 'renders an image tag with lazy loading' do + markdown = "![A cute cat](http://example.com/cat.jpg)" + expect(renderer.render(markdown)).to include('A cute cat') + end + end + + context 'when autolinking' do + it 'autolinks URLs' do + markdown = "Visit http://example.com" + expect(renderer.render(markdown)).to include('Visit http://example.com') + end + + it 'autolinks email addresses with mailto' do + markdown = "Email user@example.com" + expect(renderer.render(markdown)).to include('user@example.com') + end + end +end