AuthController.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Administrator
  5. * Date: 2019-04-29
  6. * Time: 9:54
  7. */
  8. namespace App\Http\Controllers\V1;
  9. use App\ShopAccount;
  10. use Illuminate\Http\Request;
  11. use Illuminate\Support\Facades\Auth;
  12. use Illuminate\Support\Facades\Validator;
  13. use Tymon\JWTAuth\Token;
  14. use Tymon\JWTAuth\Facades\JWTAuth;
  15. use App\Transformers\LoginTransformer;
  16. use League\Fractal\Manager;
  17. use League\Fractal\Resource\Item;
  18. class AuthController extends Controller {
  19. public function __construct(JWTAuth $jwt)
  20. {
  21. }
  22. public function refresh(Request $request)
  23. {
  24. $user = Auth::user();
  25. $user->token = Auth::refresh();
  26. $user->token_ttl = config('jwt.ttl');
  27. $user->is_password = !empty($user->password)?1:0;
  28. $fractal = new Manager();
  29. $res = new Item($user,new LoginTransformer());
  30. $array = $fractal->createData($res)->toArray();
  31. //同一类型登陆只允许登陆一个
  32. return $this->jsonSuccess($array);
  33. }
  34. /**
  35. * 登出
  36. * @return mixed
  37. */
  38. public function logout()
  39. {
  40. Auth::logout();
  41. return $this->jsonSuccess([],'登出成功');
  42. }
  43. //登陆
  44. public function login(Request $request){
  45. $data = $request->all();
  46. $validator = Validator::make($data, [
  47. 'account' => 'required|max:50',
  48. 'password' => 'required|max:32',
  49. ]);
  50. if ($validator->fails()) {
  51. return $this->jsonError($validator->errors()->first());
  52. }
  53. $account = ShopAccount::where('account',$data['account'])->first();
  54. if(!$account){
  55. return $this->jsonError('登录失败,请重试');
  56. }
  57. $token = Auth::attempt(['mobile'=>$request->get('mobile'),'password'=>$request->get('password')]);
  58. if(!$token){
  59. return $this->jsonError('登陆失败');
  60. }else{
  61. $shopAccount = Auth::user();
  62. $shopAccount->token = $token;
  63. $shopAccount->token_ttl = config('jwt.ttl');
  64. //如果有绑定微信,显示微信open_id
  65. $fractal = new Manager();
  66. $res = new Item($shopAccount,new LoginTransformer());
  67. $array = $fractal->createData($res)->toArray();
  68. //日志
  69. return $this->jsonSuccess($array);
  70. }
  71. }
  72. }