You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.0 KiB

  1. <?php
  2. namespace App\Http\Controllers;
  3. use Laravel\Lumen\Routing\Controller as BaseController;
  4. use Illuminate\Http\Request;
  5. use DB;
  6. class Share extends BaseController
  7. {
  8. private function _databaseFromToken($token) {
  9. $share = DB::table('shares')
  10. ->where('token', $token)
  11. ->where('expires_at', '>', date('Y-m-d H:i:s'))
  12. ->first();
  13. if(!$share) return false;
  14. $database = DB::table('databases')->where('id', $share->database_id)->first();
  15. return $database;
  16. }
  17. public function view(Request $request, $token) {
  18. $database = $this->_databaseFromToken($token);
  19. if(!$database) {
  20. return view('share-expired');
  21. }
  22. return view('share', [
  23. 'database' => $database,
  24. 'share_token' => $token,
  25. ]);
  26. }
  27. public function current_location(Request $request) {
  28. $database = $this->_databaseFromToken($request->input('token'));
  29. $response = [
  30. 'data' => json_decode($database->last_location),
  31. ];
  32. return response(json_encode($response))->header('Content-Type', 'application/json');
  33. }
  34. }