Skip to content

Commit b087bab

Browse files
committed
feat: pulsante generazione etichetta impianto con creazione automatica di un accesso tramite token diretto o otp
1 parent 6d63945 commit b087bab

4 files changed

Lines changed: 696 additions & 0 deletions

File tree

modules/impianti/actions.php

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,90 @@
223223
flash()->info(tr('Checklist importate correttamente!'));
224224

225225
break;
226+
227+
// Creazione token OTP per l'impianto
228+
case 'create_otp_token':
229+
$id_module = post('id_module');
230+
$id_record = post('id_record');
231+
$descrizione = post('descrizione');
232+
$tipo_accesso = post('tipo_accesso');
233+
$email = post('email');
234+
$valido_dal = post('valido_dal');
235+
$valido_al = post('valido_al');
236+
237+
try {
238+
// Debug: log dei dati ricevuti
239+
error_log("OTP Token Creation - Dati ricevuti: " . json_encode([
240+
'id_module' => $id_module,
241+
'id_record' => $id_record,
242+
'descrizione' => $descrizione,
243+
'tipo_accesso' => $tipo_accesso,
244+
'email' => $email,
245+
'valido_dal' => $valido_dal,
246+
'valido_al' => $valido_al
247+
]));
248+
249+
// Genera token sicuro
250+
$token = bin2hex(random_bytes(32));
251+
252+
// Prepara i dati per l'inserimento
253+
$data = [
254+
'token' => $token,
255+
'descrizione' => $descrizione,
256+
'tipo_accesso' => $tipo_accesso,
257+
'id_module_target' => $id_module,
258+
'id_record_target' => $id_record,
259+
'email' => !empty($email) ? $email : '',
260+
'permessi' => 'r',
261+
'enabled' => 1,
262+
'created_at' => date('Y-m-d H:i:s'),
263+
];
264+
265+
// Aggiungi date di validità se specificate
266+
if (!empty($valido_dal)) {
267+
$data['valido_dal'] = date('Y-m-d H:i:s', strtotime($valido_dal));
268+
}
269+
if (!empty($valido_al)) {
270+
$data['valido_al'] = date('Y-m-d H:i:s', strtotime($valido_al));
271+
}
272+
273+
// Inserisci il token nel database
274+
error_log("OTP Token Creation - Dati da inserire: " . json_encode($data));
275+
$dbo->insert('zz_otp_tokens', $data);
276+
$token_id = $dbo->lastInsertedID();
277+
error_log("OTP Token Creation - Token inserito con ID: " . $token_id);
278+
279+
// Prepara la risposta
280+
$otp_url = base_url().'/?token='.$token;
281+
282+
$response = [
283+
'success' => true,
284+
'message' => tr('Token OTP creato con successo'),
285+
'token_info' => [
286+
'id' => $token_id,
287+
'token' => $token,
288+
'descrizione' => $descrizione,
289+
'url' => $otp_url,
290+
'tipo_accesso' => $tipo_accesso,
291+
'valido_dal' => !empty($valido_dal) ? date('d/m/Y', strtotime($valido_dal)) : tr('Nessuna scadenza'),
292+
'valido_al' => !empty($valido_al) ? date('d/m/Y', strtotime($valido_al)) : tr('Nessuna scadenza')
293+
]
294+
];
295+
296+
echo json_encode($response);
297+
298+
} catch (Exception $e) {
299+
$response = [
300+
'success' => false,
301+
'message' => tr('Errore durante la creazione del token: ').$e->getMessage()
302+
];
303+
304+
echo json_encode($response);
305+
}
306+
307+
$dbo->query("COMMIT");
308+
exit;
309+
break;
226310
}
227311

228312
// Operazioni aggiuntive per l'immagine

modules/impianti/buttons.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,3 +38,20 @@
3838
<button type="button" class="btn btn-primary" onclick="if( confirm(\'Duplicare questo impianto?\') ){ $(\'#copia-impianto\').submit(); }"> <i class="fa fa-copy"></i> '.tr('Duplica impianto').'</button>
3939
4040
<button type="button" class="btn btn-primary" onclick="if( confirm(\'Confermando, tutte le checklist della categoria verranno importate in questo impianto. Continuare?\') ){ $(\'#check-impianto\').submit(); }"> <i class="fa fa-refresh"></i> '.tr('Importa checklist categoria').'</button>';
41+
42+
// Verifica se esiste già un token OTP per questo impianto
43+
$existing_token = $dbo->fetchOne('SELECT id FROM zz_otp_tokens WHERE id_record_target = ? AND id_module_target = ?', [$id_record, $id_module]);
44+
45+
if ($existing_token) {
46+
// Pulsante per visualizzare l'etichetta già creata
47+
echo '
48+
<button type="button" class="btn btn-success" onclick="openModal(\''.tr('Visualizza etichetta').'\', \''.$structure->fileurl('modals/configurazione_otp.php').'?id_module='.$id_module.'&id_record='.$id_record.'\')">
49+
<i class="fa fa-eye"></i> '.tr('Visualizza etichetta').'
50+
</button>';
51+
} else {
52+
// Pulsante per configurazione guidata token OTP
53+
echo '
54+
<button type="button" class="btn btn-info" onclick="openModal(\''.tr('Genera etichetta').'\', \''.$structure->fileurl('modals/configurazione_otp.php').'?id_module='.$id_module.'&id_record='.$id_record.'\')">
55+
<i class="fa fa-qrcode"></i> '.tr('Genera etichetta').'
56+
</button>';
57+
}

0 commit comments

Comments
 (0)