Guest User

Untitled

a guest
Dec 9th, 2016
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.64 KB | None | 0 0
  1. <?php
  2.  
  3. /**
  4. * ROUTES:
  5. * (Authorization header with api key is required for user session)
  6. *
  7. * /register
  8. * method - post
  9. * params - name, email, password
  10. *
  11. * /login
  12. * method - post
  13. * params - email, password
  14. *
  15. * Creating new task in db
  16. * /tasks
  17. * method - post
  18. * params - task
  19. *
  20. * Listing all tasks of authorized user
  21. * /tasks
  22. * method - get
  23. *
  24. * Listing single task of authorized user
  25. * /tasks/:user_id
  26. * method - GET
  27. * param - /:task_id
  28. *
  29. * Updating existing task
  30. * /tasks/:task_id
  31. * method - PUT
  32. * params - task, status, /:task_id
  33. *
  34. * Deleting task. Users can delete only their tasks
  35. * /tasks/:task_id
  36. * method - DELETE
  37. */
  38.  
  39. require_once '../include/DbHandler.php';
  40. require_once '../include/PassHash.php';
  41. require_once '../include/Utils.php';
  42. require '../vendor/autoload.php';
  43.  
  44. $app = new \Slim\Slim();
  45.  
  46. if(SLIM_DEBUG){
  47. $app->config('debug',true);
  48. }
  49.  
  50. /**
  51. * route test block
  52. */
  53. $app->get('/', function () {
  54. echo "Hello World";
  55. });
  56. $app->get('/test/:name', function ($name) {
  57. echo "Hello, $name";
  58. });
  59.  
  60. /**
  61. * User registration
  62. * url - /register
  63. * method - POST
  64. * params - name, email, password
  65. */
  66. $app->post('/register', function() use ($app) {
  67. // check for required params
  68. verifyRequiredParams(array('name', 'email', 'password'));
  69. $response = array();
  70. // reading post params
  71. $name = $app->request->post('name');
  72. $email = $app->request->post('email');
  73. $password = $app->request->post('password');
  74. // validating email address
  75. validateEmail($email);
  76.  
  77. $db = new DbHandler();
  78. $res = $db->createUser($name, $email, $password);
  79.  
  80. if ($res == USER_CREATED_SUCCESSFULLY) {
  81. $response["error"] = false;
  82. $response["message"] = "You are successfully registered";
  83. echoResponse(201, $response);
  84. } else if ($res == USER_CREATE_FAILED) {
  85. $response["error"] = true;
  86. $response["message"] = "Oops! An error occurred while registereing";
  87. echoResponse(200, $response);
  88. } else if ($res == USER_ALREADY_EXISTED) {
  89. $response["error"] = true;
  90. $response["message"] = "Sorry, this email already existed";
  91. echoResponse(200, $response);
  92. }
  93. });
  94.  
  95. /**
  96. * User Login
  97. * url - /login
  98. * method - POST
  99. * params - email, password
  100. */
  101. $app->post('/login', function() use ($app) {
  102. verifyRequiredParams(array('email', 'password'));
  103. // reading post params
  104. $email = $app->request()->post('email');
  105. $password = $app->request()->post('password');
  106. $response = array();
  107.  
  108. $db = new DbHandler();
  109. // check for correct email and password
  110. if ($db->checkLogin($email, $password)) {
  111. // get the user by email
  112. $user = $db->getUserByEmail($email);
  113.  
  114. if ($user != NULL) {
  115. $response["error"] = false;
  116. $response['name'] = $user['name'];
  117. $response['email'] = $user['email'];
  118. $response['apiKey'] = $user['api_key'];
  119. $response['createdAt'] = $user['created_at'];
  120. } else {
  121. // unknown error occurred
  122. $response['error'] = true;
  123. $response['message'] = "An error occurred. Please try again";
  124. }
  125. } else {
  126. // user credentials are wrong
  127. $response['error'] = true;
  128. $response['message'] = 'Login failed. Incorrect credentials';
  129. }
  130.  
  131. echoResponse(200, $response);
  132. });
  133.  
  134. /**
  135. * Creating new task in db
  136. * method POST
  137. * params - name
  138. * url - /tasks/
  139. */
  140.  
  141. $app->post('/tasks', 'authenticate', function() use ($app){
  142. verifyRequiredParams(array('task'));
  143.  
  144. $response = array();
  145. $task = $app->request->post('task');
  146.  
  147. global $user_id;
  148. $db = new DbHandler();
  149.  
  150. // creating new task
  151. $task_id = $db->createTask($user_id, $task);
  152. if ($task_id != NULL) {
  153. $response["error"] = false;
  154. $response["message"] = "Task created successfully";
  155. $response["task_id"] = $task_id;
  156. } else {
  157. $response["error"] = true;
  158. $response["message"] = "Failed to create task. Please try again";
  159. }
  160. echoResponse(201, $response);
  161. });
  162.  
  163. /**
  164. * Listing all tasks of particular user
  165. * method GET
  166. * url /tasks
  167. */
  168.  
  169. $app->get('/tasks', 'authenticate', function(){
  170. global $user_id;
  171. $response = array();
  172. $db = new DbHandler();
  173.  
  174. // fetching all user tasks
  175. $result = $db->getAllUserTasks($user_id);
  176.  
  177. $response["error"] = false;
  178. $response["tasks"] = array();
  179.  
  180. // looping through result and preparing tasks array
  181. while ($task = $result->fetch_assoc()) {
  182. $tmp = array();
  183. $tmp["id"] = $task["id"];
  184. $tmp["task"] = $task["task"];
  185. $tmp["status"] = $task["status"];
  186. $tmp["createdAt"] = $task["created_at"];
  187. array_push($response["tasks"], $tmp);
  188. }
  189.  
  190. echoResponse(200, $response);
  191. });
  192.  
  193. /**
  194. * Listing single task of particular user
  195. * method GET
  196. * url /tasks/:id
  197. * Return 404 if task doesn't belong to user
  198. */
  199. $app->get('/tasks/:task_id', 'authenticate', function($task_id){
  200. global $user_id;
  201. $response = array();
  202. $db = new DbHandler();
  203.  
  204. // fetch task
  205. $result = $db->getTask($task_id, $user_id);
  206.  
  207. if ($result != NULL) {
  208. $response["error"] = false;
  209. $response["id"] = $result["id"];
  210. $response["task"] = $result["task"];
  211. $response["status"] = $result["status"];
  212. $response["createdAt"] = $result["created_at"];
  213. echoResponse(200, $response);
  214. } else {
  215. $response["error"] = true;
  216. $response["message"] = "The requested resource doesn't exists";
  217. echoResponse(404, $response);
  218. }
  219. });
  220.  
  221. /**
  222. * Updating existing task
  223. * method PUT
  224. * params task, status
  225. * url - /tasks/:id
  226. */
  227. $app->put('/tasks/:task_id', 'authenticate', function($task_id) use($app) {
  228. verifyRequiredParams(array('task', 'status'));
  229.  
  230. global $user_id;
  231. $task = $app->request->put('task');
  232. $status = $app->request->put('status');
  233.  
  234. $db = new DbHandler();
  235. $response = array();
  236.  
  237. // updating task
  238. $result = $db->updateTask($user_id, $task_id, $task, $status);
  239. if ($result) {
  240. // task updated successfully
  241. $response["error"] = false;
  242. $response["message"] = "Task updated successfully";
  243. } else {
  244. // task failed to update
  245. $response["error"] = true;
  246. $response["message"] = "Task failed to update. Please try again!";
  247. }
  248. echoResponse(200, $response);
  249. });
  250.  
  251.  
  252. /**
  253. * Deleting task. Users can delete only their tasks
  254. * method DELETE
  255. * url /tasks
  256. */
  257. $app->delete('/tasks/:task_id', 'authenticate', function($task_id) use($app) {
  258. global $user_id;
  259.  
  260. $db = new DbHandler();
  261. $response = array();
  262. $result = $db->deleteTask($user_id, $task_id);
  263. if ($result) {
  264. // task deleted successfully
  265. $response["error"] = false;
  266. $response["message"] = "Task deleted succesfully";
  267. } else {
  268. // task failed to delete
  269. $response["error"] = true;
  270. $response["message"] = "Task failed to delete. Please try again!";
  271. }
  272. echoResponse(200, $response);
  273. });
  274.  
  275. $app->run();
  276. ?>
Add Comment
Please, Sign In to add comment