control.php
2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
// main library routines and defaults
require_once("./config/dmsDefaults.php");
require_once("$default->owl_fs_root/lib/session/SiteMap.inc");
/**
* $Id$
*
* Controller page -- controls the web application by responding to a set of
* defined actions. The controller performs session handling, page-level
* authentication and forwards the request to the appropriate handling
* page.
*
* Licensed under the GNU GPL. For full terms see the file DOCS/COPYING.
*
* @version $Revision$
* @author Michael Joseph <michael@jamwarehouse.com>, Jam Warehouse (Pty) Ltd, South Africa
* @package controller
*/
// -------------------------------
// page start
// -------------------------------
// check the session, but don't redirect if the check fails
if (checkSessionAndRedirect(false)) {
// session check succeeds, so default action should be the dashboard if no action was specified
if (!isset($action)) {
$action = "dashboard";
}
} else {
// session check fails, so default action should be the login form if no action was specified
if (!isset($action)) {
$action = "loginForm";
}
}
// retrieve the page from the sitemap (checks whether this user has access to the requested page)
$page = $default->siteMap->getPage($action, $_SESSION["userID"]);
$default->log->debug("retrieved page=$page from SiteMap");
if (!$page) {
// this user doesn't have permission to access the page
// or there is no page mapping for the requested action
// redirect to no permission page
redirect("$default->owl_ui_url/noAccess.php");
} else {
$default->log->debug("control.php redirect=$redirect");
$page = $default->owl_root_url . $page;
// set authorised flag and redirect
// strip querystring form $page before setting page authorisation flag
if (strstr($page, "?")) {
$accessPage = substr($page, 0, strpos($page, "?"));
$default->log->debug("control.php: page without querystring=$accessPage; with=$page");
} else {
$accessPage = $page;
}
if (strlen($redirect) > 0) {
$page = $page . (strstr($page, "?") ? "&redirect=$redirect" : "?redirect=$redirect");
}
$_SESSION["pageAccess"][$accessPage] = true;
$default->log->debug("control.php: just set SESSION[\"pageAccess\"][$accessPage]=" . $_SESSION["pageAccess"][$accessPage]);
redirect($page);
}
?>