api.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. use Illuminate\Http\Request;
  3. use Illuminate\Support\Facades\Route;
  4. use Illuminate\Support\Facades\Hash;
  5. use Illuminate\Validation\ValidationException;
  6. use Illuminate\Support\Facades\DB;
  7. use App\Models\User;
  8. use App\Models\Message;
  9. /*
  10. |--------------------------------------------------------------------------
  11. | API Routes
  12. |--------------------------------------------------------------------------
  13. |
  14. | Here is where you can register API routes for your application. These
  15. | routes are loaded by the RouteServiceProvider within a group which
  16. | is assigned the "api" middleware group. Enjoy building your API!
  17. |
  18. */
  19. Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
  20. return $request->user();
  21. });
  22. Route::post('/login', function (Request $request) {
  23. $request->validate([
  24. 'email' => 'required|email',
  25. 'password' => 'required',
  26. ]);
  27. $user = User::where('email', $request->email)->first();
  28. if (!$user || !Hash::check($request->password, $user->password)) {
  29. throw ValidationException::withMessages([
  30. 'email' => ['The provided credentials are incorrect.'],
  31. ]);
  32. }
  33. return [
  34. 'token' => $user->createToken('login')->plainTextToken,
  35. 'userData' => json_encode($user),
  36. ];
  37. });
  38. Route::middleware('auth:sanctum')->post('/logout', function (Request $request) {
  39. $user = $request->user();
  40. $user->tokens()->delete();
  41. return $user;
  42. });
  43. Route::middleware('auth:sanctum')->post('/get_dataset', function (Request $request) {
  44. $request->validate([
  45. 'table' => 'required',
  46. 'order' => 'required',
  47. 'number' => 'required',
  48. ]);
  49. $dataset = DB::select("SELECT TOP ({$request->number}) * FROM [laravel_kevin].[dbo].[{$request->table}] ORDER BY {$request->order} desc");
  50. return $dataset;
  51. });
  52. Route::middleware('auth:sanctum')->post('/get_messages', function (Request $request) {
  53. $request->validate([
  54. 'number' => 'required',
  55. ]);
  56. $dataset = DB::select("SELECT TOP ({$request->number}) title, content, name, messages.updated_at
  57. FROM [laravel_kevin].[dbo].[messages]
  58. INNER JOIN [dbo].[users] ON [messages].[writer]=[users].[id]
  59. ORDER BY updated_at desc");
  60. return $dataset;
  61. });