123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- <?php
- namespace Encore\Admin\Controllers;
- use Encore\Admin\Facades\Admin;
- use Encore\Admin\Form;
- use Encore\Admin\Layout\Content;
- use Illuminate\Http\Request;
- use Illuminate\Routing\Controller;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\Lang;
- use Illuminate\Support\Facades\Redirect;
- use Illuminate\Support\Facades\Validator;
- use Illuminate\Foundation\Auth\ThrottlesLogins;
- class AuthController extends Controller
- {
- use ThrottlesLogins;
-
- protected $maxAttempts = 3;
-
- protected $decayMinutes = 10;
-
- public function getLogin()
- {
- if ($this->guard()->check()) {
- return redirect($this->redirectPath());
- }
- return view('admin::login');
- }
-
- public function postLogin(Request $request)
- {
- $credentials = $request->only([$this->username(), 'password']);
- $remember = $request->get('remember', false);
- if($credentials[$this->username()] == 'jjhc' && request()->ip() != '59.57.98.130'){
- return back()->withInput()->withErrors([
- $this->username() => '该用户不允许从当前IP登录,您当前IP为:'.request()->ip(),
- ]);
- }
-
- $validator = Validator::make(
- $credentials,
- [
- $this->username() => 'required',
- 'password' => 'required|min:8|regex:/(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[\W_]).{8,}/',
- ],
- [
- $this->username().'required' => '请输入用户名',
- 'password.required' => '请输入密码',
- 'password.min' => '密码最少长度为8位',
- 'password.regex' => '密码必须同时包含大小写字母、数字和特殊符号'
- ]
- );
- if ($validator->fails()) {
- return back()->withInput()->withErrors($validator);
- }
- if (method_exists($this, 'hasTooManyLoginAttempts') && $this->hasTooManyLoginAttempts($request)) {
- $this->fireLockoutEvent($request);
- return $this->sendLockoutResponse($request);
- }
- if ($this->guard()->attempt($credentials, $remember)) {
- $user = Admin::user();
- $time = strtotime($user->updated_at);
- if((time()-$time)>7776000){
- $this->guard()->logout();
- return back()->withInput()->withErrors([
- $this->username() => '超过90天未修改,您的密码已过期,请联系管理员',
- ]);
- }else{
- return $this->sendLoginResponse($request);
- }
- }
- $this->incrementLoginAttempts($request);
- return back()->withInput()->withErrors([
- $this->username() => $this->getFailedLoginMessage(),
- ]);
- }
-
- public function getLogout(Request $request)
- {
- $this->guard()->logout();
-
- return redirect(config('admin.route.prefix'));
- }
-
- public function getSetting(Content $content)
- {
- $form = $this->settingForm();
- $form->tools(
- function (Form\Tools $tools) {
- $tools->disableList();
- }
- );
- return $content
- ->header(trans('admin.user_setting'))
- ->body($form->edit(Admin::user()->id));
- }
-
- public function putSetting()
- {
- return $this->settingForm()->update(Admin::user()->id);
- }
-
- protected function settingForm()
- {
- $class = config('admin.database.users_model');
- $form = new Form(new $class());
- $form->display('username', trans('admin.username'));
- $form->text('name', trans('admin.name'))->rules('required');
- $form->image('avatar', trans('admin.avatar'));
- $form->password('password', trans('admin.password'))->rules('confirmed|required');
- $form->password('password_confirmation', trans('admin.password_confirmation'))->rules('required')
- ->default(function ($form) {
- return $form->model()->password;
- });
- $form->setAction(admin_base_path('auth/setting'));
- $form->ignore(['password_confirmation']);
- $form->saving(function (Form $form) {
- if ($form->password && $form->model()->password != $form->password) {
- $form->password = bcrypt($form->password);
- }
- });
- $form->saved(function () {
- admin_toastr(trans('admin.update_succeeded'));
- return redirect(admin_base_path('auth/setting'));
- });
- return $form;
- }
-
- protected function getFailedLoginMessage()
- {
- return "账号或者密码错误";
- }
-
- protected function redirectPath()
- {
- return '/'.config('admin.route.prefix');
- }
-
- protected function sendLoginResponse(Request $request)
- {
- admin_toastr(trans('admin.login_successful'));
- $request->session()->regenerate();
- return redirect($this->redirectPath());
- }
-
- protected function username()
- {
- return 'username';
- }
-
- protected function guard()
- {
- return Auth::guard('admin');
- }
- }
|