From c1a424a4d96bf19f8e05937f4da9e005d515bf1c Mon Sep 17 00:00:00 2001 From: Dominic Date: Mon, 9 Mar 2026 19:47:07 +0000 Subject: [PATCH] h --- GUESTS.md | 4 +- backend/__pycache__/app.cpython-312.pyc | Bin 55559 -> 55299 bytes backend/app.py | 6 ++ backend/app.sqlite3 | Bin 49152 -> 49152 bytes backend/static/styles.css | 74 ++++++++++++++++++++++++ backend/templates/login.html | 71 ++++++++++++++++++++--- data/db/app.sqlite3 | Bin 53248 -> 53248 bytes 7 files changed, 145 insertions(+), 10 deletions(-) diff --git a/GUESTS.md b/GUESTS.md index 71b10dc..6aa2681 100644 --- a/GUESTS.md +++ b/GUESTS.md @@ -2,7 +2,7 @@ Aktueller Stand der Login-Gruppen aus `backend/app.py` (`DEFAULT_INVITATION_GROUPS`). -Anzahl Gruppen: **39** +Anzahl Gruppen: **41** | Username | Rolle | Passwort | Members | |---|---|---|---| @@ -45,5 +45,7 @@ Anzahl Gruppen: **39** | Alfred & Nadia | guest | `Alfr&Nad24!#` | Alfred, Nadia | | Anne-Marie & Erny | guest | `Anne&Ern24!#` | Anne-Marie, Erny | | Familie Kieffer | guest | `Kief!Fest24#` | Anny, John, Jana | +| Peter | guest | `Peter!Fest26#` | Peter | +| Johanna | guest | `Joha!Fest26#` | Johanna | Hinweis: Diese Datei enthält Klartext-Passwörter und sollte nicht öffentlich geteilt werden. diff --git a/backend/__pycache__/app.cpython-312.pyc b/backend/__pycache__/app.cpython-312.pyc index a477905b59855726c8e074da7c19959b36fc54dd..0ef5d579f3c6c2b987df4f81b19ec5a9e7b76d68 100644 GIT binary patch delta 11496 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 delta 12005 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 LeP)ddCdL0hi|SMp diff --git a/backend/app.py b/backend/app.py index 466b8f0..191f4cb 100644 --- a/backend/app.py +++ b/backend/app.py @@ -207,6 +207,8 @@ DEFAULT_INVITATION_GROUPS = [ "role": "guest", "members": ["Anny", "John", "Jana"], }, + {"name": "Peter", "password": "Peter!Fest26#", "role": "guest", "members": ["Peter"]}, + {"name": "Johanna", "password": "Joha!Fest26#", "role": "guest", "members": ["Johanna"]}, ] AGE_REQUIRED_NAMES = {"Lena", "Finn", "Fin", "Bruno"} @@ -272,6 +274,8 @@ TEXTS = { "login": "Login", "group_name": "Benutzername", "group_password": "Passwort", + "show_password": "Passwort anzeigen", + "hide_password": "Passwort verbergen", "login_submit": "Weiter zum Eingangsbereich", "guest_area": "Gästebereich", "hello_guest": "Hallo {name}.", @@ -411,6 +415,8 @@ TEXTS = { "login": "Login", "group_name": "Username", "group_password": "Password", + "show_password": "Show password", + "hide_password": "Hide password", "login_submit": "Continue to entrance area", "guest_area": "Guest Area", "hello_guest": "Hello {name}.", diff --git a/backend/app.sqlite3 b/backend/app.sqlite3 index d5cd24b618d4fd6b479052ee52db75a320d92aea..3cbef9a567e93279e2784756ed1f0e25c28accaa 100644 GIT binary patch delta 721 zcma)&J!{iZ7{&9?4WzdDtA%2q5fKd7AT9U(-X}}J7NiL+inUS~b6;DkO+wy$8=5*h zDDhi#Dp?!^S7&EGfuF*EYn>eG^epH6o^#H4jK*X1v69Swy1ACjp0-A-3$=NK?k0P^ z&anIZFdW*@>o=#rRu^xhTKaWTY}NAF!L3{Q^!s$Hb&%eeLzSe_**ERBsa-+kgcqpcF8M9>!+XU)V)tO$=gi68g zVO+;}rI9(xXO5+F@@4wzNq@J5nx&mdaXcxMd}(JofBnncVp>Ql$=|2Vxk6G-{s0@( z?uXBJW>GrIU8`Q*N=KP~KRr5rQY+>v?;n*nFM{@6?@f15XH-dD*L6~T*?HUB9CaJ7 zw%6BQA3SYWwG<9KiOfVT4Z|V?ZzN_SNEU}eR8Wp+7FqQ=6sbJJm=@^d$vmiJa%`rGdgNuMAJ;Md3z#6Kk|F2$?>bIZ2 E0nh-#egFUf delta 153 zcmV;K0A~MyfCGSl1CSd536UH_0SU2Sc0Uv+5d#A!0cUb=b#Py8Wo=?*a&t+u>OUGF z11AmAlLufaCJ(_5K@OY_j1IgH)DN2t(hnUDFAshX2@g3Ar4Ant?helnuntkP5fFS0 zv(jxc0s~0{tCI(Cld*vj1GB4hSquY73~-YNfRnQk5Y`K`aEz2A1_2Kw01qUy5fB;= HlO(^~$b&A& diff --git a/backend/static/styles.css b/backend/static/styles.css index ec7b111..d8b3ce7 100644 --- a/backend/static/styles.css +++ b/backend/static/styles.css @@ -296,6 +296,80 @@ section.card > p { background: rgba(255, 255, 255, 0.96); } +.password-input-wrap { + position: relative; +} + +.password-input-wrap input[type="password"], +.password-input-wrap input[type="text"] { + padding-right: 3.1rem; +} + +.password-input-wrap input[type="password"]::-ms-reveal, +.password-input-wrap input[type="password"]::-ms-clear { + display: none; +} + +.password-input-wrap input[type="password"]::-webkit-credentials-auto-fill-button, +.password-input-wrap input[type="password"]::-webkit-contacts-auto-fill-button { + visibility: hidden; + display: none !important; + pointer-events: none; +} + +.password-toggle { + position: absolute; + right: 0.5rem; + top: 50%; + transform: translateY(-50%); + width: 2rem; + height: 2rem; + border: 0; + border-radius: 999px; + background: transparent; + display: grid; + place-items: center; + cursor: pointer; + color: rgba(122, 47, 63, 0.72); + opacity: 0; + pointer-events: none; + transition: opacity 0.18s ease, color 0.18s ease, background-color 0.18s ease; +} + +.password-toggle.is-visible { + opacity: 1; + pointer-events: auto; +} + +.password-toggle:hover, +.password-toggle:focus-visible { + color: rgba(122, 47, 63, 0.95); + background: rgba(178, 137, 70, 0.16); + outline: none; +} + +.password-toggle .icon-eye { + width: 1.1rem; + height: 1.1rem; + fill: none; + stroke: currentColor; + stroke-width: 1.9; + stroke-linecap: round; + stroke-linejoin: round; +} + +.password-toggle .icon-eye-closed { + display: none; +} + +.password-toggle.is-active .icon-eye-open { + display: none; +} + +.password-toggle.is-active .icon-eye-closed { + display: block; +} + .login-shell input[type="text"]:focus, .login-shell input[type="password"]:focus { border-color: rgba(122, 47, 63, 0.58); diff --git a/backend/templates/login.html b/backend/templates/login.html index 4e7e932..9583475 100644 --- a/backend/templates/login.html +++ b/backend/templates/login.html @@ -16,7 +16,28 @@ @@ -35,16 +56,48 @@ (() => { const banner = document.querySelector("[data-login-privacy-banner]"); const acceptBtn = document.querySelector("[data-login-privacy-accept]"); - if (!banner || !acceptBtn) return; - const storageKey = "login_privacy_banner_v1_ack"; - if (localStorage.getItem(storageKey) === "1") { - banner.hidden = true; - return; + if (banner && acceptBtn) { + const storageKey = "login_privacy_banner_v1_ack"; + if (localStorage.getItem(storageKey) === "1") { + banner.hidden = true; + } else { + acceptBtn.addEventListener("click", () => { + localStorage.setItem(storageKey, "1"); + banner.hidden = true; + }); + } } - acceptBtn.addEventListener("click", () => { - localStorage.setItem(storageKey, "1"); - banner.hidden = true; + + const passwordInput = document.querySelector("[data-password-input]"); + const passwordToggle = document.querySelector("[data-password-toggle]"); + if (!passwordInput || !passwordToggle) return; + + const labelShow = "{{ t('show_password') }}"; + const labelHide = "{{ t('hide_password') }}"; + + const syncState = () => { + const hasValue = passwordInput.value.length > 0; + passwordToggle.hidden = !hasValue; + passwordToggle.classList.toggle("is-visible", hasValue); + if (!hasValue) { + passwordInput.type = "password"; + passwordToggle.setAttribute("aria-label", labelShow); + passwordToggle.setAttribute("title", labelShow); + passwordToggle.classList.remove("is-active"); + } + }; + + passwordToggle.addEventListener("click", () => { + const showPassword = passwordInput.type === "password"; + passwordInput.type = showPassword ? "text" : "password"; + const label = showPassword ? labelHide : labelShow; + passwordToggle.setAttribute("aria-label", label); + passwordToggle.setAttribute("title", label); + passwordToggle.classList.toggle("is-active", showPassword); }); + + passwordInput.addEventListener("input", syncState); + syncState(); })(); {% endblock %} diff --git a/data/db/app.sqlite3 b/data/db/app.sqlite3 index 6d8ead1f16a989584094e0a87f8d0afd0c243831..db8544dbb83d8263964da74286d1bf7306fa6cfa 100644 GIT binary patch delta 860 zcma)(PfQa*6vlVE4W+c(LJTya#*j#2i~O0LncbP`!Gtt&XoJy+6;Cp=GfN>rmzGLQ zFa-^X8cZ>Bksi*Z(h8Sc<`#+J$llMTf~zGoaDWC`Mz)F_h$RR*gi1!^ZMrV z^JRVWaG^dmUL1%Um-NMEqwU{aRjWcZTUAZdQc-nJDrV&Mw!hNgvUMf=F*P`nd!N0R zwKCr`uQNmDk@?u1PXA1Y=`bAV|CW8b5brmN=7%8R7h}-?{)L$NDZJ({n?tE6snV$P zwKZN$8ae&C+EC3x`1t{h8C9bbB({UNacFc7caCEMRC_f&uW7xr#ZwOi(3t>e0BHkkK~G;&>z(euy0XMu!SrsvXC%rPOop$X zKGF4LP~4k{`t6gxyEkrj#eK6M->fv`l8W@hiNd+=rODvyUQthm$!EVJlyogf><96* zOxL2Fyh{z6aXqj9#i*v@dQSiI#7gMDd~vbQFt@bqSZ2=Liu7w{XXjQiq2(Xm$jzRj zx7_A^f1`vTacGH_tWjDnx8QnNG|DsW#`^N|DB&XFB~S>DaYh{ANeZ}PgdhmGAV5$D zP--iW6R2FET*NFS9OfVkIJV7ggt>=hA8kbl|o1gf$$Wi z7I1~Kk)u4p)nZ$`KuJ9a0ge0y-8RG&=Ko}r4w5en^a52M7xDgMwAOTV-&$bCZ7?f>Em#*V)H2BO{RWdHyG delta 292 zcmZozz}&Ead4e=!%0wAw#*~c-8TvZvf-KDHjOj)Br3LZ1skuq1Ma7;B3=G^r3PyzJmBAyz#_n` z&U@XzMG#4pRI&tJ#S$#2QGluw@j9p8EW4Saz>eKowB zFVz|`F?%vUoXp-Zd1IqH^X7-mli9c!7&sgSTyruLizhp_O0y|&FffWTY@XlM$;iks zS+hqMNQQ&S)*c;RkYX<1!z*+0Q!-P5>ZRB