then sends to POST:/account/check-login Route::add('/login', function() { if (Auth::is_connected()) { header('Location: /panel'); } else { Render::view('user/login'); } }); // request logout Route::add('/logout', function() { Auth::logout(); header('Location: /'); die(); }); // TODO: // // request password reset // Route::add('/account/reset_password', function() { Auth::reset_password(); } ); // Replies to common requests (POST method) // --- -- -- - - - // user sends login form Route::add('/account/check-login', function() { $response = Auth::login(); Render::json(['status' => $response]); }, 'post' ); /* DEPRICATED: // Account Management //////////////////////////////////////////////////////////////////////////////// // user profile Route::add('/account/profile', function() { $user = Auth::is_connected(); if ($user === false) { Render::view('error/general', [ 'title' => 'Nope!', 'message' => "

No profile

User is not 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 )) ]); }); // request PAGE list-my-petitions // --- -- -- - - - Route::add('/user/petitions', function() { Render::view('user/panel',[ 'is_admin' => Auth::in_admin_group(), 'content' => 'own_petitions', 'user' => json_decode(json_encode( Auth::user_data(), JSON_UNESCAPED_UNICODE )) ]); }); // requst RESULTS list my petitions Route::add('/user/get/petitions', function() { Office::user_petitions(); }); // request NEW petition FORM // --- -- -- - - - Route::add('/petition/([0-9a-z\-_]*)', function($tag) { Office::request_petition($tag); }); // request EXISTING petition copy // --- -- -- - - - Route::add('/petition/signature/([0-9a-f]*)', function($signature) { Office::petition_copy($signature); }); // UPDATE user properties // ------------------------------------------------------------------------- // GET HTML: request UPDADE (properties) FORM // --- -- -- - - - Route::add('/user/update_form', function() { Auth::update_form(); }); // POST: update user (data via post) // --- -- -- - - - Route::add('/user/update/properties', function() { Auth::update_user(); }, 'post'); // GET HTML: request (update) PASSWORD FORM // --- -- -- - - - Route::add('/user/password_form', function() { Auth::password_form(); }); // POST: update user (data via post) // --- -- -- - - - Route::add('/user/update/password', function() { Auth::update_password(); }, 'post'); // CRUD content // ------------------------------------------------------------------------- // add petition // --- -- -- - - - Route::add('/petition/new', function() { Office::add_petition(); }, 'post'); } // routes for administrators //////////////////////////////////////////////////////////////////////////////// if (Auth::in_admin_group()) { // GET HTML: administer petitions (page) // --- -- -- - - - Route::add('/admin/petitions', function() { Render::view('templates/admin_petitions'); }); // GET JSON: request RESULTS list my petitions Route::add('/admin/get/petitions', function() { Office::all_petitions(); }); // POST AJAX: set petition protocol Route::add('/admin/set/protocol', function() { Office::set_protocol(); }, 'post'); // invite user(s) // --- -- -- - - - Route::add('/admin/invite', function() { $teachers = Registry::use('database')->runQuery( "SELECT id, concat(last_name, ' ', first_name) as TeacherName FROM user ORDER BY TeacherName WHERE otp_expiration < :now OR otp_expiration IS NULL", [ ':now' => time() ] ); Render::view('templates/invite', ['teachers' => $teachers]); }); // POST AJAX: set petition protocol Route::add('/admin/send/invitation', function() { Office::send_invitation(); }, 'post'); } // temporary (on development) //////////////////////////////////////////////////////////////////////////////// // NOTE: these is only for testing purposes // test connection if (!PRODUCTION) { Route::add('/check/connection', function() { Auth::is_connected(); }); }