commit 080e0cc016373d5bb2406fa579f0bd69ee593192 from: mischa date: Mon Sep 05 20:24:35 2022 UTC change table name to role, fix list-admin commit - 4db75ba3287381df26d2e832b750899e872fe8a4 commit + 080e0cc016373d5bb2406fa579f0bd69ee593192 blob - dcdace0eae9e51aeb8cb0b03da76a13e71d351e9 blob + fd9950701378ce98d0a59619f098c6e6df9b539e --- README.md +++ README.md @@ -10,6 +10,7 @@ Database needed to use SQL with OpenSMTPD CREATE TABLE `admin` ( `username` varchar(255) NOT NULL DEFAULT '', `password` varchar(255) NOT NULL DEFAULT '', + `role` varchar(32) DEFAULT NULL, `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', PRIMARY KEY (`username`), blob - 37ff751c4268605340fecf4ee44632f4d30909d8 blob + 39547c7f88215aa153def2ebede075d9370fdf21 --- add-alias.php +++ add-alias.php @@ -26,12 +26,10 @@ require_once './functions.inc.php'; include './languages/' . check_language() . '.lang'; $SESSID_USERNAME = check_session(); -$PERMISSIONS = check_permissions(); -$admin = $SESSID_USERNAME ?? ADMIN_EMAIL; +$ROLE = check_role(); -if ($PERMISSIONS == ADMIN_RIGHTS) { +if ($ROLE == ADMIN_ROLE) { $list_domains = list_domains(); - $list_admins = list_admins(); } else { $list_domains = list_domains($SESSID_USERNAME); } @@ -71,7 +69,7 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") { $sth->bindParam(2, $goto, PDO::PARAM_STR); $sth->bindParam(3, $domain, PDO::PARAM_STR); $sth->execute(); - logging($admin, $domain, $LANG['Logging_alias_add'], "$from -> $goto"); + logging($SESSID_USERNAME, $domain, $LANG['Logging_alias_add'], "$from -> $goto"); $message = $LANG['Add_alias_result_succes'] . "
($from -> $goto)
"; $address = ''; $goto = ''; blob - 028b6bad9e7ad99f4c0795c5fb9a8386743505c9 blob + e059c12ec823c893cfd7376b9ab02a4ea5672635 --- add-mailbox.php +++ add-mailbox.php @@ -28,12 +28,10 @@ require_once './functions.inc.php'; include './languages/' . check_language() . '.lang'; $SESSID_USERNAME = check_session(); -$PERMISSIONS = check_permissions(); -$admin = $SESSID_USERNAME ?? ADMIN_EMAIL; +$ROLE = check_role(); -if ($PERMISSIONS == ADMIN_RIGHTS) { +if ($ROLE == ADMIN_ROLE) { $list_domains = list_domains(); - $list_admins = list_admins(); } else { $list_domains = list_domains($SESSID_USERNAME); } @@ -90,7 +88,7 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") { $sth->bindParam(4, $maildir, PDO::PARAM_STR); $sth->bindParam(5, $domain, PDO::PARAM_STR); $sth->execute(); - logging($admin, $domain, $LANG['Logging_mailbox_add'], "$from"); + logging($SESSID_USERNAME, $domain, $LANG['Logging_mailbox_add'], "$from"); $message = $LANG['Add_mailbox_result_succes'] . "
($from)"; $username = ''; $name = ''; blob - 4e76234c0e2295b006a2c38e2145078e74237552 blob + 9a523ce84d9cf9ccdd5dfb1644a8ba4ad0e4ee02 --- admin.php +++ admin.php @@ -28,9 +28,9 @@ require_once './functions.inc.php'; include './languages/' . check_language() . '.lang'; $SESSID_USERNAME = check_session(); -$PERMISSIONS = check_permissions(); +$ROLE = check_role(); -if ($PERMISSIONS != ADMIN_RIGHTS) { +if ($ROLE != ADMIN_ROLE) { header("Location: list-domain.php"); die();; } blob - d9546e3965c2045cc96af93609b3027237514033 blob + 35a6e2eea2f3a92f1f80d75508607c9c7164816d --- backup.php +++ backup.php @@ -22,9 +22,9 @@ include './languages/' . check_language() . '.lang'; date_default_timezone_set('Europe/Amsterdam'); $SESSID_USERNAME = check_session(); -$PERMISSIONS = check_permissions(); +$ROLE = check_role(); -if ($PERMISSIONS != ADMIN_RIGHTS) { +if ($ROLE != ADMIN_ROLE) { header("Location: list-domain.php"); die();; } blob - 45c60f897ee483706c2e950959fc499343d81c95 blob + d8500674a780d38362bc9b91687d976f4f3d07bf --- conf.php-sample +++ conf.php-sample @@ -23,6 +23,9 @@ define('DB_NAME', ''); define('ALIASES', '10'); define('MAILBOXES', '10'); +// Mail Admin Administrator tag +define('ADMIN_RIGHTS', 'ADMINISTRATOR'); + // Expose virtual mail construct 'vmail' to admins. define('ALIAS_CONTROL', 'NO'); blob - 1634808ae9bf395f90353405e05e729d87e372fc blob + db9b622e6306097906e2d207e02519ce49f4422b --- delete.php +++ delete.php @@ -25,7 +25,6 @@ include './languages/' . check_language() . '.lang'; $SESSID_USERNAME = check_session(); $list_domains = list_domains($SESSID_USERNAME); -$admin = $SESSID_USERNAME ?? ADMIN_EMAIL; if ($_SERVER['REQUEST_METHOD'] == "GET") { $table = filter_input(INPUT_GET, 'table', FILTER_DEFAULT); @@ -44,7 +43,7 @@ if ($_SERVER['REQUEST_METHOD'] == "GET") { if ($sth->rowCount() != 1) { throw new RuntimeException('alias'); } - logging($admin, $domain, $LANG['Logging_alias_delete'], $delete); + logging($SESSID_USERNAME, $domain, $LANG['Logging_alias_delete'], $delete); header("Location: list-virtual.php?domain=$domain"); } catch (RuntimeException $e) { @@ -67,7 +66,7 @@ if ($_SERVER['REQUEST_METHOD'] == "GET") { if ($sth->rowCount() != 1) { throw new RuntimeException('mailbox'); } - logging($admin, $domain, $LANG['Logging_mailbox_delete'], $delete); + logging($SESSID_USERNAME, $domain, $LANG['Logging_mailbox_delete'], $delete); $sth = $dbh->prepare("DELETE FROM vacation WHERE email=? AND domain=?"); $sth->bindParam(1, $delete, PDO::PARAM_STR); blob - 77985b2b3e6393be0b6931f43b1b97a9e63d8e1e blob + a88ed48aa10baf029f17a38f8dfada2550cd4cbf --- domain.php +++ domain.php @@ -29,9 +29,9 @@ require_once './functions.inc.php'; include './languages/' . check_language() . '.lang'; $SESSID_USERNAME = check_session(); -$PERMISSIONS = check_permissions(); +$ROLE = check_role(); -if ($PERMISSIONS != ADMIN_RIGHTS) { +if ($ROLE != ADMIN_ROLE) { header("Location: list-domain.php"); die(); } blob - bb066d9a8963032a87c43a9878e759c41e88046c blob + 6b69dacc63bf948dcdce488dc8b9753f85952e73 --- edit-alias.php +++ edit-alias.php @@ -24,10 +24,9 @@ require_once './functions.inc.php'; include './languages/' . check_language() . '.lang'; $SESSID_USERNAME = check_session(); -$PERMISSIONS = check_permissions(); -$admin = $SESSID_USERNAME ?? ADMIN_EMAIL; +$ROLE = check_role(); -if ($PERMISSIONS == ADMIN_RIGHTS) { +if ($ROLE == ADMIN_ROLE) { $list_domains = list_domains(); $list_admins = list_admins(); } else { @@ -87,7 +86,7 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") { $sth->bindParam(2, $address, PDO::PARAM_STR); $sth->bindParam(3, $domain, PDO::PARAM_STR); $sth->execute(); - logging($admin, $domain, $LANG['Logging_alias_edit'], "$address -> $goto"); + logging($SESSID_USERNAME, $domain, $LANG['Logging_alias_edit'], "$address -> $goto"); header("Location: list-virtual.php?domain=$domain"); } catch(PDOException $e) { $message = $LANG['Edit_alias_result_error']; blob - 680e2933fd354867f4b1bac8059719b2c0476c3a blob + 594f5d0caa10e3661c0a590d22a774625477e974 --- edit-mailbox.php +++ edit-mailbox.php @@ -26,10 +26,9 @@ require_once './functions.inc.php'; include './languages/' . check_language() . '.lang'; $SESSID_USERNAME = check_session(); -$PERMISSIONS = check_permissions(); -$admin = $SESSID_USERNAME ?? ADMIN_EMAIL; +$ROLE = check_role(); -if ($PERMISSIONS == ADMIN_RIGHTS) { +if ($ROLE == ADMIN_ROLE) { $list_domains = list_domains(); $list_admins = list_admins(); } else { @@ -93,7 +92,7 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") { $sth->bindParam(2, $username, PDO::PARAM_STR); $sth->bindParam(3, $domain, PDO::PARAM_STR); $sth->execute(); - logging($admin, $domain, $LANG['Logging_mailbox_edit'], $username); + logging($SESSID_USERNAME, $domain, $LANG['Logging_mailbox_edit'], $username); header("Location: list-virtual.php?domain=$domain"); } catch(PDOException $e) { $message = $LANG['Edit_mailbox_result_error']; blob - a8b8fec1f1b3d19d09720cc718be25cc784bb564 blob + fb06cfd1403c0d860e631da5e90edfe7eb06fd19 --- functions.inc.php +++ functions.inc.php @@ -43,9 +43,14 @@ function check_session($session = "sessid") { return $_SESSION[$session]['username']; } -function check_permissions($session = "sessid") { - if (!empty($_SESSION[$session]['rights'])) { - return $_SESSION[$session]['rights']; +// +// check_role +// Action: Check which role is assighed +// Call: check_role() +// +function check_role($session = "sessid") { + if (!empty($_SESSION[$session]['role'])) { + return $_SESSION[$session]['role']; } } blob - d8bd600cb8fad464b326fbd13fb589c1d92e5ccb blob + a08a12296504636c4e1d5414ad3177ef25467dea --- languages/en.lang +++ languages/en.lang @@ -20,10 +20,14 @@ $LANG['Login_login_users'] = 'Users click here to logi $LANG['Menu_list_domain'] = 'List Domains'; $LANG['Menu_list_virtual'] = 'List Virtuals'; -$LANG['Menu_add_alias'] = 'Add Alias'; -$LANG['Menu_add_mailbox'] = 'Add Mailbox'; +$LANG['Menu_list_admin'] = 'List Admins'; +$LANG['Menu_backup'] = 'Backup'; +$LANG['Menu_add_domain'] = 'Add Domain'; +$LANG['Menu_add_admin'] = 'Add Admin'; $LANG['Menu_sendmail'] = 'Send Email'; $LANG['Menu_password'] = 'Password'; +$LANG['Menu_add_alias'] = 'Add Alias'; +$LANG['Menu_add_mailbox'] = 'Add Mailbox'; $LANG['Menu_viewlog'] = 'View Log'; $LANG['Menu_logout'] = 'Logout'; @@ -131,38 +135,12 @@ $LANG['Sendmail_button'] = 'Send Message'; $LANG['Sendmail_result_error'] = 'Unable to send message.'; $LANG['Sendmail_result_succes'] = 'The mailbox has been created.'; -$LANG['AdminMenu_list_domain'] = 'List Domains'; -$LANG['AdminMenu_list_admin'] = 'List Admins'; -$LANG['AdminMenu_viewlog'] = 'View Log'; -$LANG['AdminMenu_backup'] = 'Backup'; -$LANG['AdminMenu_create_domain_admins'] = 'Domain Admins'; -$LANG['AdminMenu_create_domain'] = 'Add Domain'; -$LANG['AdminMenu_create_admin'] = 'Add Admin'; -$LANG['AdminMenu_create_alias'] = 'Add Alias'; -$LANG['AdminMenu_create_mailbox'] = 'Add Mailbox'; - $LANG['AdminList_admin_domain'] = 'Domain'; $LANG['AdminList_admin_username'] = 'Admin'; $LANG['AdminList_admin_count'] = 'Domains'; $LANG['AdminList_admin_modified'] = 'Last Modified'; +$LANG['AdminList_admin_active'] = 'Active'; -$LANG['AdminList_domain_domain'] = 'Domain'; -$LANG['AdminList_domain_description'] = 'Description'; -$LANG['AdminList_domain_aliases'] = 'Aliases'; -$LANG['AdminList_domain_mailboxes'] = 'Mailboxes'; -$LANG['AdminList_domain_modified'] = 'Last Modified'; - -$LANG['AdminList_virtual_button'] = 'Go'; -$LANG['AdminList_virtual_welcome'] = 'Overview for '; -$LANG['AdminList_virtual_alias_alias_count'] = 'Aliases'; -$LANG['AdminList_virtual_alias_mailbox_count'] = 'Mailboxes'; -$LANG['AdminList_virtual_alias_address'] = 'From'; -$LANG['AdminList_virtual_alias_goto'] = 'To'; -$LANG['AdminList_virtual_alias_modified'] = 'Last Modified'; -$LANG['AdminList_virtual_mailbox_username'] = 'Email'; -$LANG['AdminList_virtual_mailbox_name'] = 'Name'; -$LANG['AdminList_virtual_mailbox_modified'] = 'Last Modified'; - $LANG['AdminAdd_domain_welcome'] = 'Add a new domain'; $LANG['AdminAdd_domain_domain'] = 'Domain'; $LANG['AdminAdd_domain_domain_text_error'] = 'The domain already exists.'; blob - 161567f71683fd36971715a34e2016ebe5e0f9c2 blob + a1e2fbd9e523de3496398f741940118b07a6db3a --- list-admin.php +++ list-admin.php @@ -21,18 +21,17 @@ require './functions.inc.php'; include './languages/' . check_language() . '.lang'; $SESSID_USERNAME = check_session(); -$PERMISSIONS = check_permissions(); -$admin = $SESSID_USERNAME ?? ADMIN_EMAIL; +$ROLE = check_role(); $list_admins = array(); if ($_SERVER['REQUEST_METHOD'] == "GET") { - if ($PERMISSIONS == ADMIN_RIGHTS) { + if ($ROLE == ADMIN_ROLE) { $list_admins = list_admins(); } } include './templates/header.tpl'; include './templates/menu.tpl'; -include './templates/admin_list-admin.tpl'; +include './templates/list-admin.tpl'; include './templates/footer.tpl'; ?> blob - 19cd5aef08bf48ad2c93b706bfc7fa916bc5c5cd blob + 1726709d16633966c14977a94df337041c1a9087 --- list-domain.php +++ list-domain.php @@ -21,11 +21,11 @@ require_once './functions.inc.php'; include './languages/' . check_language() . '.lang'; $SESSID_USERNAME = check_session(); -$PERMISSIONS = check_permissions(); +$ROLE = check_role(); if ($_SERVER['REQUEST_METHOD'] == "GET") { $username = filter_input(INPUT_GET, 'username', FILTER_VALIDATE_EMAIL); - if ($PERMISSIONS == ADMIN_RIGHTS) { + if ($ROLE == ADMIN_ROLE) { $list_admins = list_admins(); if (empty($username)) { $list_domains = list_domains(); blob - 6ec0b7d3566f22465092825dd35c3ffaa9611a12 blob + 071a35ff600c578437ddb5a7bdeaa618ea668655 --- list-virtual.php +++ list-virtual.php @@ -23,9 +23,9 @@ require_once './functions.inc.php'; include './languages/' . check_language() . '.lang'; $SESSID_USERNAME = check_session(); -$PERMISSIONS = check_permissions(); +$ROLE = check_role(); -if ($PERMISSIONS == ADMIN_RIGHTS) { +if ($ROLE == ADMIN_ROLE) { $list_domains = list_domains(); } else { $list_domains = list_domains($SESSID_USERNAME); blob - ad4aeadcf5cc1e1200f7e49441edce11405dcb9a blob + cd9aec8316dda5c5ead72be1545f432d1868f007 --- login.php +++ login.php @@ -28,7 +28,7 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") { if (!empty($username) && !empty($password)) { $dbh = pdo_connect(); - $sth = $dbh->prepare("SELECT password,rights FROM admin WHERE username=?"); + $sth = $dbh->prepare("SELECT password,role FROM admin WHERE username=?"); $sth->bindParam(1, $username, PDO::PARAM_STR); $sth->execute(); $row = $sth->fetch(PDO::FETCH_ASSOC); @@ -45,7 +45,7 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") { if (empty($message)) { session_start(); $_SESSION['sessid']['username'] = $username; - $_SESSION['sessid']['rights'] = $row['rights']; + $_SESSION['sessid']['role'] = $row['role']; header("Location: list-domain.php"); exit; } blob - a597172c03bf95525956d0b877448bffcd79f9ce blob + d399e4ea572433b60e81a8ca67036bb642480247 --- password.php +++ password.php @@ -23,10 +23,10 @@ require_once './functions.inc.php'; include './languages/' . check_language() . '.lang'; $SESSID_USERNAME = check_session(); -$PERMISSIONS = check_permissions(); -$admin = $SESSID_USERNAME ?? ADMIN_EMAIL; +$ROLE = check_role(); +$SESSID_USERNAME = $SESSID_USERNAME ?? ADMIN_EMAIL; -if ($PERMISSIONS == ADMIN_RIGHTS) { +if ($ROLE == ADMIN_ROLE) { $list_domains = list_domains(); $list_admins = list_admins(); } else { blob - 51dafff050d3c5f25d6d11d8600ba77a2a61748a blob + 3e1a088a89faaa72f03b9db0ae4fa4e14c0b9a86 --- search.php +++ search.php @@ -22,9 +22,9 @@ require_once './functions.inc.php'; include './languages/' . check_language() . '.lang'; $SESSID_USERNAME = check_session(); -$PERMISSIONS = check_permissions(); +$ROLE = check_role(); -if ($PERMISSIONS == ADMIN_RIGHTS) { +if ($ROLE == ADMIN_ROLE) { $list_domains = list_domains(); } else { $list_domains = list_domains($SESSID_USERNAME); blob - a6ba63080a514d06ea46613c42df70513c1a60ec blob + 900ade84db3df5454f9ac88f29d67c50e9c7e32f --- sendmail.php +++ sendmail.php @@ -26,10 +26,10 @@ require_once './functions.inc.php'; include './languages/' . check_language() . '.lang'; $SESSID_USERNAME = check_session(); -$PERMISSIONS = check_permissions(); -$admin = $SESSID_USERNAME ?? ADMIN_EMAIL; +$ROLE = check_role(); +$SESSID_USERNAME = $SESSID_USERNAME ?? ADMIN_EMAIL; -if ($PERMISSIONS == ADMIN_RIGHTS) { +if ($ROLE == ADMIN_ROLE) { $list_domains = list_domains(); $list_admins = list_admins(); } else { blob - f3f1a1b3c0c7d75a94baa051249b2b82ef4ad35f blob + 57a1f59e44460c31451209912ad52e1faea8c021 --- templates/list-domain.tpl +++ templates/list-domain.tpl @@ -1,5 +1,5 @@
- +