AuthController.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. namespace App\Http\Controllers\api\procurement\wechat;
  3. use App\User;
  4. use Firebase\JWT\JWT;
  5. use App\Http\Controllers\Controller;
  6. use Illuminate\Database\Eloquent\Builder;
  7. use Illuminate\Support\Facades\Hash;
  8. class AuthController extends Controller
  9. {
  10. public function login()
  11. {
  12. $phone=request('phone');
  13. $password = request("password");
  14. $user=User::query()->with('roles')
  15. ->whereHas('userDetail',function ($query)use($phone){
  16. /** @var Builder $query */
  17. $query->where('mobile_phone',$phone);
  18. })->whereHas('roles',function ($builder){
  19. /** @var Builder $builder */
  20. $builder->whereIn('name',['供应商','收货员']);
  21. })
  22. ->first();
  23. if (!$user)return response()->json(['status'=>0,'message' => '当前用户不存在!'], 401);
  24. if (!Hash::check($password,$user->password)) return response()->json(['status'=>0,'message' => '很抱歉,您的手机号和密码不匹配'], 401);
  25. $credentials = [
  26. 'id'=>$user->id,
  27. 'name'=>$user->name,
  28. ];
  29. $token = $this->getJWTToken($credentials);
  30. $userType=0;
  31. foreach ($user->roles as $role){
  32. if ($role->name=='供应商')$userType=1;
  33. if ($role->name=='收货员')$userType=2;
  34. }
  35. return response()->json(['status'=>1,'message' => $userType,'data'=>$token], 200);
  36. }
  37. public function me()
  38. {
  39. return response()->json(auth('api')->user());
  40. }
  41. public function getJWTToken($value)
  42. {
  43. $time = time();
  44. $payload = [
  45. 'iat' => $time,
  46. 'nbf' => $time,
  47. 'exp' => $time+7200,
  48. 'data' => [
  49. 'id' => $value['id'],
  50. 'name' => $value['name']
  51. ]
  52. ];
  53. $key = env('JWT_SECRET');
  54. $alg = 'HS256';
  55. $token = JWT::encode($payload,$key,$alg);
  56. return $token;
  57. }
  58. }