/** * Get user instance with supplied token * * @param Slim $app * @return object|string */ public static function getUserWithToken(Slim $app) { $token = $app->request->headers('Authorization'); if (isset($token)) { try { $user = User::where('token', $token); } catch (RecordNotFoundException $e) { $app->response->headers->set('Content-Type', 'application/json'); $app->halt(401, json_encode(['message' => 'Invalid Token'])); } return $user; } else { $app->response->headers->set('Content-Type', 'application/json'); $app->halt(401, json_encode(['message' => 'Empty Token'])); } }
/** * Issue token to a user * * @param Slim $app * @return string */ public static function login(Slim $app) { $app->response->headers->set('Content-Type', 'application/json'); $username = $app->request->post('username'); $password = md5($app->request->post('password')); try { $user = User::where('username', $username); } catch (RecordNotFoundException $e) { $app->halt(404, json_encode(['message' => 'Not Registered'])); } if ($password == $user->getRecord()['dbData']['password']) { $token = bin2hex(openssl_random_pseudo_bytes(16)); $check = Setup::setToken($user, $token); if ($check === 1) { return json_encode(['username' => $username, 'Authorization' => $token]); } else { $app->halt(503); } } else { $app->halt(404, json_encode(['message' => 'Incorrect password'])); } }
/** * Delete user's account * * @param string $username username of a user * @param Slim $app * @return string */ public static function delete($username, Slim $app) { $app->response->headers->set('Content-Type', 'application/json'); try { $user = User::where('username', $username); } catch (RecordNotFoundException $e) { $app->halt(404, json_encode(['message' => 'Not Found'])); } if (is_object($user)) { $fields = $app->request->isPut() ? $app->request->put() : $app->request->patch(); if (md5($fields['password']) == $user->getRecord()['dbData']['password']) { $check = User::destroy($user->getRecord()['dbData']['id']); if ($check === 1) { return json_encode(['message' => 'Account Deleted']); } else { $app->halt(304); } } else { $app->halt(401); } } else { $app->halt(503); } }