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.

68 lines
2.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 Controller extends BaseController
  7. {
  8. public function index(Request $request) {
  9. if(session('user_id')) {
  10. $databases = DB::select('SELECT d.*
  11. FROM `databases` d
  12. JOIN database_users u ON d.id = u.database_id
  13. WHERE u.user_id = ?', [session('user_id')]);
  14. return view('dashboard', [
  15. 'displayURL' => preg_replace('/(^https?:\/\/|\/$)/', '', session('me')),
  16. 'databases' => $databases
  17. ]);
  18. } else {
  19. return view('index');
  20. }
  21. }
  22. public function createDatabase(Request $request) {
  23. if(session('user_id')) {
  24. if($request->input('name') == '') {
  25. return redirect('/');
  26. }
  27. // Only alphanumeric chars are allowed
  28. if(preg_replace('/[^a-zA-Z0-9]/', '', $request->input('name')) != $request->input('name')) {
  29. $request->session()->flash('error', 'Only alphanumeric characters are allowed.');
  30. $request->session()->flash('database-name', preg_replace('/[^a-zA-Z0-9]/','',$request->input('name')));
  31. return redirect('/');
  32. }
  33. // Check for conflicts
  34. $db = DB::select('SELECT * FROM `databases` WHERE name = ?', [$request->input('name')]);
  35. if(count($db) == 0) {
  36. // Create the database records
  37. $id = DB::table('databases')->insertGetId([
  38. 'name' => $request->input('name'),
  39. 'created_by' => session('user_id'),
  40. 'created_at' => date('Y-m-d H:i:s')
  41. ]);
  42. DB::table('database_users')->insert([
  43. 'database_id' => $id,
  44. 'user_id' => session('user_id'),
  45. 'created_at' => date('Y-m-d H:i:s')
  46. ]);
  47. } else {
  48. $request->session()->flash('error', 'That database name is already in use.');
  49. $request->session()->flash('database-name', $request->input('name'));
  50. return redirect('/');
  51. }
  52. } else {
  53. return redirect('/');
  54. }
  55. }
  56. }