AuthController.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <?php
  2. namespace App\Distributor\Controllers;
  3. use App\Models\DistAdminDistributor;
  4. use Dcat\Admin\Http\Controllers\AuthController as BaseAuthController;
  5. use Dcat\Admin\Admin;
  6. use Dcat\Admin\Form;
  7. use Dcat\Admin\Http\Repositories\Administrator;
  8. use Dcat\Admin\Layout\Content;
  9. use Illuminate\Http\Request;
  10. use Illuminate\Support\Facades\Validator;
  11. use Illuminate\Support\Facades\Session;
  12. class AuthController extends BaseAuthController
  13. {
  14. protected $view = 'distributor.pages.login';
  15. /**
  16. * Login interface.重写登录接口
  17. * @param Request $request
  18. * @return
  19. */
  20. public function postLogin(Request $request)
  21. {
  22. $credentials = $request->only([$this->username(), 'password']);
  23. $remember = (bool) $request->input('remember', false);
  24. /** @var \Illuminate\Validation\Validator $validator */
  25. $validator = Validator::make($credentials, [
  26. $this->username() => 'required',
  27. 'password' => 'required',
  28. ]);
  29. if ($validator->fails()) {
  30. return $this->validationErrorsResponse($validator);
  31. }
  32. if ($this->guard()->attempt($credentials, $remember)) {
  33. //登录成功后从dist_admin_distributor表中取出当前登录用户的公司信息
  34. $distributor = DistAdminDistributor::where('id', Admin::user()->dist_id)->first();
  35. if (!$distributor) {
  36. $this->guard()->logout();
  37. return $this->validationErrorsResponse([
  38. $this->username() => $this->getFailedLoginMessage(),
  39. ]);
  40. }
  41. //将当前登录用户的公司信息存入session
  42. Session::put('distributor', $distributor->toArray());
  43. // 登录成功后返回登录响应
  44. return $this->sendLoginResponse($request);
  45. }
  46. return $this->validationErrorsResponse([
  47. $this->username() => $this->getFailedLoginMessage(),
  48. ]);
  49. }
  50. public function getSetting(Content $content)
  51. {
  52. $form = $this->settingForm();
  53. $form->tools(
  54. function (Form\Tools $tools) {
  55. $tools->disableList();
  56. }
  57. );
  58. return $content
  59. ->view('distributor.layouts.content')
  60. ->title(trans('admin.user_setting'))
  61. ->body($form->edit(Admin::user()->getKey()));
  62. }
  63. /**
  64. * Model-form for user setting.
  65. *
  66. * @return Form
  67. */
  68. protected function settingForm()
  69. {
  70. return new Form(new Administrator(), function (Form $form) {
  71. $form->action(admin_url('auth/setting'));
  72. $form->disableCreatingCheck();
  73. $form->disableEditingCheck();
  74. $form->disableViewCheck();
  75. $form->tools(function (Form\Tools $tools) {
  76. $tools->disableView();
  77. $tools->disableDelete();
  78. });
  79. $form->display('username', trans('admin.username'));
  80. $form->text('name', trans('admin.name'))->required();
  81. //$form->image('avatar', trans('admin.avatar'))->autoUpload();
  82. $form->password('old_password', trans('admin.old_password'));
  83. $form->password('password', trans('admin.password'))
  84. ->minLength(5)
  85. ->maxLength(20)
  86. ->customFormat(function ($v) {
  87. if ($v == $this->password) {
  88. return;
  89. }
  90. return $v;
  91. });
  92. $form->password('password_confirmation', trans('admin.password_confirmation'))->same('password');
  93. $form->ignore(['password_confirmation', 'old_password']);
  94. // 添加语言选择的下拉框
  95. $form->select('language', trans('admin.language'))
  96. ->options(config('dictionary.languages'))
  97. ->default('en')
  98. ->required();; // 设置默认语言
  99. $form->saving(function (Form $form) {
  100. if ($form->password && $form->model()->password != $form->password) {
  101. $form->password = bcrypt($form->password);
  102. }
  103. if (! $form->password) {
  104. $form->deleteInput('password');
  105. }
  106. });
  107. $form->saved(function (Form $form) {
  108. return $form
  109. ->response()
  110. ->success(trans('admin.update_succeeded'))
  111. //->redirect('/');
  112. ->script('location.reload();');//保存成功后刷新页面
  113. });
  114. // // 在从数据库中取出记录时,如果 language 为空,则默认给它一个值
  115. // $form->model()->language = $form->model()->language ?: 'en';
  116. });
  117. }
  118. protected function sendLoginResponse(Request $request)
  119. {
  120. $request->session()->regenerate();
  121. $path = $this->getRedirectPath();
  122. return $this->response()
  123. ->success(trans('admin.login_successful'))
  124. ->locationToIntended($path)
  125. ->locationIf(Admin::app()->getEnabledApps(), $path)
  126. ->send();
  127. }
  128. }