ó
    ï³ÄjR  ã                   óì  • S r SSKJrJrJrJrJr  SSKJrJ	r	  SSK
Jr  SSKJrJr  SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKJr  SSKJr  SS	KJrJrJrJrJr  SS
KJ r   \" 5       r!SS0r"SSS.r#Sr$S<S\S\S\%4S jjr&S\	4S jr'S=S\S\%4S jjr(\!RS                  S\S9\" \5      4S\S\4S jj5       r*\!RW                  S5      \" S5      \" \5      4S\S\%S\4S jj5       r,S=S\S\%S\%4S  jjr-\!RW                  S!5      S" 5       r.S#\%S\%4S$ jr/S=S\S#\%S\%4S% jjr0S\S\4S& jr1S\S\24S' jr3\!RS                  S(\S9\" \5      4S\S\4S) jj5       r4\!RW                  S*5      \" \5      4S\S\4S+ jj5       r5\!RW                  S(5      \" S5      \" \5      4S\S\%S\4S, jj5       r6SSSSS-S.S/SS0.S\S\%S1\7S\%S2\%S3\%S4\2S5\2S6\%4S7 jjr8S\%S\%4S8 jr9S\S\S9\7S\%S\%4
S: jr:S\S9\7S\%SS4S; jr;g)>uo	  KÃ©tlÃ©pcsÅ‘s hitelesÃ­tÃ©s: a belÃ©pÃ©s 2. lÃ©pÃ©se - a 6 jegyÅ± kÃ³d bekÃ©rÃ©se (2. fÃ¡zis), Ã©s az elsÅ‘ beÃ¡llÃ­tÃ¡s (3. fÃ¡zis).

FOLYAMAT (kÃ©sz beÃ¡llÃ­tÃ¡s, 2. fÃ¡zis)
    1. POST /login: helyes jelszÃ³ + kÃ¶telezÅ‘ 2FA + kÃ©sz beÃ¡llÃ­tÃ¡s  ->  Ã¡tmeneti (mfa_pending, cel="kod") sÃ¼ti, Ã¡tirÃ¡nyÃ­tÃ¡s ide
    2. GET  /mfa : kÃ³d-bevitel oldal (csak Ã©rvÃ©nyes Ã¡tmeneti sÃ¼tivel)
    3. POST /mfa : a kÃ³d ellenÅ‘rzÃ©se. Siker -> teljes munkamenet-sÃ¼ti (`mfa` jelzÃ©ssel), a szÃ¡mlÃ¡lÃ³k nullÃ¡zÃ¡sa,
                   naplÃ³zÃ¡s. Hiba -> a sikertelen kÃ­sÃ©rlet szÃ¡mlÃ¡lÃ¡sa a login_vedelem-ben (ugyanaz a tiltÃ¡s, mint a
                   jelszÃ³-talÃ¡lgatÃ¡snÃ¡l: tÃºl sok prÃ³bÃ¡lkozÃ¡s utÃ¡n tiltÃ¡s + a rendszeradmin Ã©rtesÃ­tÃ©se).
    4. POST /mfa/megse: az Ã¡tmeneti sÃ¼ti tÃ¶rlÃ©se, vissza a bejelentkezÃ©shez.

FOLYAMAT (elsÅ‘ beÃ¡llÃ­tÃ¡s, 3. fÃ¡zis) - ha a felhasznÃ¡lÃ³ra kÃ¶telezÅ‘ a 2FA, de mÃ©g nincs megerÅ‘sÃ­tett beÃ¡llÃ­tÃ¡sa
    1. POST /login: helyes jelszÃ³ -> Ã¡tmeneti (cel="beallitas", 15 perc) sÃ¼ti, Ã¡tirÃ¡nyÃ­tÃ¡s a /mfa/beallitas-ra
    2. GET  /mfa/beallitas : (v28-tÃ³l) csak a BEVEZETÅ� + "QR-kÃ³d lÃ©trehozÃ¡sa" gomb - NEM Ã­r (egy GET-nek ismÃ©telhetÅ‘nek kell lennie)
       POST /mfa/beallitas/inditas : Ãºj TOTP-titok (a korÃ¡bbi meg nem erÅ‘sÃ­tett eldobva), a vÃ¡lasz kÃ¶zvetlenÃ¼l a QR-kÃ³d + kÃ©zi kulcs oldal
    3. POST /mfa/beallitas : a hitelesÃ­tÅ‘ alkalmazÃ¡s elsÅ‘ kÃ³dja. Siker -> a beÃ¡llÃ­tÃ¡s KÃ‰SZ, a felhasznÃ¡lÃ³ be van lÃ©pve
                   (a kÃ³d ismerete bizonyÃ­tja, hogy a titok a telefonjÃ¡n van), naplÃ³zÃ¡s, Ã©rtesÃ­tÅ‘ e-mail
    A MEGERÅ�SÃ�TETT beÃ¡llÃ­tÃ¡st ez az oldal NEM Ã­rja felÃ¼l (csak a "beallitando" Ã¡llapotÃº felhasznÃ¡lÃ³ Ã©rheti el) -
    kÃ¼lÃ¶nben egy ellopott jelszÃ³ kicserÃ©lhetnÃ© a mÃ¡sodik faktort. Elveszett telefon: rendszeradmin-reset
    (mfa_felold.py; 5. fÃ¡zis: felÃ¼let).

