summaryrefslogtreecommitdiffstats
path: root/examples/controller
diff options
context:
space:
mode:
Diffstat (limited to 'examples/controller')
-rw-r--r--examples/controller/auth.control.php67
-rw-r--r--examples/controller/dashboard.control.php41
-rw-r--r--examples/controller/deauth.control.php40
-rw-r--r--examples/controller/deleteacct.control.php58
-rw-r--r--examples/controller/except.control.php41
-rw-r--r--examples/controller/obj.control.php49
-rw-r--r--examples/controller/root.control.php145
-rw-r--r--examples/controller/sysconf.control.php57
8 files changed, 498 insertions, 0 deletions
diff --git a/examples/controller/auth.control.php b/examples/controller/auth.control.php
new file mode 100644
index 0000000..5be1e4b
--- /dev/null
+++ b/examples/controller/auth.control.php
@@ -0,0 +1,67 @@
+<?php
+
+/*
+ * SCROTT Copyright (C) 2016 Malf Furious
+ *
+ * Scrott is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation, either version 3 of the License,
+ * or (at your option) any later version.
+ *
+ * Scrott is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ */
+
+require_once "class/controller.class.php";
+require_once "model/auth.mod.php";
+
+/*
+ * Auth is used to login or register new user accounts
+ */
+class Auth extends Controller
+{
+ /*
+ * Controller implementation
+ */
+ function handle($argv)
+ {
+ $mod = new AuthModel();
+
+ switch ($_REQUEST['input']['action'])
+ {
+ case "signup":
+ $this->action_signup($mod);
+ break;
+
+ case "login":
+ $this->action_login($mod);
+ break;
+
+ default:
+ $this->action_default($mod);
+ break;
+ }
+ }
+
+ function action_default($mod)
+ {
+ $mod->deflt();
+ include "view/auth/default.view.php";
+ }
+
+ function action_signup($mod)
+ {
+ $mod->signup($_REQUEST['input']);
+ $this->action_default($mod);
+ }
+
+ function action_login($mod)
+ {
+ $mod->login($_REQUEST['input']);
+ $this->action_default($mod);
+ }
+}
+
+?>
diff --git a/examples/controller/dashboard.control.php b/examples/controller/dashboard.control.php
new file mode 100644
index 0000000..40d3678
--- /dev/null
+++ b/examples/controller/dashboard.control.php
@@ -0,0 +1,41 @@
+<?php
+
+/*
+ * SCROTT Copyright (C) 2016 Malf Furious
+ *
+ * Scrott is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation, either version 3 of the License,
+ * or (at your option) any later version.
+ *
+ * Scrott is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ */
+
+require_once "class/controller.class.php";
+require_once "model/dashboard.mod.php";
+
+/*
+ * Main page, Dashboard -- Overview information for user, groups, and pads
+ */
+class Dashboard extends Controller
+{
+ /*
+ * Controller implementation
+ */
+ function handle($argv)
+ {
+ $mod = new DashboardModel();
+ $this->action_default($mod);
+ }
+
+ function action_default($mod)
+ {
+ $mod->deflt();
+ include "view/dashboard/default.view.php";
+ }
+}
+
+?>
diff --git a/examples/controller/deauth.control.php b/examples/controller/deauth.control.php
new file mode 100644
index 0000000..5867168
--- /dev/null
+++ b/examples/controller/deauth.control.php
@@ -0,0 +1,40 @@
+<?php
+
+/*
+ * SCROTT Copyright (C) 2016 Malf Furious
+ *
+ * Scrott is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation, either version 3 of the License,
+ * or (at your option) any later version.
+ *
+ * Scrott is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ */
+
+require_once "class/controller.class.php";
+require_once "model/deauth.mod.php";
+
+/*
+ * Deauth is used to terminate the current session (logout)
+ */
+class Deauth extends Controller
+{
+ /*
+ * Controller implementation
+ */
+ function handle($argv)
+ {
+ $mod = new DeauthModel();
+ $this->action_default($mod);
+ }
+
+ function action_default($mod)
+ {
+ $mod->deflt();
+ }
+}
+
+?>
diff --git a/examples/controller/deleteacct.control.php b/examples/controller/deleteacct.control.php
new file mode 100644
index 0000000..5dc91b5
--- /dev/null
+++ b/examples/controller/deleteacct.control.php
@@ -0,0 +1,58 @@
+<?php
+
+/*
+ * SCROTT Copyright (C) 2016 Malf Furious
+ *
+ * Scrott is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation, either version 3 of the License,
+ * or (at your option) any later version.
+ *
+ * Scrott is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ */
+
+require_once "class/controller.class.php";
+require_once "model/deleteacct.mod.php";
+
+/*
+ * Deleteacct is used to delete user accounts, requiring all requests to
+ * correctly enter the user's password
+ */
+class Deleteacct extends Controller
+{
+ /*
+ * Controller implementation
+ */
+ function handle($argv)
+ {
+ $mod = new DeleteacctModel();
+
+ switch ($_REQUEST['input']['action'])
+ {
+ case "delete":
+ $this->action_delete($mod);
+ break;
+
+ default:
+ $this->action_default($mod);
+ break;
+ }
+ }
+
+ function action_default($mod)
+ {
+ $mod->deflt();
+ include "view/deleteacct/default.view.php";
+ }
+
+ function action_delete($mod)
+ {
+ $mod->del($_REQUEST['input']);
+ $this->action_default($mod);
+ }
+}
+
+?>
diff --git a/examples/controller/except.control.php b/examples/controller/except.control.php
new file mode 100644
index 0000000..8b5e1b5
--- /dev/null
+++ b/examples/controller/except.control.php
@@ -0,0 +1,41 @@
+<?php
+
+/*
+ * SCROTT Copyright (C) 2016 Malf Furious
+ *
+ * Scrott is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation, either version 3 of the License,
+ * or (at your option) any later version.
+ *
+ * Scrott is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ */
+
+require_once "class/controller.class.php";
+require_once "model/except.mod.php";
+
+/*
+ * Display application Exceptions
+ */
+class Except extends Controller
+{
+ /*
+ * Controller implementation
+ */
+ function handle($message)
+ {
+ $mod = new ExceptModel();
+ $this->action_default($mod, $message);
+ }
+
+ function action_default($mod, $message)
+ {
+ $mod->deflt($message);
+ include "view/except/default.view.php";
+ }
+}
+
+?>
diff --git a/examples/controller/obj.control.php b/examples/controller/obj.control.php
new file mode 100644
index 0000000..2154d16
--- /dev/null
+++ b/examples/controller/obj.control.php
@@ -0,0 +1,49 @@
+<?php
+
+/*
+ * SCROTT Copyright (C) 2016 Malf Furious
+ *
+ * Scrott is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation, either version 3 of the License,
+ * or (at your option) any later version.
+ *
+ * Scrott is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ */
+
+require_once "class/controller.class.php";
+require_once "model/obj.mod.php";
+
+/*
+ * Object viewer, Used to view groups, pads, and more!
+ */
+class Obj extends Controller
+{
+ /*
+ * Controller implementation
+ */
+ function handle($argv)
+ {
+ $mod = new ObjModel($argv[0]);
+
+ if (!$mod->obj->canAccess($this->getCurrentUser()))
+ throw new Exception("You do not have permission to access this object");
+
+ switch ($mod->obj->type)
+ {
+ case "group":
+ $this->action_group($mod);
+ break;
+ }
+ }
+
+ function action_group($mod)
+ {
+ include "view/obj/group.view.php";
+ }
+}
+
+?>
diff --git a/examples/controller/root.control.php b/examples/controller/root.control.php
new file mode 100644
index 0000000..7e4d1ab
--- /dev/null
+++ b/examples/controller/root.control.php
@@ -0,0 +1,145 @@
+<?php
+
+/*
+ * SCROTT Copyright (C) 2016 Malf Furious
+ *
+ * Scrott is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation, either version 3 of the License,
+ * or (at your option) any later version.
+ *
+ * Scrott is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ */
+
+require_once "class/controller.class.php";
+require_once "class/object.class.php";
+require_once "class/setting.class.php";
+require_once "controller/sysconf.control.php";
+require_once "controller/except.control.php";
+require_once "controller/auth.control.php";
+require_once "controller/deauth.control.php";
+require_once "controller/dashboard.control.php";
+require_once "controller/obj.control.php";
+require_once "controller/deleteacct.control.php";
+
+/*
+ * Root-level controller for Scrott app. This object will delegate the page request to the
+ * appropriate controller or handle it with an error message page.
+ */
+class Root extends Controller
+{
+ /*
+ * Controller implementation
+ */
+ function handle($argv)
+ {
+ global $_SCROTT;
+ $argv = $this->normalizeArgv($argv);
+
+ try
+ {
+ /* Assert that the system config file exists and has been included */
+ if (!$this->scrottConfExists())
+ {
+ $ctrl = new Sysconf();
+ $ctrl->handle($argv);
+ return;
+ }
+
+ /* Assert we are running over HTTP(S), whichever is desired */
+ switch ($_SCROTT['settSSL'])
+ {
+ case "force": $this->sec_require_https(); break;
+ case "forbid": $this->sec_forbid_https(); break;
+ default:
+ switch (Setting::settSSL())
+ {
+ case "force": $this->sec_require_https(); break;
+ case "forbid": $this->sec_forbid_https(); break;
+ }
+ }
+
+ /* Assert session IP */
+ $this->sec_verify_ip();
+
+ /* Assert that a user is logged in */
+ if (!$this->getCurrentUser())
+ {
+ $ctrl = new Auth();
+ $ctrl->handle($argv);
+ return;
+ }
+
+ /* Handle page request */
+ if (count($argv) == 0)
+ $ctrl = new Dashboard();
+
+ else
+ {
+ switch ($argv[0])
+ {
+ case "logout": $ctrl = new Deauth(); break;
+ case "deleteaccount": $ctrl = new Deleteacct(); break;
+ default:
+ /* Check if arg is an object guid */
+ $obj = new DBObject();
+
+ if ($obj->isGUID($argv[0]))
+ {
+ $ctrl = new Obj();
+ break;
+ }
+
+ /* No page to show for requested path */
+ throw new Exception("The requested path is not valid.");
+ break;
+ }
+ }
+
+ $ctrl->handle($argv);
+ }
+
+ catch (Exception $e)
+ {
+ $ctrl = new Except();
+ $ctrl->handle($e->getMessage());
+ }
+ }
+
+ /*
+ * Get a useful path string by normalizeing the $argv array received from the main function.
+ * This will remove directory names that appear in the $this->ar() string and the initial
+ * and trailing (if present) empty strings
+ */
+ function normalizeArgv($argv)
+ {
+ $argv = array_values(array_filter($argv));
+ $ar = array_values(array_filter(explode("/", $this->ar())));
+ $i = 0;
+ $trunc = true;
+
+ if (count($ar) == 0)
+ return $argv;
+
+ foreach ($ar as $elem)
+ {
+ if ($elem != $argv[$i])
+ {
+ $trunc = false;
+ break;
+ }
+
+ $i++;
+ }
+
+ if (!$trunc)
+ return $argv;
+
+ return array_values(array_slice($argv, count($ar)));
+ }
+}
+
+?>
diff --git a/examples/controller/sysconf.control.php b/examples/controller/sysconf.control.php
new file mode 100644
index 0000000..6379d42
--- /dev/null
+++ b/examples/controller/sysconf.control.php
@@ -0,0 +1,57 @@
+<?php
+
+/*
+ * SCROTT Copyright (C) 2016 Malf Furious
+ *
+ * Scrott is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation, either version 3 of the License,
+ * or (at your option) any later version.
+ *
+ * Scrott is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ */
+
+require_once "class/controller.class.php";
+require_once "model/sysconf.mod.php";
+
+/*
+ * SysConf is the interface for creating an install's "scrott.conf.php" file if it doesn't exist
+ */
+class Sysconf extends Controller
+{
+ /*
+ * Controller implementation
+ */
+ function handle($argv)
+ {
+ $mod = new SysconfModel();
+
+ switch ($_REQUEST['input']['action'])
+ {
+ case "save":
+ $this->action_save($mod);
+ break;
+
+ default:
+ $this->action_default($mod);
+ break;
+ }
+ }
+
+ function action_default($mod)
+ {
+ $mod->deflt();
+ include "view/sysconf/default.view.php";
+ }
+
+ function action_save($mod)
+ {
+ $mod->save($_REQUEST['input']);
+ $this->action_default($mod);
+ }
+}
+
+?>