123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- <?php
- namespace App\Http\Controllers\Api\Auth;
- use App\Models\WechatAuth;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Api\ApiBaseController;
- use Illuminate\Support\Facades\Validator;
- use App\Services\Auth\AuthService;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\Session;
- use App\Services\Common\WechatService;
- class AuthController extends ApiBaseController
- {
- /**
- * @var AuthService
- */
- protected $authService;
- private $wechatService;
- /**
- * LoginController constructor.
- * @param AuthService $authService
- * @param WechatService $wechatService
- * @param SmsService $smsService
- * @param GeetestService $geetestService
- */
- public function __construct(
- AuthService $authService,
- WechatService $wechatService
- )
- {
- $this->authService = $authService;
- $this->wechatService = $wechatService;
- }
- public function loginByAccount(Request $request)
- {
- //基础信息的检查
- $rules = [
- 'account' => 'required',
- 'password' => 'required',
- ];
- $messages = [
- 'account.required' => '请输入用户名',
- 'password.required' => '请输入密码',
- ];
- $create_data = $request->all();
- $validator = Validator::make($create_data, $rules, $messages);
- if ($validator->fails()) {
- $msg = $validator->errors()->all();
- return response()->json(['status' => 0, 'msg' => $msg[0]]);
- } else {
- if (!$member = $this->authService->loginByAccount($request->account, $request->password, $request->autoLogin)) {
- return $this->sendErrorResponse("账号或密码错误", []);
- }
- if ($member->status == 0) {
- Auth::guard('api-member')->logout();
- return $this->sendErrorResponse("你的账号处于封禁状态, 请联系管理员");
- }
- return response()->json([
- 'message' => 'Successfully created user!',
- ], 201);
- }
- }
- /**
- * 微信登录中转
- * $state 自定义参数
- * $url 回调地地
- */
- public function wechatAuth(Request $request)
- {
- //获取参数
- $app_id = subsite_config('aix.system.oauth.wechat_official.app_id');
- $redirect_uri = urlencode(route('api.auth.wechat_auth_back'));
- $url = $request->input('url', '');
- if (empty($url)) {
- return response()->json(['status' => 0, 'msg' => '请调写回调地址']);
- }
- $state = $request->input('state', '');
- //存参数
- $auth = WechatAuth::create(['url'=>$url,'state'=>$state]);
- //微信授权
- $wechat_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$app_id}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_userinfo&state={$auth['id']}#wechat_redirect";
- return redirect($wechat_url);
- }
- /**
- * 微信回调
- */
- public function wechatAuthBack(Request $request)
- {
- //微信登录
- $officialAccount = $this->wechatService->getOfficialAccount();
- $wechatUser = $officialAccount->oauth->user()->getOriginal();
- //回调
- $id = $request->input('state');
- $auth = WechatAuth::where('id',$id)->first();
- $wechatUser['state'] = $auth['state'];
- unset($wechatUser['privilege']);
- //循环拼接表单项
- $formItemString = '' ;
- foreach ( $wechatUser as $key => $value ){
- $formItemString .= "<input name='{$key}' type='text' value='{$value}'/>" ;
- }
- //构造表单并跳转
- $content =<<<EOF
- <form style= 'display:none' name= 'submit_form' id= 'submit_form' action= '{$auth["url"]}' method= 'post' >
- { $formItemString }
- </form>
- <script type= "text/javascript" >
- document.submit_form.submit();
- </script>
- EOF;
- exit ( $content );
- }
- public function test(Request $request)
- {
- dd($request->post());
- }
- }
|