PcController.php 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <?php
  2. namespace App\Http\Controllers\Api\Client;
  3. use App\Http\Controllers\ClientController;
  4. use App\Http\Controllers\Controller;
  5. use App\Models\User;
  6. use Arr;
  7. use Auth;
  8. use Illuminate\Http\Request;
  9. use Session;
  10. use Illuminate\Support\Facades\Redis;
  11. use App\Models\Sms;
  12. use Validator;
  13. class PcController extends Controller
  14. {
  15. public function __construct()
  16. {
  17. $this->middleware('auth:api')->except('login', 'register', 'shop', 'getConfig','version','versionwin','buy');
  18. auth()->shouldUse('api');
  19. }
  20. public function login(Request $request)
  21. {
  22. $validator = Validator::make($request->all(), [
  23. 'email' => 'required|string',
  24. 'password' => 'required|string|min:6',
  25. ]);
  26. if ($validator->fails()) {
  27. return response()->json(['ret' => 0, 'msg' => $validator->errors()->all()], 200);
  28. }
  29. $token = Auth::attempt($validator->validated());
  30. if(empty($token)){
  31. return response()->json(['ret' => 0, 'msg' => '登陆错误'], 200);
  32. }
  33. $user = auth()->user();
  34. //判断到期
  35. $expireTime = $user["expired_at"];
  36. if ($expireTime < date('Y-m-d H:i:s')){
  37. return response()->json(['ret' => 445, 'msg' => "用户到期,请即使续费"], 200);
  38. }
  39. $userinfo = $user->profile();
  40. if (empty($userinfo)){
  41. return response()->json(['ret' => 0, 'msg' => "错误"]);
  42. }
  43. // 获取这个账号可用节点
  44. $query = $user->nodes()->whereIsSubscribe(1);
  45. if ($this->subType === 1) {
  46. $query = $query->whereIn('type', [1, 4]);
  47. } elseif ($this->subType) {
  48. $query = $query->whereType($this->subType);
  49. }
  50. $nodeList = $query->orderByDesc('sort')->orderBy('id')->get();
  51. if (empty($nodeList)) {
  52. return $this->failed(trans('error.subscribe.none'));
  53. }
  54. $servers = [];
  55. foreach ($nodeList as $node) {
  56. $servers[] = $node->config($user);
  57. }
  58. $servers = Arr::shuffle($servers);
  59. $clash_config = (new ClientController)->config("clash", $user, $servers);
  60. $data = [
  61. 'ret' => 1,
  62. 'data' => [
  63. 'access_token' => $token,
  64. 'user' => auth()->user()->profile(),
  65. 'affurl' => route('register', ['aff' => Auth::id()]),
  66. 'tutorial' => 'https://ruanjian.xiazi.buzz/',
  67. 'swoftdownload' => 'https://ruanjian.xiazi.buzz/',
  68. 'clash_config' => $clash_config
  69. ]];
  70. return response()->json(['ret' => 1, 'msg' => "请求成功",'data'=>$data], 200);
  71. }
  72. }