BIZTONSÃ�G (rÃ©szletek: docs/KETLEPCSOS_HITELESITES.md)
    - Az Ã¡tmeneti sÃ¼ti NEM munkamenet: a security.get_current_user() visszautasÃ­tja (typ mezÅ‘).
    - A sÃ¼ti `SameSite=Strict`, `HttpOnly`, `Secure`, Ã©s csak a /mfa Ãºtvonalra Ã©rvÃ©nyes; 5 percig Ã©l.
    - A kÃ³d egyszer hasznÃ¡lhatÃ³ (mfa_utils: atomi, visszajÃ¡tszÃ¡s elleni rÃ¶gzÃ­tÃ©s).
    - A hibaÃ¼zenet mindig ugyanaz ("hibÃ¡s vagy lejÃ¡rt kÃ³d"), nem Ã¡rulja el, melyik rÃ©sze volt rossz.
    - Az oldalak `Cache-Control: no-store` fejlÃ©cet kapnak.
é    )Ú	APIRouterÚRequestÚDependsÚFormÚstatus)ÚHTMLResponseÚRedirectResponse)ÚSession)ÚdatetimeÚtimezoneN)ÚACCESS_TOKEN_EXPIRE_MINUTES)Úget_db)Úcreate_access_tokenÚbelepesi_tokenÚdecode_mfa_pending_tokenÚget_client_ipÚMFA_PENDING_COOKIE)Ú	templatesúCache-Controlzno-storezno-referrer)r   zReferrer-Policyui   HibÃ¡s vagy lejÃ¡rt kÃ³d. EllenÅ‘rizd, hogy a telefonod ideje pontos-e, Ã©s a legfrissebb kÃ³dot Ã­rd be!ÚkodÚrequestÚdbÚcelc                 ón  • [        U R                  R                  [        5      5      nU(       a  UR                  SS5      U:w  a  gUR	                  [
        R                  5      R                  [
        R                  R                  UR                  S5      :H  5      R                  5       nU(       a   UR                  (       a  UR                  SL a  gUR                  bS  UR                  S5      nUb>  [        R                  " U[        R                   S9R#                  SS9UR                  :  a  gU$ )	uÙ   A fÃ©lig bejelentkezett felhasznÃ¡lÃ³, ha az Ã¡tmeneti sÃ¼ti Ã©rvÃ©nyes, a megfelelÅ‘ CÃ‰LÃš ("kod" / "beallitas": a kÃ©t
vÃ©gpont nem hasznÃ¡lhatja egymÃ¡s tokenjÃ©t), Ã©s a fiÃ³k mÃ©g hasznÃ¡lhatÃ³; kÃ¼lÃ¶nben None.r   r   NÚsubFÚiat)Útz)Útzinfo)r   ÚcookiesÚgetr   ÚqueryÚmodelsÚUserÚfilterÚemailÚfirstÚaktivÚ	aktivalvaÚjelszo_valtozott_atr   Úfromtimestampr   ÚutcÚreplace)r   r   r   ÚpayloadÚuserr   s         Ú/var/www/website/routers/mfa.pyÚ!_felhasznalo_az_atmeneti_tokenbolr0   8   sâ   € ô ' w§¡×':Ñ':Ô;MÓ'NÓO€GÞ�g—k‘k %¨Ó/°3Ó6ØØ�8‰8”F—K‘KÓ ×'Ñ'¬¯©×(9Ñ(9¸W¿[¹[ÈÓ=OÑ(OÓP×VÑVÓX€DÞ�t—z—z T§^¡^°uÒ%<Øð ×ÑÑ+Ø�k‰k˜%Ó ˆØ‰;œ(×0Ò0°¼¿¹ÑF×NÑNÐVZÐNÐ[Ð^b×^vÑ^vÓvØØ€Kó    Úreturnc                  ó^   • [        S[        R                  S9n U R                  [        SS9  U $ )Nz/login©ÚurlÚstatus_codeú/mfa©Úpath)r	   r   ÚHTTP_303_SEE_OTHERÚdelete_cookier   )Úresps    r/   Ú_vissza_a_belepeshezr=   J   s-   € Ü ´f×6OÑ6OÑP€DØ×ÑÔ)°ÐÑ7Ø€Kr1   Úhibac                 óR   • [         R                  " U SUR                  US.[        S9$ )Nzmfa.html)r%   r>   ©r   ÚnameÚcontextÚheaders)r   ÚTemplateResponser%   Ú	_FEJLECEK)r   r.   r>   s      r/   Ú_oldalrF   P   s*   € Ü×%Ò%ØØØŸ*™*¨dÑ3Üñ	ð r1   r7   )Úresponse_classc                 óP   • [        X5      nU(       d
  [        5       $ [        X5      $ ©N)r0   r=   rF   ©r   r   r.   s      r/   Ú	mfa_oldalrK   Y   s#   € ä,¨WÓ9€DÞÜ#Ó%Ð%Ü�'Ó Ð r1   Ú c                 ó>  • [        X5      nU(       d
  [        5       $ [        U 5      nUR                  n[        R
                  " X$U5      (       a  [        X[        R                  5      $ [        R                  " X#5      [        R                  :w  a
  [        5       $ UR                  UR                  pv[        R                  " X$XS5      b  [        X[        R                  5      $ UR                  [        R                   U5      n[        R"                  " X#U5      (       d  [        X[$        5      $ UR'                  5         [        R(                  " X$U5        UR+                  [        R,                  " UUSSSU S3S95        UR'                  5         [/        X%U5      $ )Nõ   BejelentkezÃ©sÚ-u7   Sikeres bejelentkezÃ©s kÃ©tlÃ©pcsÅ‘s hitelesÃ­tÃ©ssel (Ú)©Ú
company_idÚuser_idÚ
field_nameÚ	old_valueÚ	new_value)r0   r=   r   r%   Úlogin_vedelemÚtiltva_erF   ÚTILTOTT_UZENETÚ	mfa_utilsÚallapotÚALLAPOT_KESZÚidrR   Úsikertelen_rogziteser    r"   r#   Úkod_ellenorzese_es_rogziteseÚHIBAS_KOD_UZENETÚcommitÚsikeres_torleseÚaddÚAuditLogÚ_teljes_belepes)r   r   r   r.   Ú	client_ipr%   rS   rR   s           r/   Úmfa_kod_ellenorzeserg   a   sH  € ô -¨WÓ9€DÞÜ#Ó%Ð%ä˜gÓ&€IØ�J‰J€Eô ×Ò˜b¨U×3Ñ3Ü�g¤]×%AÑ%AÓBÐBô ×Ò˜Ó"¤i×&<Ñ&<Ó<Ü#Ó%Ð%ð Ÿ'™' 4§?¡?ˆZÜ×)Ò)¨"¸ÓEÑQÜ�g¤]×%AÑ%AÓBÐBà�6‰6”&—+‘+˜wÓ'€DÜ×1Ò1°"¸C×@Ñ@Ü�gÔ%5Ó6Ð6ð ‡I�I„Kä×!Ò! "°Ô7Ø‡F�FŒ6�?Š?ØØØ#ØØKÈIÈ;ÐVWÐXñô ð ‡I�I„Kä˜2 iÓ0Ð0r1   r%   rf   c           
      ó‚  • U R                  [        R                  5      R                  [        R                  R                  U:H  5      R                  5       nUc,  [        [        R                  " X5      [        R                  S9nUR                  [        SS9  UR                  S[        XUSS9SSS[        S-  S	9  U$ )
uº  A teljes munkamenet kiadÃ¡sa a 2FA-kÃ³d (vagy mentÅ‘kÃ³d) elfogadÃ¡sa utÃ¡n (belÃ©pÃ©s vagy elsÅ‘ beÃ¡llÃ­tÃ¡s). Ãšj munkamenet-azonosÃ­tÃ³t (sid) indÃ­t:
ez dobja ki a fiÃ³k esetleges mÃ¡sik, mÃ©g Ã©lÅ‘ munkamenetÃ©t (v32, docs/EGYIDEJU_BELEPES.md); a rendszeradminra ez nem vonatkozik.
`resp` (v34): ha meg van adva, a sÃ¼tiket erre a (pl. a mentÅ‘kÃ³dokat mutatÃ³ oldal) vÃ¡laszra teszi, kÃ¼lÃ¶nben Ã¡tirÃ¡nyÃ­tÃ¡st ad a modulvÃ¡lasztÃ³ra.r4   r7   r8   Úaccess_tokenT)ÚmfaÚlaxé<   )ÚkeyÚvalueÚhttponlyÚsecureÚsamesiteÚmax_age)r!   r"   r#   r$   r%   r&   r	   Újelszo_hazirendÚbelepes_utani_celr   r:   r;   r   Ú
set_cookier   r   )r   r%   rf   r<   r.   s        r/   re   re   ”   s¨   € ð �8‰8”F—K‘KÓ ×'Ñ'¬¯©×(9Ñ(9¸UÑ(BÓC×IÑIÓK€DØ�|ä¤O×$EÒ$EÀbÓ$OÔ]c×]vÑ]vÑwˆØ×ÑÔ)°ÐÑ7Ø‡O�OØä˜R y°dÑ;ØØØÜ+¨bÑ0ð ñ ð €Kr1   z
/mfa/megsec                  ó   • [        5       $ )up   MÃ©gse: az Ã¡tmeneti sÃ¼ti tÃ¶rlÃ©se, vissza a bejelentkezÃ©shez (POST: Ã¡llapotot mÃ³dosÃ­t - a sÃ¼tit tÃ¶rli).)r=   © r1   r/   Ú	mfa_megserx   ©   s   € ô  Ó!Ð!r1   Útitokc           	      ób   ^ • SR                  U 4S j[        S[        T 5      S5       5       5      $ )u€   A kÃ©zi beÃ­rÃ¡sÃº kulcs olvashatÃ³bb alakja (4 karakteres csoportok) - az alkalmazÃ¡sok a szÃ³kÃ¶zt figyelmen kÃ­vÃ¼l hagyjÃ¡k.Ú c              3   ó2   >#   • U  H  nTXS -    v •  M     g7f)é   Nrw   )Ú.0Úiry   s     €r/   Ú	<genexpr>Ú'_kulcs_csoportositva.<locals>.<genexpr>´   s   øé € ÐDÒ,C q�E˜! ™E•NÒ,Cùs   ƒr   r}   )ÚjoinÚrangeÚlen)ry   s   `r/   Ú_kulcs_csoportositvar…   ²   s%   ø€ à�8‰8ÔD¬E°!´S¸³ZÀÔ,CÓDÓDÐDr1   c                 ó¸   • [         R                  " U SUR                  U[        R                  " [        R
                  " X5      5      [        U5      S.[        S9$ )Númfa_beallitas.html©r%   r>   ÚqrÚkulcsr@   )r   rD   r%   rZ   Úqr_png_data_uriÚprovisioning_urir…   Ú_BEALLITAS_FEJLECEK)r   r.   ry   r>   s       r/   Ú_beallitas_oldalrŽ   ·   sP   € Ü×%Ò%ØØ!à—Z‘ZØÜ×+Ò+¬I×,FÒ,FÀtÓ,SÓTÜ)¨%Ó0ñ	
ô $ñ
ð 
r1   c                 ór   • [        XSS9nUb(  [        R                  " X5      [        R                  :w  a  gU$ )u   A beÃ¡llÃ­tÃ¡sra jogosult (Ã©rvÃ©nyes, "beallitas" cÃ©lÃº Ã¡tmeneti sÃ¼ti Ã‰S "beallitando" Ã¡llapot) felhasznÃ¡lÃ³, vagy None.Ú	beallitas)r   N)r0   rZ   r[   ÚALLAPOT_BEALLITANDOrJ   s      r/   Ú_beallitando_felhasznalor’   Å   s3   € ä,¨W¸kÑJ€DØ�|”y×(Ò(¨Ó2´i×6SÑ6SÓSØØ€Kr1   c                 óX   • U R                   R                  S5      nUSL=(       a    US;  $ )u»  MÃ©lysÃ©gi vÃ©delem a bÃ¶ngÃ©szÅ‘s CSRF ellen - azonos a routers/rendszeradmin_mfa.py `_idegen_eredet`-Ã©vel (onnan kÃ¶rkÃ¶rÃ¶s import
miatt nem importÃ¡lhatÃ³; ha az egyiket mÃ³dosÃ­tod, a mÃ¡sikat is!). A `Sec-Fetch-Site` `same-origin` / `none` jÃ³, minden mÃ¡s
(`cross-site`, `same-site`) elutasÃ­tva; hiÃ¡nyzÃ³ fejlÃ©c (rÃ©gi bÃ¶ngÃ©szÅ‘) nem utasÃ­tandÃ³ el. A fÅ‘ vÃ©delem itt amÃºgy is az Ã¡tmeneti
sÃ¼ti: SameSite=Strict Ã©s Path=/mfa.zsec-fetch-siteN)zsame-originÚnone)rC   r    )r   Úsfss     r/   Ú_idegen_eredetr–   Í   s.   € ð
 �/‰/×
Ñ
Ð.Ó
/€CØ�dˆ?×A˜sÐ*AÑAÐAr1   ú/mfa/beallitasc           	      óŽ   • [        X5      nU(       d
  [        5       $ [        R                  " U SUR                  SSSS.[
        S9$ )u‡  A beÃ¡llÃ­tÃ¡s BEVEZETÅ� oldala: magyarÃ¡zat + "QR-kÃ³d lÃ©trehozÃ¡sa" gomb. SZÃ�NDÃ‰KOSAN CSAK MEGJELENÃ�T, NEM Ã�R (v28).

KorÃ¡bban (v27-ig) ez a GET minden megnyitÃ¡skor ÃšJ titkot Ã­rt az adatbÃ¡zisba (commit), Ã­gy egy frissÃ­tÃ©s, a vissza-gomb vagy egy
bÃ¶ngÃ©szÅ‘-elÅ‘tÃ¶ltÃ©s Ã©szrevÃ©tlenÃ¼l Ã©rvÃ©nytelenÃ­tette a mÃ¡r beolvasott QR-kÃ³dot. Egy GET-nek biztonsÃ¡gosnak Ã©s ismÃ©telhetÅ‘nek kell
lennie (docs/GET_ATTEKINTES.md, 7. fejezet), ezÃ©rt az Ã­rÃ¡s Ã¡tkerÃ¼lt a POST /mfa/beallitas/inditas vÃ©gpontra.
A biztonsÃ¡gi tulajdonsÃ¡g VÃ�LTOZATLAN: minden MEGJELENÃ�TETT titok friss, a korÃ¡bbi megerÅ‘sÃ­tetlen eldobva (lÃ¡sd lent).r‡   Nrˆ   r@   )r’   r=   r   rD   r%   r�   rJ   s      r/   Úmfa_beallitas_oldalr™   Ö   sF   € ô $ GÓ0€DÞÜ#Ó%Ð%Ü×%Ò%ØØ!ØŸ*™*¨d¸$ÈÑNÜ#ñ	ð r1   z/mfa/beallitas/inditasc                 ó<  • [        X5      nU(       d
  [        5       $ [        U 5      (       a  [        S[        R
                  S9$ UR                  n[        R                  " X5      nUc
  [        5       $ [        XR                  [        R                  U5      U5      $ )uã  A beÃ¡llÃ­tÃ¡s INDÃ�TÃ�SA: Ãºj titkot kÃ©szÃ­t Ã©s a QR-oldalt MEGJELENÃ�TI (a vÃ¡lasz kÃ¶zvetlenÃ¼l ez az oldal, nincs Ã¡tirÃ¡nyÃ­tÃ¡s -
a titok Ã­gy sosem kerÃ¼l URL-be vagy a bÃ¶ngÃ©szÅ‘elÅ‘zmÃ©nybe; Cache-Control: no-store, Referrer-Policy: no-referrer).

MINDEN indÃ­tÃ¡s ÃšJ titkot kÃ©szÃ­t, a korÃ¡bban meg nem erÅ‘sÃ­tettet eldobja (biztonsÃ¡gi review-bÃ³l, 5c.2). Ha a meg nem erÅ‘sÃ­tett
titkot ÃºjrahasznÃ¡lnÃ¡nk, egy jelszÃ³t ismerÅ‘ tÃ¡madÃ³ (aki elÅ‘bb indÃ­tja a beÃ¡llÃ­tÃ¡st) ugyanazt a titkot lÃ¡tnÃ¡, mint a jogos
felhasznÃ¡lÃ³, Ã©s a felhasznÃ¡lÃ³ megerÅ‘sÃ­tÃ©se utÃ¡n tartÃ³san, Ã©szrevÃ©tlenÃ¼l kÃ³dot tudna generÃ¡lni. Ã�gy a tÃ¡madÃ³ Ã¡ltal lÃ¡tott titok
Ã©rvÃ©nytelenedik, amint a felhasznÃ¡lÃ³ elindÃ­tja (Ã©s fordÃ­tva: a felhasznÃ¡lÃ³ hibÃ¡s kÃ³dja jelzi, ha valaki kÃ¶zben Ãºjat kÃ©szÃ­tett).
Ã�ra: az oldal ÃºjratÃ¶ltÃ©se (a bÃ¶ngÃ©szÅ‘ az ÃºjrakÃ¼ldÃ©st megerÅ‘sÃ­ttesse) Ãºj QR-t ad - a mÃ¡r beolvasott rÃ©gi nem mÅ±kÃ¶dik (az oldal
erre figyelmeztet). MegerÅ‘sÃ­tett beÃ¡llÃ­tÃ¡s ide nem juthat (a _beallitando_felhasznalo kizÃ¡rja).
Az Ã­rÃ¡s ATOMI (mfa_utils.titok_inditasa: UPDATE ... WHERE a beÃ¡llÃ­tÃ¡s nincs megerÅ‘sÃ­tve): egy pÃ¡rhuzamos megerÅ‘sÃ­tÃ©s mellett
sem Ã­rhat felÃ¼l megerÅ‘sÃ­tett beÃ¡llÃ­tÃ¡st.r—   r4   )r’   r=   r–   r	   r   r:   r]   rZ   Útitok_inditasarŽ   r    r"   r#   )r   r   r.   rS   ry   s        r/   Úmfa_beallitas_inditasarœ   é   s|   € ô $ GÓ0€DÞÜ#Ó%Ð%Ü�g×ÑÜÐ$4Ä&×B[ÑB[Ñ\Ð\Ø�g‰g€GÜ×$Ò$ RÓ1€EØ�}Ü#Ó%Ð%Ü˜G§V¡V¬F¯K©K¸Ó%AÀ5ÓIÐIr1   c                 ó  • [        X5      nU(       d
  [        5       $ [        U 5      nUR                  n[        R
                  " X$U5      (       aB  [        R                  " U5      nU(       a  [        XU[        R                  5      $ [        5       $ [        R                  " U5      nUc  [        S[        R                  S9$ UR                  UR                  p‡[        R                  " X$XS5      bX  UR!                  ["        R$                  U5      n[        X[        R                  " U5      =(       d    U[        R                  5      $ UR!                  ["        R$                  U5      n[        R&                  " X#U5      (       d^  UR)                  5         UR!                  ["        R$                  U5      n[        X[        R                  " U5      =(       d    U[*        5      $ UR-                  ["        R.                  " UUSSSU S3S95        UR1                  5         [        R2                  " X$U5        [5        X'U5        UR-                  ["        R.                  " UUSS	S
U S3S95        UR1                  5         [7        XXxXT5      $ )Nr—   r4   u   KÃ©tlÃ©pcsÅ‘s hitelesÃ­tÃ©su   nincs beÃ¡llÃ­tvau'   BeÃ¡llÃ­tva (hitelesÃ­tÅ‘ alkalmazÃ¡s, rP   rQ   rN   rO   u7   Sikeres bejelentkezÃ©s (elsÅ‘ 2FA-beÃ¡llÃ­tÃ¡s utÃ¡n) ()r’   r=   r   r%   rW   rX   rZ   Útitok_olvasasarŽ   rY   r	   r   r:   r]   rR   r^   r    r"   r#   ÚmegerositesÚrollbackr`   rc   rd   ra   rb   Ú_ertesito_levelÚ_belepes_mentokodokkal)	r   r   r   r.   rf   r%   ry   rS   rR   s	            r/   Úmfa_beallitas_megerositeser£     sþ  € ô $ GÓ0€DÞÜ#Ó%Ð%ä˜gÓ&€IØ�J‰J€Eä×Ò˜b¨U×3Ñ3Ü×(Ò(¨Ó.ˆÞW\Ô ¨u´m×6RÑ6RÓSÐxÔbvÓbxÐxä×$Ò$ TÓ*€EØ�}ÜÐ$4Ä&×B[ÑB[Ñ\Ð\ð Ÿ'™' 4§?¡?ˆZÜ×)Ò)¨"¸ÓEÑQØ�v‰v”f—k‘k 7Ó+ˆÜ ¬y×/GÒ/GÈÓ/M×/VÐQVÔXe×XtÑXtÓuÐuà�6‰6”&—+‘+˜wÓ'€DÜ× Ò  ¨3×/Ñ/Ø
�‰ŒØ�v‰v”f—k‘k 7Ó+ˆÜ ¬y×/GÒ/GÈÓ/M×/VÐQVÔXhÓiÐið ‡F�FŒ6�?Š?ØØØ0Ø%Ø;¸I¸;ÀaÐHñô ð ‡I�I„Kä×!Ò! "°Ô7Ü�B Ô+Ø‡F�FŒ6�?Š?ØØØ#ØØKÈIÈ;ÐVWÐXñô ð ‡I�I„KÜ! '¨wÀEÓUÐUr1   z/valassz-modultTF)ÚkodokÚmaradtr>   ÚokÚtovabbÚ	kezelhetoÚelsoÚ
kod_szovegr¥   r¦   r§   r¨   r©   rª   c       	         ó‚   • [         R                  " U SXX4XVUU[        R                  [        R                  U	S.[
        S9$ )u  A mentÅ‘kÃ³dok oldala (templates/mfa_mentokodok.html). `kodok`: az ÃšJ kÃ©szlet (egyszer lÃ¡thatÃ³) - ilyenkor ezt mutatja; kÃ¼lÃ¶nben a kezelÅ‘
Ã¡llapotot (hÃ¡tralÃ©vÅ‘ darabszÃ¡m + "Ãºj kÃ©szlet" Å±rlap). A vÃ¡lasz sosem kerÃ¼lhet gyorsÃ­tÃ³tÃ¡rba, a Referer nem viheti tovÃ¡bb.zmfa_mentokodok.html)r%   r¤   r¥   r>   r¦   r§   r¨   r©   ÚdarabÚkuszobrª   r@   )r   rD   Úmentokod_utilsÚDARABÚFIGYELMEZTETO_KUSZOBr�   )
r   r%   r¤   r¥   r>   r¦   r§   r¨   r©   rª   s
             r/   Úmentokod_oldalr±   =  sL   € ô ×%Ò%ØÐ3Ø¸6ÐWYð  {DØ¬×(<Ñ(<Ì×HkÑHkØ)ñ+ô $ñð r1   c                 ó<   • SU -   S-   SR                  U5      -   S-   $ )u   A letÃ¶lthetÅ‘ .txt tartalma.u   EmeLOG mentÅ‘kÃ³dok - uŸ   
Minden kÃ³d csak egyszer hasznÃ¡lhatÃ³. Tartsd biztonsÃ¡gos helyen (pl. jelszÃ³kezelÅ‘, kinyomtatva) - ne a telefonodon, a hitelesÃ­tÅ‘ alkalmazÃ¡s mellett!

Ú
)r‚   )r%   r¤   s     r/   Úmentokod_szovegr´   J  s4   € à$ uÑ,ð 0oñ oà�i‰i˜Óñà!%ñ&ð 'r1   rS   c                 ó¶  •  [         R                  " X5      nUR                  [        R                  " X2SSS[         R
                   SU S3S95        UR                  5         [        XUS
[        XF5      S9n[        XXX5      $ ! [         aJ  nUR                  5         [        S[        U5      R                   SU 35        [        XU5      s S	nA$ S	nAff = f)ua  Az ELSÅ� 2FA-beÃ¡llÃ­tÃ¡s vÃ©gÃ©n: Ãºj mentÅ‘kÃ³d-kÃ©szlet, Ã©s a teljes munkamenet kiadÃ¡sa egy olyan oldalon, amely a kÃ³dokat EGYSZER megmutatja
(a "TovÃ¡bb" gomb a modulvÃ¡lasztÃ³ra visz). Ha a kÃ©szlet elkÃ©szÃ­tÃ©se bÃ¡rmiÃ©rt elbukik, a belÃ©pÃ©st nem akadÃ¡lyozza: a felhasznÃ¡lÃ³
kÃ©sÅ‘bb is kÃ©rhet kÃ©szletet (BeÃ¡llÃ­tÃ¡sok -> MentÅ‘kÃ³dok).u*   KÃ©tlÃ©pcsÅ‘s hitelesÃ­tÃ©s - mentÅ‘kÃ³dokrO   u   Ãšj mentÅ‘kÃ³d-kÃ©szlet (u    db, elsÅ‘ beÃ¡llÃ­tÃ¡s, rP   rQ   u8   âš ï¸� A mentÅ‘kÃ³d-kÃ©szlet elkÃ©szÃ­tÃ©se sikertelen: ú: NT)r%   r¤   r©   rª   )r®   Ú
uj_keszletrc   r"   rd   r¯   ra   Ú	Exceptionr    ÚprintÚtypeÚ__name__re   r±   r´   )	r   r   rS   rR   r%   rf   r¤   ÚexÚoldals	            r/   r¢   r¢   Q  sÑ   € ð
5Ü×)Ò)¨"Ó6ˆØ
�‰Œv�ŠØ!Ð?kÐwzØ1´.×2FÑ2FÐ1GÐG`ÐajÐ`kÐklÐmñ
ô 	ð 	�	‰	Œô
 ˜7°uÀ4ÔTcÐdiÓTqÑr€EÜ˜2 iÓ7Ð7øô ó 5Ø
�‰ŒÜÐHÌÈbË×IZÑIZÐH[Ð[]Ð^`Ð]aÐbÔcÜ˜r¨)Ó4Õ4ûð5ús   ‚A!B Â
CÂ?CÃCÃCc           
      óH  •  U R                  [        R                  U5      nUb  UR                  (       d  gS n[        R
                  " [        R                  " 5       5      nSU" UR                  5       SU" U5       SU" U5       S3n[        R                  " UR                  /SUS[        R                  UR                  U S	9  U R                  5         g! [         a>  nU R                  5         [        S
[!        U5      R"                   SU 35         SnAgSnAff = f)uU  BiztonsÃ¡gi Ã©rtesÃ­tÅ‘ a felhasznÃ¡lÃ³nak: a kÃ©tlÃ©pcsÅ‘s hitelesÃ­tÃ©s beÃ¡llÃ­tva lett. Ha NEM Å‘ volt (pl. egy ellopott
jelszÃ³val valaki mÃ¡s Ã¡llÃ­totta be az elsÅ‘ faktort), ebbÅ‘l Ã©szreveszi. Nem akadÃ¡lyozhatja a belÃ©pÃ©st: hibÃ¡nÃ¡l csak a konzolra Ã­r.
A kategÃ³ria "rendszer" (a levÃ©l-feliratkozÃ¡sokkal nem kapcsolhatÃ³ ki).Nc                 óN   • [         R                  " U c  SSS9$ [        U 5      SS9$ )NrL   T)Úquote)ÚhtmlÚescapeÚstr)Úxs    r/   Ú<lambda>Ú!_ertesito_level.<locals>.<lambda>l  s   € ”d—k’k¨©	 "ÀTÒJ´s¸1³vÀTÒJr1   u€   <div style="font-family:Arial,sans-serif;max-width:560px;margin:auto"><h2>KÃ©tlÃ©pcsÅ‘s hitelesÃ­tÃ©s beÃ¡llÃ­tva</h2><p>Kedves uz   !</p><p>Az EmeLOG fiÃ³kodon beÃ¡llÃ­tottÃ¡k a kÃ©tlÃ©pcsÅ‘s hitelesÃ­tÃ©st (hitelesÃ­tÅ‘ alkalmazÃ¡s).</p><p>IdÅ‘pont: <b>u   </b><br>IP-cÃ­m: <b>uŒ   </b></p><p style="color:#b02a37"><b>Ha nem te voltÃ¡l</b>, azonnal Ã©rtesÃ­tsd a rendszergazdÃ¡t - valaki ismerheti a jelszavadat!</p></div>u;   KÃ©tlÃ©pcsÅ‘s hitelesÃ­tÃ©s beÃ¡llÃ­tva az EmeLOG fiÃ³kodonÚrendszer)Ú	kategoriaÚ	prioritasrR   r   uO   âš ï¸� A 2FA-beÃ¡llÃ­tÃ¡s Ã©rtesÃ­tÅ‘ levelÃ©t nem sikerÃ¼lt sorba Ã¡llÃ­tani: r¶   )r    r"   r#   r%   rW   Úhelyi_ido_szovegÚ	_utc_mostÚusernameÚ	email_sorÚsorba_allitÚPRIORITAS_NORMALrR   ra   r¸   r    r¹   rº   r»   )r   rS   rf   r.   ÚeÚmostÚtorzsr¼   s           r/   r¡   r¡   d  s
  € ð{Ø�v‰v”f—k‘k 7Ó+ˆØ‰<˜tŸzŸzØÙJˆÜ×-Ò-¬m×.EÒ.EÓ.GÓHˆðá˜4Ÿ=™=Ó)Ð*ð +á  ›w˜iÐ';¹A¸i»L¸>ð JUð	Uð 	ô 	×Ò˜tŸz™z˜lÐ,iÐkpØ(2¼i×>XÑ>XØ)-¯©¸Rò	Að 	�	‰	�øÜó {Ø
�‰ŒÜÐ_Ô`dÐegÓ`h×`qÑ`qÐ_rÐrtÐuwÐtxÐy×zÑzûð{ús   ‚4C ·B!C Ã
D!Ã#4DÄD!)r   rI   )<Ú__doc__Úfastapir   r   r   r   r   Úfastapi.responsesr   r	   Úsqlalchemy.ormr
   r   r   rÁ   r"   rÍ   rW   r®   rs   rZ   Úconfigr   Údatabaser   Úsecurityr   r   r   r   r   Útemplates_envr   ÚrouterrE   r�   r`   rÃ   r0   r=   rF   r    rK   Úpostrg   re   rx   r…   rŽ   r’   Úboolr–   r™   rœ   r£   Úintr±   r´   r¢   r¡   rw   r1   r/   Ú<module>rß      s0  ðñ÷6 >Õ =ß <Ý "ß 'ã ã Û Û Û Û Û Ý .Ý ÷õ õ $á	‹€à˜jÐ)€	à(2À}ÑUÐ Ø~Ð ñ¨wð ¸Gð È#õ ð$Ð.ô ñ�Gð ¨õ ð ‡�ˆF <€Ð0Ù.5°f«oñ !�wð ! Gô !ó 1ð!ð ‡�ˆVÓñ �B‹xÙ˜&“/ñ/1Øð/1à	ð/1ð 	ô/1ó ð/1ñd˜ð ¨ð ¸õ ð* ‡�ˆ\Óñ"ó ð"ðE ð E¨ô Eñ
˜gð °Cð ¸sõ ð gð °7ô ðB˜Gð B¨ô Bð ‡�Ð¨\€Ð:Ù8?À»ñ  ð ¨gô ó ;ðð$ ‡�Ð%Ó&Ù;BÀ6»?ñ J Gð J°ô Jó 'ðJð0 ‡�ÐÓñ �B‹xÙ˜&“/ñ4VØð4Và	ð4Vð 	ô4Vó ð4Vðt ;?ÈaÐ]aÐmqØ!2ÀdÐY^Ðrtò
˜Gð 
¨sð 
Èð 
ÐWZð 
Ðgjð 
Øð
Ø?Cð
ØRVð
Øloõ
ð'˜3ð '¨#ô 'ð8 Gð 8°ð 8À3ð 8Ð[^ð 8Ðknô 8ð&{˜ð {¨#ð {¸#ð {À$õ {r1   