diff options
author | Malf Furious <m@lfurio.us> | 2018-10-27 18:28:22 -0400 |
---|---|---|
committer | Malf Furious <m@lfurio.us> | 2018-10-27 18:28:22 -0400 |
commit | 0421aa1b60f4fe6bf140888159c58059c1013588 (patch) | |
tree | c3285276f6c53b6789e2f6dc82cb3b0fd17b38a4 /app/index.php | |
parent | 495157341d60522084dcc9f6219877b6ba497312 (diff) | |
parent | 6512655aee73d3d295daa4de0e4ef25c08cfec9e (diff) | |
download | scrott-0421aa1b60f4fe6bf140888159c58059c1013588.tar.gz scrott-0421aa1b60f4fe6bf140888159c58059c1013588.zip |
Merge branch 'rel/v0.1'v0.1
Diffstat (limited to 'app/index.php')
-rw-r--r-- | app/index.php | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/app/index.php b/app/index.php new file mode 100644 index 0000000..21f3036 --- /dev/null +++ b/app/index.php @@ -0,0 +1,136 @@ +<?php + +/* + * SCROTT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR + * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * For more information, please refer to UNLICENSE + */ + +require_once "class/database.class.php"; +require_once "class/settings.class.php"; +require_once "class/user.class.php"; +require_once "class/group.class.php"; +require_once "class/pad.class.php"; + +/* + * This file is the entry-point to the Scrott application. main() will + * make a few assertions and figure out which content is being requested. + */ +function main(array $argv) : void +{ + try + { + /* assert the database configuration is present */ + if (!database::checkConfig()) + { + require "view/dbconfig.php"; + return; + } + + /* assert we are running over HTTPS (if enabled) */ + if (settings::sslOnly()) + require_https(); + + /* assert that a user is logged in */ + if (!($user = user::getCurrent())) + { + require "view/login.php"; + return; + } + + setPageObj($user); + + /* no arguments? display dashboard */ + if (count($argv) == 0) + { + setPageName("<i>Dashboard</i>"); + require "view/dashboard.php"; + return; + } + + switch ($argv[0]) + { + case "logout": + /* logout user */ + user::setCurrent(); + location("/"); + break; + + case "admin": + /* check permissions */ + if ($user->admin == 0) + location("/"); + + setPageName("<i>Administration</i>"); + require "view/administration.php"; + break; + + case "deleteaccount": + setPageName("<i>Leaving Scrott</i>"); + require "view/deleteaccount.php"; + break; + + case "groups": + setPageName("<i>Groups</i>"); + require "view/groups.php"; + break; + + case "pads": + setPageName("<i>Pads</i>"); + require "view/pads.php"; + break; + + default: + /* view object */ + if (table::isGUID($argv[0])) + { + /* check permissions */ + if (!$user->canAccess(new obj($argv[0]))) + { + /* TODO - use notice modal instead of an exception */ + throw new Exception("You do not have access permission for the requested object"); + } + + /* setup page */ + switch (obj::typeOf($argv[0])) + { + case "group": + $obj = new group($argv[0]); + setPageObj($obj); + setPageName($obj->name); + require "view/group.php"; + break; + + case "pad": + $obj = new pad($argv[0]); + setPageObj($obj); + setPageName($obj->name); + require "view/pad.php"; + break; + } + } + + /* page not found */ + else + { + require "view/404.php"; + } + } + } + + catch (Exception $e) + { + require "view/except.php"; + } +} + +$tokens = explode("/", $_SERVER['PATH_INFO']); +main(array_values(array_filter($tokens))); + +?> |