Restrict access to the admin pages using fine-grained permissions
This commit is contained in:
12
source/lib/StatusBoard/Permission.class.php
Normal file
12
source/lib/StatusBoard/Permission.class.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
class StatusBoard_Permission {
|
||||
|
||||
const PERM_Administrator = 1;
|
||||
const PERM_UpdateStatusBoards = 2;
|
||||
const PERM_UpdateIncidents = 3;
|
||||
const PERM_ViewStatusBoards = 4;
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -4,6 +4,10 @@ $main = StatusBoard_Main::instance();
|
||||
$auth = $main->auth();
|
||||
$config = $main->config();
|
||||
|
||||
if ( ! $auth->isAuthenticated() || ! $auth->hasPermission(StatusBoard_Permission::PERM_Administrator)) {
|
||||
throw new StatusBoard_Exception_NotAuthorised();
|
||||
}
|
||||
|
||||
$services = StatusBoard_Service::all();
|
||||
$this->smarty->assign('services', $services);
|
||||
|
||||
|
||||
@@ -2,6 +2,11 @@
|
||||
|
||||
$main = StatusBoard_Main::instance();
|
||||
$request = $main->request();
|
||||
$auth = $main->auth();
|
||||
|
||||
if ( ! $auth->isAuthenticated() || ! $auth->hasPermission(StatusBoard_Permission::PERM_UpdateIncidents)) {
|
||||
throw new StatusBoard_Exception_NotAuthorised();
|
||||
}
|
||||
|
||||
$service_id = $request->get('service', 'Sihnon_Exception_InvalidParameters');
|
||||
$site_id = $request->get('site', 'Sihnon_Exception_InvalidParameters');
|
||||
@@ -16,7 +21,7 @@ try {
|
||||
$site = StatusBoard_Site::fromId($site_id);
|
||||
$incident = StatusBoard_Incident::fromId($incident_id);
|
||||
} catch (Sihnon_Exception_ResultCountMismatch $e) {
|
||||
StatusBoard_Page::redirect('errors/404');
|
||||
throw new StatusBoard_Exception_FileNotFound();
|
||||
}
|
||||
|
||||
$statuses = $incident->statusChanges();
|
||||
|
||||
@@ -2,13 +2,18 @@
|
||||
|
||||
$main = StatusBoard_Main::instance();
|
||||
$request = $main->request();
|
||||
$auth = $main->auth();
|
||||
|
||||
if ( ! $auth->isAuthenticated() || ! $auth->hasPermission(StatusBoard_Permission::PERM_UpdateStatusBoards)) {
|
||||
throw new StatusBoard_Exception_NotAuthorised();
|
||||
}
|
||||
|
||||
$service_id = $request->get('id', 'Sihnon_Exception_InvalidParameters');
|
||||
$service = null;
|
||||
try {
|
||||
$service = StatusBoard_Service::fromId($service_id);
|
||||
} catch (Sihnon_Exception_ResultCountMismatch $e) {
|
||||
StatusBoard_Page::redirect('errors/404');
|
||||
throw new StatusBoard_Exception_FileNotFound();
|
||||
}
|
||||
|
||||
$sites = $service->sites();
|
||||
|
||||
@@ -4,4 +4,9 @@ $main = StatusBoard_Main::instance();
|
||||
$auth = $main->auth();
|
||||
$config = $main->config();
|
||||
|
||||
if ( ! $auth->isAuthenticated() || ! $auth->hasPermission(StatusBoard_Permission::PERM_Administrator)) {
|
||||
throw new StatusBoard_Exception_NotAuthorised();
|
||||
}
|
||||
|
||||
|
||||
?>
|
||||
@@ -2,6 +2,11 @@
|
||||
|
||||
$main = StatusBoard_Main::instance();
|
||||
$request = $main->request();
|
||||
$auth = $main->auth();
|
||||
|
||||
if ( ! $auth->isAuthenticated() || ! $auth->hasPermission(StatusBoard_Permission::PERM_UpdateStatusBoards)) {
|
||||
throw new StatusBoard_Exception_NotAuthorised();
|
||||
}
|
||||
|
||||
$service_id = $request->get('service', 'Sihnon_Exception_InvalidParameters');
|
||||
$site_id = $request->get('id', 'Sihnon_Exception_InvalidParameters');
|
||||
@@ -13,7 +18,7 @@ try {
|
||||
$service = StatusBoard_Service::fromId($service_id);
|
||||
$site = StatusBoard_Site::fromId($site_id);
|
||||
} catch (Sihnon_Exception_ResultCountMismatch $e) {
|
||||
StatusBoard_Page::redirect('errors/404');
|
||||
throw new StatusBoard_Exception_FileNotFound();
|
||||
}
|
||||
|
||||
$open_incidents = $site->openIncidents();
|
||||
|
||||
Reference in New Issue
Block a user