AuthController.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?php
  2. /*
  3. * This file is part of the Jiannei/lumen-api-starter.
  4. *
  5. * (c) Jiannei <longjian.huang@foxmail.com>
  6. *
  7. * This source file is subject to the MIT license that is bundled
  8. * with this source code in the file LICENSE.
  9. */
  10. namespace App\Http\Controllers\Api\Base;
  11. use App\Http\Controllers\Controller;
  12. use App\Repositories\Enums\ModelStatusEnum;
  13. use App\Repositories\Enums\ResponseCodeEnum;
  14. use App\Repositories\Models\Base\Admin;
  15. use App\Repositories\Models\User\User;
  16. use App\Repositories\Transformers\User\UserTransformer;
  17. use Illuminate\Http\Request;
  18. use Illuminate\Support\Facades\Hash;
  19. use Jiannei\Response\Laravel\Support\Facades\Response;
  20. class AuthController extends Controller
  21. {
  22. /**
  23. * Create a new controller instance.
  24. */
  25. public function __construct()
  26. {
  27. $this->middleware('throttle:10,1', ['only' => ['login']]);
  28. }
  29. /**
  30. * 登录
  31. * Author: Mead
  32. */
  33. public function login(Request $request)
  34. {
  35. $this->validate($request, [
  36. 'username' => 'required',
  37. 'password' => 'required|min:6'
  38. ]);
  39. $credentials = request(['username', 'password']);
  40. $credentials['status'] = ModelStatusEnum::OK;
  41. if (!$token = auth()->guard('api')->attempt($credentials)) {
  42. return Response::fail(T('The account or password is incorrect.'), ResponseCodeEnum::SERVICE_LOGIN_ERROR);
  43. }
  44. $user = auth('api')->user();
  45. $user = $user->only(['id', 'username', 'name', 'sex', 'role_id', 'class', 'mobile']);
  46. return Response::success(compact('token', 'user'));
  47. }
  48. /**
  49. * 退出
  50. * @return mixed
  51. * Author: Mead
  52. */
  53. public function logout()
  54. {
  55. auth('api')->logout();
  56. return Response::noContent();
  57. }
  58. /**
  59. * 注册
  60. * Author: Mead
  61. */
  62. public function store(Request $request)
  63. {
  64. $this->validate($request, [
  65. 'name' => 'required',
  66. // 'turename' => 'required',
  67. 'mobile' => 'required',
  68. 'username' => 'required|min:8|unique:base_users,username',
  69. 'password' => 'required|min:6'
  70. ]);
  71. $data = $request->only(['turename', 'mobile', 'username', 'password']);
  72. $data['password'] = Hash::make($data['password']);
  73. User::query()->create($data);
  74. return Response::success(null);
  75. }
  76. /**
  77. * 用户
  78. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  79. * Author: Mead
  80. */
  81. public function me()
  82. {
  83. $me = (new UserTransformer())->transform(User::query()->find(login_user_id()));
  84. return Response::success($me);
  85. }
  86. /**
  87. * 修改个人信息
  88. * @param Request $request
  89. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  90. * @throws \Illuminate\Validation\ValidationException
  91. * Author: Mead
  92. */
  93. public function update(Request $request)
  94. {
  95. $this->validate($request, [
  96. 'name' => 'required',
  97. 'headimg' => 'sometimes',
  98. 'sex' => 'nullable',
  99. 'email' => 'nullable|email',
  100. 'class' => 'nullable',
  101. 'mobile' => 'nullable|mobile',
  102. 'intro' => 'nullable',
  103. 'personal_signature' => 'nullable',
  104. 'userrate' => 'nullable',
  105. ]);
  106. try {
  107. $data = $request->only(['turename', 'headimg', 'email', 'mobile', 'class', 'intro', 'personal_signature', 'userrate', 'name', 'sex']);
  108. $re = User::query()->where('id', login_user_id())->update($data);
  109. if ($re) {
  110. return Response::success(null);
  111. }
  112. return $this->errorFail();
  113. } catch (\Exception $e) {
  114. $this->errorStore($e);
  115. }
  116. }
  117. /**
  118. * 修改密码
  119. * @param Request $request
  120. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  121. * @throws \Illuminate\Validation\ValidationException
  122. * Author: Mead
  123. */
  124. public function changePassword(Request $request)
  125. {
  126. $this->validate($request, [
  127. 'password' => 'required|min:6|confirmed',
  128. ]);
  129. $password = $request->get('password');
  130. $data['password'] = Hash::make($password);
  131. $re = User::query()->where('id', login_user_id())->update($data);
  132. if ($re) {
  133. return Response::success(null);
  134. }
  135. return $this->errorFail();
  136. }
  137. }