diff options
Diffstat (limited to 'public/app/routes')
| -rw-r--r-- | public/app/routes/frontend.php | 176 | ||||
| -rw-r--r-- | public/app/routes/user.php | 134 |
2 files changed, 166 insertions, 144 deletions
diff --git a/public/app/routes/frontend.php b/public/app/routes/frontend.php index 14152c1..adfe936 100644 --- a/public/app/routes/frontend.php +++ b/public/app/routes/frontend.php @@ -13,6 +13,12 @@ use app\extends\Cache_service; Route::add('/', function() { Render::view('user/login'); }); + +// invitation +//////////////////////////////////////////////////////////////////////////////// + +// request invitation (for account activation) +// --- -- -- - - - Route::add('/invitation/([0-9]*)', function($id) { if ($id == "" || $id == "0") { Render::view('error/404'); } else { @@ -20,15 +26,16 @@ Route::add('/invitation/([0-9]*)', function($id) { } }); -// new petition -Route::add('/petition/([0-9a-z\-_]*)', function($tag) { - Office::request_petition($tag); -}); +// request activation (submit invitation; POST:form is sent) +// --- -- -- - - - +Route::add('/account/activate', function() { Auth::activate(); }, 'post'); -// existing petition -Route::add('/petition/([0-9a-z\-_]*)/([0-9a-f]*)', function($tag) { - Office::filter_request_petition($tag, $id); -}); +// DEPRICATED: user sends a registration form +// --- -- -- - - - +# Route::add('/account/register', function() { +# $response = Auth::register(); +# Render::json($response); +# },'post'); @@ -42,141 +49,102 @@ Route::notFound( function() { // 404 error page -// Common content -//////////////////////////////////////////////////////////////////////////////// - - -Route::add('/course/([0-9]*)', // request course by course-id - function($id) { Cms::course($id); } -); - -Route::add('/lesson/([0-9]*)', // request lesson by lesson-id - function($id) { Cms::lesson($id); } -); - -Route::add('/page/([0-9]*)', // request lesson by lesson-id - function($id) { Cms::page($id); } -); - -Route::add('/serve/file/([0-9a-zA-Z-_\.\/]*)', // serve file by path - function ($path) { Cms::serve_file($path); } // (also ?type= is sent) -); - - - - -// Account -//////////////////////////////////////////////////////////////////////////////// - -// [ok] login -// [ok] register -// [ok] activate -// [..] ask-reset -// [..] reset -// [..] profile -// [..] edit-profile -// [..] subscriptions -// [..] payments -// [..] pay -// [..] order - - - - -/** URL-format Proposals and common Route regex solutions +/** Examples of real-world route formats + * + * URL-format Proposals and common Route regex solutions * ----------------------------------------------------------------------------- * * Page (almost-static content): * /about/{url} -# Route::add('/about/([0-9a-zA-Z-_\/]*)', function($url) { Page::fromUrl($url); }); + # Route::add('/about/([0-9a-zA-Z-_\/]*)', function($url) { Page::fromUrl($url); }); * * Product: * /{level-1}/{level-2}/{level-3}/{friendly-url}-{id} -# Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)-([0-9]*)', -# function($category, $subcategory, $group, $label, $id) { -# Product::fromID([$$category, $subcategory, $group, $label], $id); -# } -# ); + # Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)-([0-9]*)', + # function($category, $subcategory, $group, $label, $id) { + # Product::fromID([$$category, $subcategory, $group, $label], $id); + # } + # ); * * Category * /{category}/[ {subcategory}[ /{group}]] -# Route::add('/([0-9a-zA-Z-_]*)', function($a) { Category::url([$a]); }; -# Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b) { Category::url([$a, $b]); }); -# Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b, $c) { Category::url([$a, $b, $c]); }); + # Route::add('/([0-9a-zA-Z-_]*)', function($a) { Category::url([$a]); }; + # Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b) { Category::url([$a, $b]); }); + # Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b, $c) { Category::url([$a, $b, $c]); }); * * othet routes used in some user-cases - -# Route::add('/lesson/([0-9a-f]*)/([0-9a-zA-Z-_]*)', -# function($ticket, $lesson) { Lesson::show([$lesson, $ticket]); } -# ); -# -# Route::add('/media/([0-9a-f]*)/([0-9a-zA-Z-_]*)/([0-9]*)/', -# function($ticket, $type, $id) { Media::serve([$type, $id, $ticket]); } -# ); + * + # Route::add('/lesson/([0-9a-f]*)/([0-9a-zA-Z-_]*)', + # function($ticket, $lesson) { Lesson::show([$lesson, $ticket]); } + # ); + # + # Route::add('/media/([0-9a-f]*)/([0-9a-zA-Z-_]*)/([0-9]*)/', + # function($ticket, $type, $id) { Media::serve([$type, $id, $ticket]); } + # ); * * 4-th level paths belong to products -# Route::add('/about/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', -# function($a, $b, $c) { Page::show([$a, $b, $c]); } -# ); + # Route::add('/about/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', + # function($a, $b, $c) { Page::show([$a, $b, $c]); } + # ); * * * OTHER EXAMPLES (use it for brainsrtorming) * ----------------------------------------------------------------------------- * * -# // Typical Use -# // --- -# Route::add('/art', function() { Art::blah(); }); -# Route::add('/art/db', function() { Art::fromDatabase(); }); -# Route::add('/art/([0-9]*)', function($id) { Art::getInfo($id); }); + # // Typical Use + # // --- + # Route::add('/art', function() { Art::blah(); }); + # Route::add('/art/db', function() { Art::fromDatabase(); }); + # Route::add('/art/([0-9]*)', function($id) { Art::getInfo($id); }); * * Get-Post route example -# Route::add('/contact-form', function() { -# echo '<form method="post"><input type="text" name="test" /><input type="submit" value="send" /></form>'; -# }, 'get'); - - Route::add('/contact-form', function() { - echo 'Hey! The form has been sent:<br/>'; print_r($_POST); - }, 'post'); + # Route::add('/contact-form', function() { + # echo '<form method="post"><input type="text" name="test" /><input type="submit" value="send" /></form>'; + # }, 'get'); + + Route::add('/contact-form', function() { + echo 'Hey! The form has been sent:<br/>'; print_r($_POST); + }, 'post'); * * Accept number as parameter -# Route::add('/foo/([0-9]*)/bar', function($var1) { -# // echo $var1.' is a number!'; - echo "{$var1} is a number!"; -# }); + # Route::add('/foo/([0-9]*)/bar', function($var1) { + # // echo $var1.' is a number!'; + echo "{$var1} is a number!"; + # }); * * About pages -# Route::add('/about/([0-9a-zA-Z-_]*)', function($page) { -# InfoPage::render('about/'.page); -# }); + # Route::add('/about/([0-9a-zA-Z-_]*)', function($page) { + # InfoPage::render('about/'.page); + # }); * * handle a request like: /foo/123/bar/3254-lefki-zaxari-marata-1kg * where first-numeric-part of last-uri-section (3254) is the product number -# Route::add('/foo/([0-9]*)/bar/([0-9]*)-([0-9a-zA-Z-_]*)', function($num, $id, $name) { -# echo $num .' is some nomber, id = '. $id .' and label = '. $name; -# }); + # Route::add('/foo/([0-9]*)/bar/([0-9]*)-([0-9a-zA-Z-_]*)', function($num, $id, $name) { + # echo $num .' is some nomber, id = '. $id .' and label = '. $name; + # }); * * handle a request like: /zaxares-glykantika/lefki-zaxari-year-2022-45678 * where last-numeric-part of last-uri-section (45678) is the product number -# Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)-([0-9]*)', -# function($category, $subcategory, $group, $label, $id) { -# Shop::product([$$category, $subcategory, $group, $label], $id); -# }); + # Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)-([0-9]*)', + # function($category, $subcategory, $group, $label, $id) { + # Shop::product([$$category, $subcategory, $group, $label], $id); + # }); * * last chance to resolve (some friendly url) -# Route::add('/([0-9a-zA-Z-_]*)', function($a) { Resolve::uri([$a]); }); -# Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b) { Resolve::uri([$a, $b]); }); -# Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b, $c) { Resolve::uri([$a, $b, $c]); }); + # Route::add('/([0-9a-zA-Z-_]*)', function($a) { Resolve::uri([$a]); }); + # Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b) { Resolve::uri([$a, $b]); }); + # Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)', function($a, $b, $c) { Resolve::uri([$a, $b, $c]); }); * * * Product page * handle a request like: /pantopoleio/zaxares/lefki-zaxari/lefki-zaxari-year-2022-45678 * where last-numeric-part of last-uri-section (45678) is the product number -# Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)-([0-9]*)', -# function($category, $subcategory, $group, $label, $id) { -# Shop::product([$$category, $subcategory, $group, $label], $id); -# }); + # Route::add('/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)/([0-9a-zA-Z-_]*)-([0-9]*)', + # function($category, $subcategory, $group, $label, $id) { + # Shop::product([$$category, $subcategory, $group, $label], $id); + # }); * * ------------------------------------------------------------------------------ - */ +*/ diff --git a/public/app/routes/user.php b/public/app/routes/user.php index 26483f4..12ca7d2 100644 --- a/public/app/routes/user.php +++ b/public/app/routes/user.php @@ -2,6 +2,7 @@ use app\controllers\Auth; use app\controllers\Classroom_user; +use app\controllers\Office; /** User Connection Management Routes @@ -25,28 +26,12 @@ Route::add('/logout', function() { header('Location: /'); die(); }); -// request activation (from invitation page; POST:form is sent) -Route::add('/account/activate', function() { Auth::activate(); }, 'post'); + // request password reset Route::add('/account/reset_password', function() { Auth::reset_password(); } ); -// invite some users -Route::add('/invite', function() { - Auth::allowRoles([1, 2, 3]); - Render::view('admin/invite'); -}); - -Route::add('/panel', function() { - Render::view('user/panel'); - // Render::json([ - // 'connected' => Auth::is_connected(), - // 'user' => Auth::user_data(), - // ]); -}); - - // Replies to common requests (POST method) // --- -- -- - - - @@ -58,36 +43,105 @@ Route::add('/account/check-login', function() { 'post' ); -// user sends a registration form -Route::add('/account/register', function() { - $response = Auth::register(); - Render::json($response); -},'post'); -// Account Management -// --- -- -- - - - +/* DEPRICATED: + // Account Management + //////////////////////////////////////////////////////////////////////////////// + + // user profile + Route::add('/account/profile', function() { + $user = Auth::is_connected(); + if ($user === false) { + Render::view('error/general', + [ + 'title' => 'Nope!', + 'message' => "<h2>No profile</h2>User is not connected" + ] + ); -// user profile -Route::add('/account/profile', function() { - $user = Auth::is_connected(); - if ($user === false) { - Render::view('error/general', - [ - 'title' => 'Nope!', - 'message' => "<h2>No profile</h2>User is not connected" - ] - ); - - } else { - Render::json(['success' => true, 'status' => 'user is connected']); + } else { + Render::json(['success' => true, 'status' => 'user is connected']); + } } - } -); + ); +--- */ + + +// routes for connected users +//////////////////////////////////////////////////////////////////////////////// + +if (Auth::is_connected()) { + + // serve content + // ------------------------------------------------------------------------- + + // control panel + // --- -- -- - - - + Route::add('/panel', function() { + Render::view('user/panel',[ + 'is_admin' => Auth::in_admin_group(), + 'content' => 'info', + 'user' => json_decode(json_encode( + Auth::user_data(), JSON_UNESCAPED_UNICODE + )) + ]); + }); + + // file of petitions + // --- -- -- - - - + Route::add('/user/petitions', function() { + Render::view('admin/invite'); + }); + + // request New petition form + // --- -- -- - - - + Route::add('/petition/([0-9a-z\-_]*)', function($tag) { + Office::request_petition($tag); + }); + + // request existing petition + // --- -- -- - - - + Route::add('/petition/signature/([0-9a-f]*)', function($signature) { + Office::filter_request_petition($signature); + }); + + + // CRUD content + // ------------------------------------------------------------------------- + + // add petition + // --- -- -- - - - + Route::add('/petition/new', function() { + Office::add_petition(); + }, 'post'); + + +} + + + +// routes for administrators +//////////////////////////////////////////////////////////////////////////////// + +if (Auth::in_admin_group()) { + + // administer petitions + // --- -- -- - - - + Route::add('/admin/petitions', function() { + Render::view('user/panel'); + }); + + // invite user(s) + // --- -- -- - - - + Route::add('/admin/invite', function() { + Render::view('admin/invite'); + }); +} // temporary (on development) -// --- -- -- - -- +//////////////////////////////////////////////////////////////////////////////// // NOTE: these is only for testing purposes // test connection |
