LoginController.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace App\Http\Controllers\Statistics\Auth;
  3. use App\Http\Controllers\Statistics\StatisticsBaseController;
  4. use App\Services\Statistics\Auth\AuthService;
  5. use App\Validators\AuthValidatorRequest;
  6. use Closure;
  7. use Illuminate\Support\Facades\Auth;
  8. use Encore\Admin\Facades\Admin;
  9. class LoginController extends StatisticsBaseController
  10. {
  11. /**
  12. * @var AuthService
  13. */
  14. protected $authService;
  15. /**
  16. * LoginController constructor.
  17. * @param AuthService $authService
  18. */
  19. public function __construct(AuthService $authService)
  20. {
  21. $this->authService = $authService;
  22. $this->middleware(function ($request, Closure $next) {
  23. if ($request->route()->getName() != 'statistics.logout') {
  24. if (Auth::guard('admin')->check()) {
  25. return redirect(route('statistics.home'));
  26. }
  27. }
  28. return $next($request);
  29. });
  30. }
  31. public function showLoginForm()
  32. {
  33. return view('statistics.app.auth.login');
  34. }
  35. public function loginByAccount(AuthValidatorRequest $request)
  36. {
  37. if (!$member=$this->authService->loginByAccount($request->account, $request->password, $request->autoLogin)) {
  38. return $this->sendErrorResponse("账号或密码错误");
  39. }
  40. $relative_subsites = $this->authService->getUserRelativeSubsites(Admin::user());
  41. if (!Admin::user()->isRole('administrator')) {
  42. if (!Admin::user()->isRole('caiqing')) {
  43. Auth::guard('admin')->logout();
  44. return $this->sendErrorResponse("不是才情管理员账号");
  45. }
  46. //判断登录用户所属分站权限
  47. if (!Admin::user()->canVisitSubsite(get_subsite_id())) {
  48. $relative_subsites = $this->authService->getUserRelativeSubsites(Admin::user());
  49. if (!$relative_subsites) {
  50. Auth::guard('admin')->logout();
  51. return $this->sendErrorResponse("分站管理员没有权限");
  52. }
  53. }
  54. }
  55. session(['caiqing_admin_susbite_id' => Admin::user()->subsite_id]);
  56. session(['caiqing_susbite_id' => Admin::user()->subsite_id]);
  57. session(['caiqing_relative_susbite_ids' => $relative_subsites]);
  58. return $this->sendSuccessResponse(['redirect_url'=>url($request->session()->pull('url.intended', 'statistics.home'))]);
  59. }
  60. public function logout()
  61. {
  62. $this->authService->logout();
  63. return redirect(route('statistics.login'));
  64. }
  65. }