diff options
author | Malf Furious <m@lfurio.us> | 2017-01-15 05:57:19 -0500 |
---|---|---|
committer | Malf Furious <m@lfurio.us> | 2017-01-15 05:57:19 -0500 |
commit | 0d53041fc67e13fc53cca0c993ec1a7a31a5a16e (patch) | |
tree | c2d3c6a43aa3ba16fe2207f76c4c0a3ce4033772 /examples/controller | |
parent | feb61662d2359414837787111cf0f37e1f57fb5f (diff) | |
download | scrott-0d53041fc67e13fc53cca0c993ec1a7a31a5a16e.tar.gz scrott-0d53041fc67e13fc53cca0c993ec1a7a31a5a16e.zip |
Reorganize examples/ directory
Diffstat (limited to 'examples/controller')
-rw-r--r-- | examples/controller/auth.control.php | 67 | ||||
-rw-r--r-- | examples/controller/dashboard.control.php | 41 | ||||
-rw-r--r-- | examples/controller/deauth.control.php | 40 | ||||
-rw-r--r-- | examples/controller/deleteacct.control.php | 58 | ||||
-rw-r--r-- | examples/controller/except.control.php | 41 | ||||
-rw-r--r-- | examples/controller/obj.control.php | 49 | ||||
-rw-r--r-- | examples/controller/root.control.php | 145 | ||||
-rw-r--r-- | examples/controller/sysconf.control.php | 57 |
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); + } +} + +?> |