use Locust\Models\Issue; use Locust\Models\Status; // ----------------------------------------------------------------------------- // Issues get('/issues', function () { $issues = Issue::all(); echo json_encode($issues); }); // Create issue post('/issues', function () { // Check if logged in if (!currentUser()) { return http_response_code(401); } $status = Status::find(ng('status_id')); $data = ['summary' => ng('summary'), 'description' => ng('description'), 'version_id' => ng('version_id'), 'user_id' => currentUser()['id'], 'status_id' => $status->id, 'is_closed' => $status->is_closed]; $issue = new Issue($data); if ($issue->save()) { echo json_encode($issue); } else { http_response_code(400); echo json_encode($issue->errors()); } }); // Delete issue delete('/issues/(\\d+)', function ($id) { // Check if logged in and is admin if (!currentUser() || currentUser()['role'] != 'admin') { return http_response_code(currentUser() ? 401 : 403); } $issue = Issue::find($id)->delete();
http_response_code(400); echo json_encode($version->errors()); } }); // Show version get('/roadmap/(.*)', function ($slug) { $version = Version::find('slug', $slug); echo json_encode($version); }); post('/roadmap/(.*)', function ($slug) { // Check if logged in and is admin if (!currentUser() || currentUser()['role'] != 'admin') { return http_response_code(currentUser() ? 401 : 403); } if (ng('id') && ($version = Version::find(ng('id')))) { $version->set(['name' => ng('name'), 'slug' => ng('slug'), 'description' => ng('description'), 'display_order' => ng('display_order'), 'is_completed' => ng('is_completed')]); if ($version->save()) { echo json_encode($version); } else { http_response_code(400); echo json_encode($version->errors()); } } else { http_response_code(400); } }); // Delete version delete('/roadmap/(.*)', function ($slug) { // Check if logged in and is admin if (!currentUser() || currentUser()['role'] != 'admin') { return http_response_code(currentUser() ? 401 : 403);
// ----------------------------------------------------------------------------- // Users // Create user post('/users', function () { $user = new User(['username' => ng('username'), 'password' => ng('password'), 'email' => ng('email'), 'role' => "user"]); if ($user->save()) { echo json_encode($user); } else { http_response_code(400); echo json_encode($user->errors()); } }); // Login post('/login', function () { $user = User::find('username', ng('username', '')); if ($user && $user->authenticate(ng('password'))) { setcookie('locust_session', $user->session_hash, 0, '/', null, false, true); echo json_encode($user->toArray()); } else { http_response_code(401); } }); // Profile get('/profile', function () { if (isset($_COOKIE['locust_session']) && ($user = User::find('session_hash', $_COOKIE['locust_session']))) { echo json_encode($user->toArray()); } else { http_response_code(401); } }); // Logout