Login operatore: scelta del nome + PIN di 4 cifre #59
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
RICHIESTA: login semplificato, l'operatore sceglie il proprio nome e inserisce un PIN di 4 cifre (riferimento: il login del software GMP). Stesso modo in tutte le schermate che chiedono il login (anche le autorizzazioni del capoturno).
VERIFICATO 06/10 su V3.0.0
a829bf3: assente.ATTENZIONE: un PIN di 4 cifre va limitato nei tentativi (blocco dopo N errori) e resta solo per il reparto, non per l'admin.
FONTE: UPDATE TIEMEASUREFLOW_180926.docx (Tràfilo via Menoncin, test del 18/09/2026), daitarn:D:\Sorgenti\Clienti\Ricerca_e_Misura\0_REM-Tielogic_SHARED\1_TRAFILO\0_Specifiche\ (16 screenshot nel docx). Raccolta: TieMeasureFlow#44.
ESITO: analisi
COSA: login con scelta del nome + PIN di 4 cifre, anche nelle autorizzazioni del capoturno.
STATO: User senza PIN (BE/models/orm/user.py:15-16); BE/services/auth_service.py:41 authenticate_user, :57 authorise_supervisor; BE/api/routers/auth.py:19; SupervisorAction in BE/models/api/production.py:64 e models/api/measurement.py:74; FE/blueprints/auth.py:62-112, FE/templates/auth/login.html:43-72; modale capoturno task_execute.html:845-910.
DISEGNO: colonne
pin_hash(bcrypt come la password),pin_failed_count,pin_locked_until; 5 errori → blocco 15 minuti; PIN solo per utenti non admin. Endpoint: GET /api/auth/pin-users (pubblico: id e nome visualizzato degli utenti attivi con PIN), POST /api/auth/login-pin {user_id, pin} → stessa risposta del login con api_key; PUT /api/users/{id}/pin (admin, reset); SupervisorAction accetta in alternativa {supervisor_user_id, supervisor_pin}. Login con password resta.MIGRAZIONE: sì (017_user_pin, down 016). PIANO: unità B (backend), unità C (pagina di login); ondata 2 per la modale capoturno e il campo PIN in users.html.
TEST: login PIN ok/errato, blocco al 5° errore e sblocco, admin escluso, supervisore via PIN.
VERIFICATO su V3.0.0
a829bf3(mappa del 07/10). Percorsi da src/; BE=backend/, FE=frontend/flask_app/.🔵 daitarn — preso in carico 2026-10-07T10:21:21Z
ramo:
lavoro/daitarn· capacità: build-windows, gpuESITO: analisi — contratto dell'ondata 2 (migrazione 018, task_results, in_loop/at_close/fields, PIN del capoturno) nel commento su gitea:Adriano/TieMeasureFlow#54. Unità: P5 backend (dopo #59 backend), editor-task, esegui-esiti, esegui-pin.
Soluzione
ESITO: fatto
COSA: login operatore con scelta del nome e PIN di 4 cifre, anche nella modale del capoturno; password sempre disponibile; reset del PIN dall'admin (decisione Adriano 07/10).
FILE: src/backend/models/orm/user.py, services/auth_service.py — pin_hash bcrypt, pin_failed_count, pin_locked_until; 5 errori → blocco 15 min; PIN escluso per admin
FILE: src/backend/api/routers/auth.py, api/routers/users.py — GET /api/auth/pin-users, POST /api/auth/login-pin, PUT /api/users/{id}/pin
FILE: src/backend/models/api/production.py, models/api/measurement.py, api/routers/production.py, api/routers/measurements.py — SupervisorAction accetta supervisor_user_id + supervisor_pin
FILE: src/backend/api/middleware/rate_limit.py — rate limit su login-pin
FILE: src/frontend/flask_app/blueprints/auth.py, templates/auth/login.html, static/js/pin-pad.js — elenco nomi e tastierino
FILE: src/frontend/flask_app/templates/measure/task_execute.html, blueprints/measure.py — modale capoturno in modo PIN (default) o Password
FILE: src/frontend/flask_app/templates/admin/_users_panel.html, _users_script.html, blueprints/admin.py — PIN impostabile e togliibile dall'admin
MIGRAZIONE: 017_user_pin
COMMIT:
07e23b9c764cf73c55550dc94b2edf1727bb7cb061PROVA: suite goldrake su
b7cb061→ 835 passed 2 skipped (pytest 3.11 backend+frontend), 29 passed (pytest 3.13 vision), docker build vision ok; test src/backend/tests/test_pin.py, test_migrations.py, src/frontend/flask_app/tests/test_auth.py, test_measure_supervisor_pin.py, test_admin_user_pin.pyIn V3.0.0 da
b7cb061(ramo lavoro/daitarn-trafilo unito in fast-forward daa829bf3).