api.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  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. use App\Models\Blog;
  10. use App\Models\Comment;
  11. /*
  12. |--------------------------------------------------------------------------
  13. | API Routes
  14. |--------------------------------------------------------------------------
  15. |
  16. | Here is where you can register API routes for your application. These
  17. | routes are loaded by the RouteServiceProvider within a group which
  18. | is assigned the "api" middleware group. Enjoy building your API!
  19. |
  20. */
  21. Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
  22. return $request->user();
  23. });
  24. Route::post('/login', function (Request $request) {
  25. $request->validate([
  26. 'email' => 'required|email',
  27. 'password' => 'required',
  28. ]);
  29. $user = User::where('email', $request->email)->first();
  30. if (!$user || !Hash::check($request->password, $user->password)) {
  31. throw ValidationException::withMessages([
  32. 'email' => ['The provided credentials are incorrect.'],
  33. ]);
  34. }
  35. return [
  36. 'token' => $user->createToken('login')->plainTextToken,
  37. 'userData' => json_encode($user),
  38. ];
  39. });
  40. Route::middleware('auth:sanctum')->post('/logout', function (Request $request) {
  41. $user = $request->user();
  42. $user->tokens()->delete();
  43. return $user;
  44. });
  45. Route::middleware('auth:sanctum')->post('/comment/post', function (Request $request) {
  46. $request->validate([
  47. 'comment' => 'required',
  48. 'blogId' => 'required',
  49. ]);
  50. Comment::insert([
  51. 'writer' => $request->user()->id,
  52. 'comment' => $request->comment,
  53. 'blogId' => $request->blogId,
  54. 'created_at' => now(),
  55. 'updated_at' => now(),
  56. ]);
  57. return 'success';
  58. });
  59. Route::middleware('auth:sanctum')->post('/comment/delete', function (Request $request) {
  60. $request->validate([
  61. 'commentID' => 'required',
  62. ]);
  63. Comment::where('id', '=', $request->commentID)->delete();
  64. return 'success';
  65. });
  66. Route::middleware('auth:sanctum')->post('/get_blog/list', function (Request $request) {
  67. $blogList = DB::select("SELECT
  68. blogs.id,
  69. title,
  70. content AS excerpt,
  71. tags, users.id AS userId,
  72. users.name AS userFullName,
  73. blogs.created_at AS blogPosted,
  74. t.total AS comment
  75. FROM [laravel_kevin].[dbo].[blogs]
  76. RIGHT JOIN [dbo].[users] ON [blogs].[writer] = [users].[id]
  77. LEFT JOIN (
  78. SELECT [blogId],COUNT(*) AS total
  79. FROM [laravel_kevin].[dbo].[comments]
  80. GROUP BY [blogId]) as t ON [blogs].[id] = [t].[blogId]");
  81. return $blogList;
  82. });
  83. Route::middleware('auth:sanctum')->post('/get_blog/detail', function (Request $request) {
  84. $request->validate([
  85. 'blogId' => 'required',
  86. ]);
  87. $blog = DB::select("SELECT
  88. title,
  89. content,
  90. tags,
  91. users.id AS userId,
  92. users.name AS userFullName,
  93. blogs.created_at AS createdTime,
  94. bookmarked,
  95. t.total AS comments
  96. FROM [laravel_kevin].[dbo].[blogs]
  97. RIGHT JOIN [dbo].[users] ON [blogs].[writer] = [users].[id]
  98. LEFT JOIN (
  99. SELECT [blogId],COUNT(*) AS total
  100. FROM [laravel_kevin].[dbo].[comments]
  101. GROUP BY [blogId]) as t ON [blogs].[id] = [t].[blogId]
  102. WHERE blogs.id=" . $request->blogId);
  103. $comments = DB::select("SELECT comment AS commentText, comments.created_at AS commentedAt, users.id AS userId, users.name AS userFullName
  104. FROM [laravel_kevin].[dbo].[comments]
  105. RIGHT JOIN [dbo].[users] ON [comments].[writer] = [users].[id]
  106. WHERE [blogId]=" . $request->blogId);
  107. return ['blog' => $blog[0], 'comments' => $comments];
  108. });
  109. Route::middleware('auth:sanctum')->post('/get_blog/sidebar', function (Request $request) {
  110. $recentPosts = DB::select("SELECT blogs.id, title, blogs.created_at AS createdTime
  111. FROM [laravel_kevin].[dbo].[blogs]
  112. RIGHT JOIN [dbo].[users] ON [blogs].[writer] = [users].[id]");
  113. $categories = [
  114. ['category' => 'Fashion', 'icon' => 'WatchIcon'],
  115. ['category' => 'Food', 'icon' => 'ShoppingCartIcon'],
  116. ['category' => 'Gaming', 'icon' => 'CommandIcon'],
  117. ['category' => 'Quote', 'icon' => 'HashIcon'],
  118. ['category' => 'Video', 'icon' => 'VideoIcon'],
  119. ];
  120. return ['recentPosts' => $recentPosts, 'categories' => $categories];
  121. });