Barvna shema: Svetla
Trenutno dejavna stran: start » sl » Dokumentacija » Razširitve DokuWikija (WvdS) » Identity » Zaslon s pozivom za kodo

Zaslon s pozivom za kodo

Vzdrževalni zapis o do=wkidentity_stepup – zaslonu, skozi katerega gre vsak postopek z drugim dejavnikom na platformi. Beleži, zakaj je zgrajen tako, kot je, da nihče po nesreči ne bi obrnil nazaj štirih odločitev, ki so v njem.

Stanje

Sprejeto; v uporabi od 9. avgusta 2026.

Kontekst

[V uporabi od 2026-08-09] do=wkidentity_stepup je zaslon, skozi katerega gre vsak postopek z drugim dejavnikom na platformi – lastni prav tako kot postopki šestih priključenih paketov. Kar je na njem pravilno ali napačno pri upravljanju s tipkovnico, oznakah in sporočilih o napakah, se pokaže povsod.

Mehanizem

Tipka Enter sproži preverjanje, ne pošiljanja

HTML ob pritisku tipke Enter v besedilnem polju sproži prvi gumb za oddajo v obrazcu, ne najbližjega. Dokler sta bila gumb Pošlji kodo po e-pošti in polje za kodo v istem obrazcu, je Enter zato zahteval novo kodo. Nova koda prepiše shranjeno zgoščeno vrednost, zato je koda, ki jo je uporabnik pravkar vtipkal, v istem trenutku postala neveljavna – zaslon pa je sporočal, da je koda poslana.

Zdaj sta to dva sosednja obrazca: gumb za pošiljanje ima svojega, tako da je edini gumb za oddajo v obrazcu s kodo tisti, ki kodo preveri. S tem je bilo hkrati odgovorjeno na isto vprašanje pri obveznosti ob prijavi (LoginGate).

Polje za kodo nariše en razred, ne štiri ročno napisane različice

CodeField::html($totp, $name, $opts) je edino mesto, ki nariše polje za enkratno kodo. Obe meji izpelje iz nastavitve digits, namesto da bi bili zapisani kot številki:

Lastnost Vrednost Zakaj je izpeljana
pattern digits števk, presledki so dovoljeni Oba preverjevalnika presledke odstranita, preden števke preštejeta – polje mora sprejeti, kar sprejme preverjevalnik
maxlength dvakratnik digits 123 456 ima sedem znakov; nespremenljivi maxlength=6 je iz tega naredil 123 45
required je treba vklopiti izrecno. Brskalnik obrazec preveri ob vsaki oddaji obrazca, v katerem je polje. Na zaslonih, ki služijo samo vnosu kode, je to prav; v obrazcu profila bi preverjanje stalo ob gumbu Shrani in bi shranjevanje onemogočilo. Gumb Prekliči ima poleg tega še formnovalidate – sicer na praznem obrazcu ne bi naredil ničesar.

Napaka, stranska možnost, izhod

  • Napačna koda je sporočena ob polju, z role=„alert“ in povezana prek aria-describedby – ne v splošni vrstici s sporočili, kjer bi stala ločeno od polja, na katero se nanaša.
  • Prekliči in pošiljanje kode sta vizualno umirjena. Prej so vsi trije gumbi za oddajo uporabljali isto barvo poudarka; Prekliči je bil tako opazen kot Potrdi.
  • Če uporabnikov račun zahteve sploh ne more izpolniti, ker nima nastavljenega nobenega primernega dejavnika, zaslon ponudi pot nazaj (stepup_back, Nazaj na začetno stran). Obveznost ob prijavi jo je imela od začetka, ta zaslon pa ne.
  • code_format_hint navede pričakovano število števk (6 števk. Presledki so dovoljeni.), da je pravilo zapisano in ga ni treba ugibati.

Odločitev pade pred izpisom

Do 9. avgusta 2026 je ta zaslon odločal v kljuki za izris (TPL_ACT_UNKNOWN), tam pa nobena preusmeritev ne deluje: kljuka se sproži iz tpl_content(), torej iz strani, ki jo predloga že izpisuje. Posledica je bila hujša od opozorila. Pravilna koda je bila sprejeta, zagotovilo zabeleženo, vrnitev pa je tiho spodletela, tako da je uporabnik obstal na napol izrisani strani. Pri obveznosti ob prijavi se je ista napaka pokazala tako, da prijavni piškotek ni bil nastavljen.

Zdaj se odloča v ACTION_ACT_PREPROCESS, ki se res izvede pred vsakim izpisom; kljuka za izris nariše samo še tisto, kar je že odločeno. Enako je bilo preurejenih vseh šest priključenih paketov.

Posledice

  • Gumb za pošiljanje in gumb za preverjanje ostaneta v ločenih obrazcih. Če spet pristaneta v enem, Enter zahteva novo kodo in s tem razveljavi pravkar vtipkano.
  • Polje za kodo ostane CodeField::html(). pattern in maxlength se izpeljeta iz nastavitve digits in se nikoli ne zapišeta kot številki – nespremenljivi maxlength kodo s presledki odreže.
  • Odločitev ostane v ACTION_ACT_PREPROCESS. V kljuki za izris preusmeritev ne deluje, napaka pa je tiha: pravilna koda je sprejeta, vrnitev kljub temu spodleti.

Sorodne teme

sl/wiki/dwe/wkidentity/note-otp-screen.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille