AuthController.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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 getJWTToken($value)
  38. {
  39. $time = time();
  40. $payload = [
  41. 'iat' => $time,
  42. 'nbf' => $time,
  43. 'exp' => $time+7200,
  44. 'data' => [
  45. 'id' => $value['id'],
  46. 'name' => $value['name']
  47. ]
  48. ];
  49. $key = env('JWT_SECRET');
  50. $alg = 'HS256';
  51. $token = JWT::encode($payload,$key,$alg);
  52. return $token;
  53. }
  54. }