fix(login): el login ahora respeta el empleado seleccionado
- auth_bp.py: login acepta employee_id y verifica el PIN solo de ese empleado. Fallback legacy se mantiene para clientes antiguos. - login.html: guarda el id del empleado seleccionado y lo envia en la peticion. - Se agrega cookie pos_role en el login inline del HTML. Esto corrige el problema donde seleccionar cualquier usuario accedia siempre al mismo empleado (el primero con el mismo PIN). Tests: 35 passed
This commit is contained in:
@@ -155,6 +155,7 @@
|
||||
------------------------------------------------------------------ */
|
||||
const state = {
|
||||
selectedUser: null,
|
||||
selectedUserId: null,
|
||||
pin: [],
|
||||
maxPinLength: 6,
|
||||
};
|
||||
@@ -351,6 +352,7 @@
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({
|
||||
tenant_id: parseInt(tenantId),
|
||||
employee_id: state.selectedUserId,
|
||||
pin: enteredPin,
|
||||
device_id: deviceId
|
||||
})
|
||||
@@ -374,6 +376,7 @@
|
||||
localStorage.setItem('pos_token', result.data.token);
|
||||
localStorage.setItem('pos_employee', JSON.stringify(result.data.employee));
|
||||
localStorage.setItem('pos_tenant_id', tenantId);
|
||||
document.cookie = 'pos_role=' + (result.data.employee.role || '') + '; path=/pos; SameSite=Lax';
|
||||
|
||||
btnLogin.innerHTML = '<span class="btn-login__icon" aria-hidden="true">✓</span> Bienvenido, ' + result.data.employee.name;
|
||||
btnLogin.style.background = 'var(--color-success)';
|
||||
@@ -398,6 +401,7 @@
|
||||
|
||||
function resetLoginState() {
|
||||
state.selectedUser = null;
|
||||
state.selectedUserId = null;
|
||||
state.pin = [];
|
||||
|
||||
userBtns.forEach(b => {
|
||||
@@ -487,6 +491,7 @@
|
||||
employees.forEach(function(emp) {
|
||||
var btn = document.createElement('button');
|
||||
btn.className = 'user-avatar-btn';
|
||||
btn.setAttribute('data-id', emp.id);
|
||||
btn.setAttribute('data-user', emp.initials);
|
||||
btn.setAttribute('data-name', emp.name);
|
||||
btn.setAttribute('data-role', emp.role_label);
|
||||
@@ -506,6 +511,7 @@
|
||||
btn.classList.add('selected');
|
||||
btn.setAttribute('aria-checked', 'true');
|
||||
state.selectedUser = emp.initials;
|
||||
state.selectedUserId = emp.id;
|
||||
state.pin = [];
|
||||
enablePinPad();
|
||||
updatePinDisplay();
|
||||
|
||||
Reference in New Issue
Block a user