Lisää sähköpostiallekirjoitus per käyttäjä per postilaatikko
- Allekirjoitukset tallennetaan users.json:iin (signatures-objekti, avaimena mailbox_id) - Käyttäjälomakkeessa dynaamiset textareat jokaiselle postilaatikolle - Allekirjoitus liitetään automaattisesti sähköpostivastauksiin (ticket_reply) - Esikatselu näkyy tikettivastauslomakkeen alla - Muistiinpanoihin (ticket_note) ei lisätä allekirjoitusta - Uusi all_mailboxes endpoint palauttaa kaikki käyttäjän postilaatikot - check_auth ja login palauttavat nyt myös user_id ja signatures Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
67
api.php
67
api.php
@@ -1067,6 +1067,7 @@ switch ($action) {
|
||||
'role' => $u['role'],
|
||||
'companies' => $companyList,
|
||||
'company_id' => $_SESSION['company_id'],
|
||||
'signatures' => $u['signatures'] ?? [],
|
||||
]);
|
||||
$found = true;
|
||||
break;
|
||||
@@ -1107,13 +1108,23 @@ switch ($action) {
|
||||
$companyList[] = ['id' => $comp['id'], 'nimi' => $comp['nimi']];
|
||||
}
|
||||
}
|
||||
// Hae allekirjoitukset
|
||||
$userSignatures = [];
|
||||
foreach ($users as $uu) {
|
||||
if ($uu['id'] === $_SESSION['user_id']) {
|
||||
$userSignatures = $uu['signatures'] ?? [];
|
||||
break;
|
||||
}
|
||||
}
|
||||
echo json_encode([
|
||||
'authenticated' => true,
|
||||
'user_id' => $_SESSION['user_id'],
|
||||
'username' => $_SESSION['username'],
|
||||
'nimi' => $_SESSION['nimi'],
|
||||
'role' => $_SESSION['role'],
|
||||
'companies' => $companyList,
|
||||
'company_id' => $_SESSION['company_id'] ?? '',
|
||||
'signatures' => $userSignatures,
|
||||
]);
|
||||
} else {
|
||||
echo json_encode(['authenticated' => false]);
|
||||
@@ -1232,6 +1243,12 @@ switch ($action) {
|
||||
$allCompanies = loadCompanies();
|
||||
$validIds = array_column($allCompanies, 'id');
|
||||
$companies = array_values(array_filter($companies, fn($c) => in_array($c, $validIds)));
|
||||
$signatures = [];
|
||||
if (isset($input['signatures']) && is_array($input['signatures'])) {
|
||||
foreach ($input['signatures'] as $mbId => $sig) {
|
||||
$signatures[(string)$mbId] = (string)$sig;
|
||||
}
|
||||
}
|
||||
$newUser = [
|
||||
'id' => generateId(),
|
||||
'username' => $username,
|
||||
@@ -1240,6 +1257,7 @@ switch ($action) {
|
||||
'email' => $email,
|
||||
'role' => $role,
|
||||
'companies' => $companies,
|
||||
'signatures' => $signatures,
|
||||
'luotu' => date('Y-m-d H:i:s'),
|
||||
];
|
||||
$users[] = $newUser;
|
||||
@@ -1269,6 +1287,13 @@ switch ($action) {
|
||||
if (!empty($input['password'])) {
|
||||
$u['password_hash'] = password_hash($input['password'], PASSWORD_DEFAULT);
|
||||
}
|
||||
if (isset($input['signatures']) && is_array($input['signatures'])) {
|
||||
$sigs = [];
|
||||
foreach ($input['signatures'] as $mbId => $sig) {
|
||||
$sigs[(string)$mbId] = (string)$sig;
|
||||
}
|
||||
$u['signatures'] = $sigs;
|
||||
}
|
||||
$found = true;
|
||||
addLog('user_update', '', '', "Muokkasi käyttäjää: {$u['username']}");
|
||||
// Päivitä sessio jos muokattiin kirjautunutta käyttäjää
|
||||
@@ -2022,8 +2047,20 @@ switch ($action) {
|
||||
$replyMailbox = $companyConf['mailboxes'][0];
|
||||
}
|
||||
|
||||
// Hae käyttäjän allekirjoitus tälle postilaatikolle
|
||||
$mailboxId = $t['mailbox_id'] ?? '';
|
||||
$signature = '';
|
||||
$usersForSig = loadUsers();
|
||||
foreach ($usersForSig as $sigUser) {
|
||||
if ($sigUser['id'] === $_SESSION['user_id']) {
|
||||
$signature = trim($sigUser['signatures'][$mailboxId] ?? '');
|
||||
break;
|
||||
}
|
||||
}
|
||||
$emailBody = $signature ? $body . "\n\n-- \n" . $signature : $body;
|
||||
|
||||
$subject = 'Re: ' . $t['subject'];
|
||||
$sent = sendTicketMail($t['from_email'], $subject, $body, $lastMsgId, trim($allRefs), $replyMailbox);
|
||||
$sent = sendTicketMail($t['from_email'], $subject, $emailBody, $lastMsgId, trim($allRefs), $replyMailbox);
|
||||
|
||||
if (!$sent) {
|
||||
http_response_code(500);
|
||||
@@ -2031,13 +2068,13 @@ switch ($action) {
|
||||
break 2;
|
||||
}
|
||||
|
||||
// Add reply to ticket
|
||||
// Add reply to ticket (tallennetaan allekirjoituksen kanssa)
|
||||
$reply = [
|
||||
'id' => generateId(),
|
||||
'type' => 'reply_out',
|
||||
'from' => currentUser(),
|
||||
'from_name' => $_SESSION['nimi'] ?? currentUser(),
|
||||
'body' => $body,
|
||||
'body' => $emailBody,
|
||||
'timestamp' => date('Y-m-d H:i:s'),
|
||||
'message_id' => '',
|
||||
];
|
||||
@@ -2399,6 +2436,30 @@ switch ($action) {
|
||||
echo json_encode(loadCompanies());
|
||||
break;
|
||||
|
||||
case 'all_mailboxes':
|
||||
requireAuth();
|
||||
// Palauttaa kaikki postilaatikot käyttäjän yrityksistä (allekirjoituksia varten)
|
||||
$userCompanyIds = $_SESSION['companies'] ?? [];
|
||||
$allCompanies = loadCompanies();
|
||||
$result = [];
|
||||
foreach ($allCompanies as $comp) {
|
||||
if (!in_array($comp['id'], $userCompanyIds)) continue;
|
||||
$oldCompanyId = $_SESSION['company_id'] ?? '';
|
||||
$_SESSION['company_id'] = $comp['id'];
|
||||
$conf = loadCompanyConfig();
|
||||
$_SESSION['company_id'] = $oldCompanyId;
|
||||
foreach ($conf['mailboxes'] ?? [] as $mb) {
|
||||
$result[] = [
|
||||
'id' => $mb['id'],
|
||||
'nimi' => $mb['nimi'] ?? $mb['imap_user'] ?? '',
|
||||
'company_id' => $comp['id'],
|
||||
'company_nimi' => $comp['nimi'],
|
||||
];
|
||||
}
|
||||
}
|
||||
echo json_encode($result);
|
||||
break;
|
||||
|
||||
case 'company_create':
|
||||
requireAdmin();
|
||||
if ($method !== 'POST') break;
|
||||
|
||||
Reference in New Issue
Block a user