Blame view

app/Http/Controllers/Admin/AdminController.php 5.44 KB
02a1ed535   Андрей Ларионов   Первый коммит Rek...
1
2
3
4
5
6
7
8
9
10
  <?php
  
  namespace App\Http\Controllers\Admin;
  
  use App\Http\Controllers\Controller;
  use App\Models\Employer;
  use App\Models\User;
  use Illuminate\Http\Request;
  use Illuminate\Support\Facades\Auth;
  use Illuminate\Support\Facades\Hash;
8de035475   Андрей Ларионов   Создание: Структу...
11
  use Illuminate\Support\Facades\Validator;
02a1ed535   Андрей Ларионов   Первый коммит Rek...
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
  
  class AdminController extends Controller
  {
      /**
       * Handle the incoming request.
       *
       * @param  \Illuminate\Http\Request  $request
       * @return \Illuminate\Http\Response
       */
      public function __invoke(Request $request)
      {
          //
      }
  
      public function register() {
         return view('admin.register');
      }
  
      public function create(Request $request) {
8de035475   Андрей Ларионов   Создание: Структу...
31
32
  
         $rules = [
02a1ed535   Андрей Ларионов   Первый коммит Rek...
33
34
35
              'name' => 'required|string|max:255',
              'email' => 'required|string|email|max:255|unique:users',
              'password' => 'required|string|min:8|confirmed',
8de035475   Андрей Ларионов   Создание: Структу...
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
          ];
  
          $messages = [
              'required' => 'Укажите обязательное поле «:attribute»',
              'confirmed' => 'Пароли не совпадают',
              'email' => 'Введите корректный email',
              'min' => [
                  'string' => 'Поле «:attribute» должно быть не меньше :min символов',
                  'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт'
              ],
              'max' => [
                  'string' => 'Поле «:attribute» должно быть не больше :max символов',
                  'file' => 'Файл «:attribute» должен быть не больше :max Кбайт'
              ],
          ];
  
          $validator = Validator::make($request->all(), $rules, $messages);
  
          if ($validator->fails()) {
              return back()->withErrors($validator)->withInput();                    //->route('admin.register')
  
          } else {
              $params = $request->all();
  
              User::create([
                  'name' => $request->name,
                  'email' => $request->email,
                  'password' => Hash::make($request->password),
              ]);
              return redirect()
                  ->route('admin.login')
                  ->with('success', 'Вы успешно зарегистрировались');
          }
02a1ed535   Андрей Ларионов   Первый коммит Rek...
69
70
71
72
73
74
75
76
      }
  
      public function login() {
         return view('admin.login');
      }
  
      // Аутентификация
      public function autenticate(Request $request) {
8de035475   Андрей Ларионов   Создание: Структу...
77
78
          //$request->validate(
          $rules = [
02a1ed535   Андрей Ларионов   Первый коммит Rek...
79
80
              'email' => 'required|string|email',
              'password' => 'required|string',
8de035475   Андрей Ларионов   Создание: Структу...
81
          ];
02a1ed535   Андрей Ларионов   Первый коммит Rek...
82

8de035475   Андрей Ларионов   Создание: Структу...
83
84
85
86
87
88
89
90
91
92
93
94
          $messages = [
              'required' => 'Укажите обязательное поле «:attribute»',
              'email' => 'Введите корректный email',
              'min' => [
                  'string' => 'Поле «:attribute» должно быть не меньше :min символов',
                  'file' => 'Файл «:attribute» должен быть не меньше :min Кбайт'
              ],
              'max' => [
                  'string' => 'Поле «:attribute» должно быть не больше :max символов',
                  'file' => 'Файл «:attribute» должен быть не больше :max Кбайт'
              ],
          ];
02a1ed535   Андрей Ларионов   Первый коммит Rek...
95

02a1ed535   Андрей Ларионов   Первый коммит Rek...
96

8de035475   Андрей Ларионов   Создание: Структу...
97
          $validator = Validator::make($request->all(), $rules, $messages);
02a1ed535   Андрей Ларионов   Первый коммит Rek...
98

8de035475   Андрей Ларионов   Создание: Структу...
99
100
          if ($validator->fails()) {
              return back()->withErrors($validator)->withInput();
02a1ed535   Андрей Ларионов   Первый коммит Rek...
101

8de035475   Андрей Ларионов   Создание: Структу...
102
          } else {
02a1ed535   Андрей Ларионов   Первый коммит Rek...
103

8de035475   Андрей Ларионов   Создание: Структу...
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
              $credentials = $request->only('email', 'password');
  
              if (Auth::attempt($credentials, $request->has('remember'))) {
  
                  if (is_null(Auth::user()->email_verified_at)) {
                      Auth::logout();
                      return back()->withErrors('Адрес почты не подтвержден')->withInput();
                  }
  
                  if (!Auth::user()->admin) {
                      Auth::logout();
                      return //redirect()->route('admin.login')
                          back()->withErrors('Вы не являетесь админом!')->withInput();;
  
                  }
  
                  return redirect()
                      ->route('admin.index')
                      ->with('success', 'Вы вошли в личный кабинет.');
              }
02a1ed535   Андрей Ларионов   Первый коммит Rek...
124
125
126
127
          }
  
          return redirect()
              ->route('admin.login')
8de035475   Андрей Ларионов   Создание: Структу...
128
              ->withErrors('Неверный логин или пароль!')->withInput();
02a1ed535   Андрей Ларионов   Первый коммит Rek...
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
      }
  
      public function logout() {
          Auth::logout();
          return redirect()->route('index')
              ->with('success', 'Вы вышли из личного кабинета');
      }
  
      public function index() {
          $all_user = User::query()->count();
          $all_employer = User::where('is_worker', '0')->count();
          $all_worker = User::where('is_worker', '1')->count();
          $all_admin = User::where('admin', '1')->count();
          return view('admin.index', compact('all_employer', 'all_user', 'all_worker', 'all_admin'));
      }
8de035475   Андрей Ларионов   Создание: Структу...
144
145
146
147
148
149
150
151
      public function index_admin(Request $request) {
          if ($request->ajax()) {
              $user = User::find($request->id);
              $request->offsetUnset('id');
              $user->update($request->all());
          }
  
          $users = User::where('admin', '1')->paginate(15);
02a1ed535   Андрей Ларионов   Первый коммит Rek...
152

8de035475   Андрей Ларионов   Создание: Структу...
153
154
155
156
157
158
          if ($request->ajax()) {
              return view('admin.users.index_ajax', compact('users'));
          } else {
              return view('admin.users.index', compact('users'));
          }
      }
02a1ed535   Андрей Ларионов   Первый коммит Rek...
159
160
  
  }