123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314 |
- <?php
- namespace App\Http\Controllers\Client;
- use App\Http\Controllers\Controller;
- use App\Http\Requests\Passport\AuthLogin;
- use App\Models\Order;
- use App\Models\Plan;
- use App\Models\User;
- use App\Services\ServerService;
- use App\Services\UserService;
- use App\Utils\ApiResponse;
- use App\Utils\CacheKey;
- use App\Utils\Helper;
- use Facade\FlareClient\Api;
- use Illuminate\Contracts\Foundation\Application;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Cache;
- class ManageController extends Controller
- {
- /**
- * 登录接口
- * @param AuthLogin $request
- * @return false|string
- */
- function login(Request $request)
- {
- $email = $request->input('email');
- $password = $request->input('password');
- if (empty($email)){
- return ApiResponse::apiResponse(400,"邮箱不能为空");
- }
- if (empty($password)){
- return ApiResponse::apiResponse(400,"密码不能为空");
- }
- $user = User::where('email', $email)->first();
- if (!$user) {
- //abort(200, __('Incorrect email or password'));
- return ApiResponse::apiResponse(400,"账号或者密码错误");
- }
- if (!Helper::multiPasswordVerify(
- $user->password_algo,
- $user->password_salt,
- $password,
- $user->password)
- ) {
- return ApiResponse::apiResponse(400,"账号或者密码错误");
- }
- if ($user->banned) {
- // abort(500, __('Your account has been suspended'));
- return ApiResponse::apiResponse(300,"账户已经被禁用");
- }
- $data = [
- 'token' => $user->token,
- 'auth_data' => base64_encode("{$user->email}:{$user->password}")
- ];
- if ($user->is_admin) $data['is_admin'] = true;
- // return response([
- // 'data' => $data
- // ]);
- return ApiResponse::apiResponse(0,"",$data);
- }
- /**
- * 注册接口
- * @return \Illuminate\Http\JsonResponse
- */
- function register(Request $request)
- {
- if ((int)config('v2board.register_limit_by_ip_enable', 0)) {
- $registerCountByIP = Cache::get(CacheKey::get('REGISTER_IP_RATE_LIMIT', $request->ip())) ?? 0;
- if ((int)$registerCountByIP >= (int)config('v2board.register_limit_count', 3)) {
- abort(500, __('Register frequently, please try again after 1 hour'));
- }
- }
- $email = $request->input('email');
- $password = $request->input('password');
- $exist = User::where('email', $email)->first();
- if ($exist) {
- return ApiResponse::apiResponse(400,"账号已经存在");
- }
- $user = new User();
- $user->email = $email;
- $user->password = password_hash($password, PASSWORD_DEFAULT);
- $user->uuid = Helper::guid(true);
- $user->token = Helper::guid();
- // try out
- if ((int)config('v2board.try_out_plan_id', 0)) {
- $plan = Plan::find(config('v2board.try_out_plan_id'));
- if ($plan) {
- $user->transfer_enable = $plan->transfer_enable * 1073741824;
- $user->plan_id = $plan->id;
- $user->group_id = $plan->group_id;
- $user->expired_at = time() + (config('v2board.try_out_hour', 1) * 3600);
- }
- }
- if (!$user->save()) {
- return ApiResponse::apiResponse(400,"注册失败");
- }
- $data = [
- 'token' => $user->token,
- 'auth_data' => base64_encode("{$user->email}:{$user->password}")
- ];
- $user->last_login_at = time();
- $user->save();
- if ((int)config('v2board.register_limit_by_ip_enable', 0)) {
- Cache::put(
- CacheKey::get('REGISTER_IP_RATE_LIMIT', $request->ip()),
- (int)$registerCountByIP + 1,
- (int)config('v2board.register_limit_expire', 60) * 60
- );
- }
- return ApiResponse::apiResponse(0,"注册成功",$data);
- }
- /**
- * 获取我的订阅
- * @param Request $request
- * @return \Illuminate\Http\JsonResponse
- */
- public function getSubscribe(Request $request)
- {
- $user = User::where('id', $request->user['id'])
- ->select([
- 'plan_id',
- 'token',
- 'expired_at',
- 'u',
- 'd',
- 'transfer_enable',
- 'email',
- 'uuid'
- ])
- ->first();
- if (!$user) {
- abort(500, __('The user does not exist'));
- }
- if ($user->plan_id) {
- $user['plan'] = Plan::find($user->plan_id);
- if (!$user['plan']) {
- abort(500, __('Subscription plan does not exist'));
- }
- }
- $model = Order::where('user_id', $request->user['id'])->where("status","=",0)
- ->orderBy('created_at', 'DESC');
- $order = $model->first();
- if (empty($order)){
- $user["paid"] = 0;
- }
- else{
- $user["paid"] = 1;
- }
- $user['subscribe_url'] = Helper::getSubscribeUrl("/api/v1/client/subscribe?token={$user['token']}");
- $userService = new UserService();
- $user['reset_day'] = $userService->getResetDay($user);
- return ApiResponse::apiResponse(0,"",$user);
- }
- /**
- * 获取订阅套餐
- * @param Request $request
- * @return
- */
- public function fetch(Request $request)
- {
- $plan = Plan::where('show', 1)->get();
- return ApiResponse::apiResponse(0,"",$plan);
- }
- /**
- * 获取线路
- * @param Request $request
- * @return \Illuminate\Http\JsonResponse
- */
- public function server(Request $request){
- $user = User::find($request->user['id']);
- $servers = [];
- $userService = new UserService();
- if ($userService->isAvailable($user)) {
- $serverService = new ServerService();
- $servers = $serverService->getAvailableServers($user);
- }
- if (empty($servers)){
- return ApiResponse::apiResponse(400,"获取线路失败");
- }
- return ApiResponse::apiResponse(0,"",$servers);
- }
- public function getQuickLoginUrl(Request $request)
- {
- $authorization = $request->input('auth_data') ?? $request->header('authorization');
- if (!$authorization)
- return ApiResponse::apiResponse(403,"未登录或者登录已经过期");
- $authData = explode(':', base64_decode($authorization));
- if (!isset($authData[0]) || !isset($authData[1]))
- return ApiResponse::apiResponse(403,"请求异常");
- $user = User::where('email', $authData[0])
- ->where('password', $authData[1])
- ->first();
- if (!$user) {
- //abort(500, __('Token error'));
- return ApiResponse::apiResponse(500,"请求异常");
- }
- $code = Helper::guid();
- $key = CacheKey::get('TEMP_TOKEN', $code);
- Cache::put($key, $user->id, 60);
- $redirect = '/#/login?verify=' . $code . '&redirect=' . ($request->input('redirect') ? $request->input('redirect') : 'dashboard');
- if (config('v2board.app_url')) {
- $url = config('v2board.app_url') . $redirect;
- } else {
- $url = url($redirect);
- }
- return ApiResponse::apiResponse(0,"",$url);
- }
- public function getVersion(Request $request)
- {
- $from = $request->input("from");
- $version = $request->input("version");
- $versionData = [
- 'windows_version' => config('v2board.windows_version'),
- 'windows_download_url' => config('v2board.windows_download_url'),
- 'macos_version' => config('v2board.macos_version'),
- 'macos_download_url' => config('v2board.macos_download_url'),
- 'android_version' => config('v2board.android_version'),
- 'android_download_url' => config('v2board.android_download_url')
- ];
- $sVersion = "";
- $sDownloadUrl = "";
- if ($from == "android")
- {
- $sVersion = $versionData["android_version"];
- $sDownloadUrl = $versionData["android_download_url"];
- } else if ($from == "win"){
- $sVersion = $versionData["windows_version"];
- $sDownloadUrl = $versionData["windows_download_url"];
- }
- else if ($from == "macos")
- {
- $sVersion = $versionData["macos_version"];
- $sDownloadUrl = $versionData["macos_download_url"];
- }
- $data = [
- 'version' => $sVersion,
- 'appmsg' => "修复一些bug",
- 'download_url' => $sDownloadUrl,
- ];
- if (version_compare($sVersion,$version,">")){
- //服务器大于客户端
- $data["isUpdate"] = 1;
- return ApiResponse::apiResponse(0,"有更新",$data);
- }
- $data["isUpdate"] = 0;
- return ApiResponse::apiResponse(0,"没有更新",$data);
- }
- public function getUrl(){
- $base_url = "https://lanyun123.cc";
- $path = "/#/";
- $base_url = $base_url . $path;
- $data = [
- "register" => $base_url . "register"
- ];
- return ApiResponse::apiResponse(0,"",$data);
- }
- // private function Token(Request $request){
- // $authorization = $request->input('auth_data') ?? $request->header('authorization');
- // if (!$authorization)
- // return 402;
- //
- // $authData = explode(':', base64_decode($authorization));
- // if (!isset($authData[0]) || !isset($authData[1]))
- // return 403;
- // $user = User::where('email', $authData[0])
- // ->where('password', $authData[1])
- // ->first();
- // if (!$user) {
- // //abort(500, __('Token error'));
- // //return ApiResponse::apiResponse(500,"请求异常");
- // return 404;
- // }
- //
- // return $user;
- // }
- }
|