query('UPDATE zz_users SET enabled=1 WHERE id='.prepare($id_utente))) { $_SESSION['infos'][] = tr('Utente abilitato!'); } break; // Disabilita utente case 'disable': if ($dbo->query('UPDATE zz_users SET enabled=0 WHERE id='.prepare($id_utente))) { $_SESSION['infos'][] = tr('Utente disabilitato!'); } break; // Cambio di password e usernome dell'utente case 'change_pwd': $id_utente = filter('id_utente'); $min_length = filter('min_length'); $min_length_username = filter('min_length_username'); $password = filter('password1'); $password_rep = filter('password2'); // Verifico che la password sia di almeno x caratteri if (strlen($password) < $min_length) { $_SESSION['errors'][] = tr('La password deve essere lunga almeno _MIN_ caratteri!', [ '_MIN_' => $min_length, ]); } elseif ($password != $password_rep) { $_SESSION['errors'][] = tr('Le password non coincidono'); } else { $idanagrafica = filter('idanag'); $dbo->query('UPDATE zz_users SET password='.prepare(Auth::hashPassword($password)).', idanagrafica='.prepare($idanagrafica).' WHERE id='.prepare($id_utente)); $_SESSION['infos'][] = tr('Password aggiornata!'); } $username = filter('username'); // Se ho modificato l'username, verifico che questo non sia già stato usato $rs = $dbo->fetchArray('SELECT username FROM zz_users WHERE id='.prepare($id_utente)); if ($rs[0]['username'] != $username) { $n = $dbo->fetchNum('SELECT id FROM zz_users WHERE username='.prepare($username)); if ($n == 0) { $dbo->query('UPDATE zz_users SET username='.prepare($username).' WHERE id='.prepare($id_utente)); $_SESSION['infos'][] = tr('Username aggiornato!'); } else { $_SESSION['errors'][] = tr('Utente già esistente!'); } } if (empty($id_record)) { redirect(ROOTDIR.'/modules/utenti/info.php'); } break; // Aggiunta di un nuovo utente case 'adduser': $username = filter('username'); $min_length = filter('min_length'); $min_length_username = filter('min_length_username'); $password = filter('password1'); $password_rep = filter('password2'); $idanagrafica = filter('idanag'); // Verifico che questo username non sia già stato usato $n = $dbo->fetchNum('SELECT * FROM zz_users WHERE username='.prepare($username)); if ($n == 0) { // Verifico che la password sia di almeno x caratteri if (strlen($password) < $min_length) { $_SESSION['errors'][] = tr('La password deve essere lunga almeno _MIN_ caratteri!', [ '_MIN_' => $min_length, ]); } elseif ($password != $password_rep) { $_SESSION['errors'][] = tr('Le password non coincidono'); } else { if ($dbo->query('INSERT INTO zz_users(idgruppo, username, password, idanagrafica, enabled, email) VALUES('.prepare($id_record).', '.prepare($username).', '.prepare(Auth::hashPassword($password)).', '.prepare($idanagrafica).", 1, '')")) { $dbo->query('INSERT INTO `zz_tokens` (`id_utente`, `token`) VALUES ('.prepare($dbo->lastInsertedID()).', '.prepare(secure_random_string()).')'); $_SESSION['infos'][] = tr('Utente aggiunto!'); } } } else { $_SESSION['errors'][] = tr('Utente già esistente!'); } break; // Aggiunta nuovo gruppo case 'add': $nome = filter('nome'); // Verifico che questo username non sia già stato usato if ($dbo->fetchNum('SELECT nome FROM zz_groups WHERE nome='.prepare($nome)) == 0) { $dbo->query('INSERT INTO zz_groups( nome, editable ) VALUES('.prepare($nome).', 1)'); $_SESSION['infos'][] = tr('Gruppo aggiunto!'); $id_record = $dbo->lastInsertedID(); } else { $_SESSION['errors'][] = tr('Gruppo già esistente!'); } break; // Elimina utente case 'delete': if ($dbo->query('DELETE FROM zz_users WHERE id='.prepare($id_utente))) { $_SESSION['infos'][] = tr('Utente eliminato!'); } break; // Abilita API utente case 'token_enable': if ($dbo->query('UPDATE zz_tokens SET enabled = 1 WHERE id_utente = '.prepare($id_utente))) { $_SESSION['infos'][] = tr('Token abilitato!'); } break; // Disabilita API utente case 'token_disable': if ($dbo->query('UPDATE zz_tokens SET enabled = 0 WHERE id_utente = '.prepare($id_utente))) { $_SESSION['infos'][] = tr('Token disabilitato!'); } break; // Elimina gruppo case 'deletegroup': // Verifico se questo gruppo si può eliminare $query = 'SELECT editable FROM zz_groups WHERE id='.prepare($id_record); $rs = $dbo->fetchArray($query); if ($rs[0]['editable'] == 1) { if ($dbo->query('DELETE FROM zz_groups WHERE id='.prepare($id_record))) { $dbo->query('DELETE FROM zz_users WHERE idgruppo='.prepare($id_record)); $dbo->query('DELETE FROM zz_permissions WHERE idgruppo='.prepare($id_record)); $_SESSION['infos'][] = tr('Gruppo eliminato!'); } } else { $_SESSION['errors'][] = tr('Questo gruppo non si può eliminare!'); } break; // Impostazione/reimpostazione dei permessi di accesso di default case 'restore_permission': //Gruppo Tecnici if ($dbo->fetchArray('SELECT `nome` FROM `zz_groups` WHERE `id` = '.prepare($id_record))[0]['nome']=='Tecnici'){ $data = array (); $data['Dashboard'] = 'rw'; $data['Anagrafiche'] = 'rw'; $data['Interventi'] = 'rw'; $data['Magazzino'] = 'rw'; $data['Articoli'] = 'rw'; $dbo->query('DELETE FROM zz_permissions WHERE idgruppo='.prepare($id_record)); foreach ($data as $module => $permessi) { $idmodule = $dbo->fetchArray('SELECT `id` FROM `zz_modules` WHERE `name` = "'.$module.'"')[0]['id']; $dbo->insert('zz_permissions', [ 'idgruppo' => $id_record, 'idmodule' => $idmodule, 'permessi' => $permessi, ]); } $_SESSION['infos'][] = tr('Permessi reimpostati.'); } break; // Aggiornamento dei permessi di accesso case 'update_permission': $permessi = filter('permesso'); $idmodulo = filter('idmodulo'); // Verifico che ci sia il permesso per questo gruppo $rs = $dbo->fetchArray('SELECT * FROM zz_permissions WHERE idgruppo='.prepare($id_record).' AND idmodule='.prepare($idmodulo)); if (count($rs) == 0) { $query = 'INSERT INTO zz_permissions(idgruppo, idmodule, permessi) VALUES('.prepare($id_record).', '.prepare($idmodulo).', '.prepare($permessi).')'; } else { $query = 'UPDATE zz_permissions SET permessi='.prepare($permessi).' WHERE id='.prepare($rs[0]['id']); } // Aggiunta dei permessi relativi alle viste $count = $dbo->fetchArray('SELECT COUNT(*) AS count FROM `zz_group_view` WHERE `id_gruppo` = '.prepare($id_record).' AND `id_vista` IN (SELECT `id` FROM `zz_views` WHERE `id_module`='.prepare($idmodulo).')'); if (empty($count[0]['count'])) { $results = $dbo->fetchArray('SELECT `id_vista` FROM `zz_group_view` WHERE `id_vista` IN (SELECT `id` FROM `zz_views` WHERE `id_module`='.prepare($idmodulo).')'); foreach ($results as $result) { $dbo->attach('zz_group_view', ['id_vista' => $result['id_vista']], ['id_gruppo' => $id_record]); } } $dbo->query($query); ob_end_clean(); echo 'ok'; break; }