AuthController.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  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\ResponseCodeEnum;
  13. use App\Repositories\Models\Base\Admin;
  14. use App\Repositories\Models\User\User;
  15. use App\Repositories\Transformers\User\UserTransformer;
  16. use Illuminate\Http\Request;
  17. use Illuminate\Support\Facades\Hash;
  18. use Jiannei\Response\Laravel\Support\Facades\Response;
  19. class AuthController extends Controller
  20. {
  21. /**
  22. * Create a new controller instance.
  23. */
  24. public function __construct()
  25. {
  26. $this->middleware('throttle:10,1', ['only' => ['login']]);
  27. }
  28. /**
  29. * 登录
  30. * Author: Mead
  31. */
  32. public function login(Request $request)
  33. {
  34. $this->validate($request, [
  35. 'username' => 'required',
  36. 'password' => 'required|min:6'
  37. ]);
  38. $credentials = request(['username', 'password']);
  39. if (!$token = auth()->guard('api')->attempt($credentials)) {
  40. return Response::fail(T('The account or password is incorrect.'), ResponseCodeEnum::SERVICE_LOGIN_ERROR);
  41. }
  42. $user = auth('api')->user();
  43. return Response::success(compact('token', 'user'));
  44. }
  45. /**
  46. * 退出
  47. * @return mixed
  48. * Author: Mead
  49. */
  50. public function logout()
  51. {
  52. auth('api')->logout();
  53. return Response::noContent();
  54. }
  55. /**
  56. * 注册
  57. * Author: Mead
  58. */
  59. public function store(Request $request)
  60. {
  61. $this->validate($request, [
  62. 'turename' => 'required',
  63. 'mobile' => 'required',
  64. 'username' => 'required|min:8|unique:base_users,username',
  65. 'password' => 'required|min:6'
  66. ]);
  67. $data = $request->only(['turename', 'mobile', 'username', 'password']);
  68. $data['password'] = Hash::make($data['password']);
  69. User::query()->create($data);
  70. return Response::success(null);
  71. }
  72. /**
  73. * 用户
  74. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  75. * Author: Mead
  76. */
  77. public function me()
  78. {
  79. $me = (new UserTransformer())->transform(User::query()->find(login_user_id()));
  80. return Response::success($me);
  81. }
  82. public function update(Request $request)
  83. {
  84. $this->validate($request, [
  85. 'username' => 'required|min:6',
  86. 'name' => 'required',
  87. 'password' => 'sometimes|confirmed',
  88. 'headimg' => 'sometimes',
  89. 'department_id' => 'required',
  90. 'status' => 'required',
  91. ]);
  92. try {
  93. $data = $request->only(['username', 'name', 'password', 'headimg', 'department_id', 'status']);
  94. if (isset($data['password']) && $data['password']) {
  95. $data['password'] = Hash::make($data['password']);
  96. } else {
  97. unset($data['password']);
  98. }
  99. $re = Admin::query()->where('id', login_user_id())->update($data);
  100. if ($re) {
  101. return Response::success(null);
  102. }
  103. return $this->errorFail();
  104. } catch (\Exception $e) {
  105. $this->errorStore($e);
  106. }
  107. }
  108. }