Commit c5118e5f36e65b1a21919a6850f241f8a4aa3d28
1 parent
b80175387c
Exists in
master
Админка сайта - все таблицы
Showing 26 changed files with 1780 additions and 2 deletions Inline Diff
- app/Http/Controllers/Admin/BannerController.php
- app/Http/Controllers/Admin/CategoryController.php
- app/Http/Controllers/Admin/CompanyController.php
- app/Http/Controllers/Admin/GoodController.php
- app/Http/Controllers/Admin/NewsController.php
- app/Http/Controllers/Admin/ProjectController.php
- app/Http/Controllers/AdminController.php
- app/Http/Controllers/LoginController.php
- app/Http/Controllers/RegisterController.php
- app/Http/Middleware/Authenticate.php
- app/Http/Middleware/RedirectIfAuthenticated.php
- app/Models/Banner.php
- public/css/style_table.css
- resources/views/admin/banners/create.blade.php
- resources/views/admin/banners/edit.blade.php
- resources/views/admin/banners/form.blade.php
- resources/views/admin/banners/index.blade.php
- resources/views/admin/profile.blade.php
- resources/views/auth/login.blade.php
- resources/views/auth/register.blade.php
- resources/views/auth/test.blade.php
- resources/views/auth/verify-message.blade.php
- resources/views/catalogs/paginate.blade.php
- resources/views/layout/admin.blade.php
- resources/views/user/cabinet.blade.php
- routes/web.php
app/Http/Controllers/Admin/BannerController.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Controllers\Admin; | ||
4 | |||
5 | use App\Http\Controllers\Controller; | ||
6 | use App\Models\Banner; | ||
7 | use Illuminate\Database\Eloquent\Model; | ||
8 | use Illuminate\Http\Request; | ||
9 | use Illuminate\Support\Facades\Storage; | ||
10 | use Illuminate\Support\Facades\Validator; | ||
11 | |||
12 | class BannerController extends Controller | ||
13 | { | ||
14 | /** | ||
15 | * Display a listing of the resource. | ||
16 | * | ||
17 | * @return \Illuminate\Http\Response | ||
18 | */ | ||
19 | public function index() | ||
20 | { | ||
21 | $banners = Banner::query()->orderBy('id')->paginate(5); | ||
22 | return view('admin.banners.index', compact('banners')); | ||
23 | } | ||
24 | |||
25 | /** | ||
26 | * Show the form for creating a new resource. | ||
27 | * | ||
28 | * @return \Illuminate\Http\Response | ||
29 | */ | ||
30 | public function create() | ||
31 | { | ||
32 | return view('admin.banners.create'); | ||
33 | } | ||
34 | |||
35 | /** | ||
36 | * Store a newly created resource in storage. | ||
37 | * | ||
38 | * @param \Illuminate\Http\Request $request | ||
39 | * @return \Illuminate\Http\Response | ||
40 | */ | ||
41 | public function store(Request $request) | ||
42 | { | ||
43 | $rules = [ | ||
44 | 'image' => 'required|min:3|max:10000', | ||
45 | 'title' => 'required|min:3|max:255' | ||
46 | ]; | ||
47 | $messages = [ | ||
48 | 'required' => 'Поле не может быть пустым!', | ||
49 | ]; | ||
50 | $validator = Validator::make($request->all(), $rules, $messages); | ||
51 | |||
52 | if ($validator->fails()) { | ||
53 | return redirect()->route('admin.banner.create') | ||
54 | ->withErrors($validator); | ||
55 | } else { | ||
56 | |||
57 | $banner = new Banner(); | ||
58 | $banner->title = $request->title; | ||
59 | $banner->text = $request->text; | ||
60 | $banner->image = $request->file('image')->store('banners', 'public'); | ||
61 | $banner->save(); | ||
62 | |||
63 | //$area->fotos()->save($foto_area); | ||
64 | return redirect()->route('admin.banner.index'); | ||
65 | } | ||
66 | } | ||
67 | |||
68 | /** | ||
69 | * Display the specified resource. | ||
70 | * | ||
71 | * @param \App\Models\Banner $banner | ||
72 | * @return \Illuminate\Http\Response | ||
73 | */ | ||
74 | public function show(Banner $banner) | ||
75 | { | ||
76 | // | ||
77 | } | ||
78 | |||
79 | /** | ||
80 | * Show the form for editing the specified resource. | ||
81 | * | ||
82 | * @param \App\Models\Banner $banner | ||
83 | * @return \Illuminate\Http\Response | ||
84 | */ | ||
85 | public function edit(Banner $banner) | ||
86 | { | ||
87 | return view('admin.banners.edit', compact($banner)); | ||
88 | } | ||
89 | |||
90 | /** | ||
91 | * Update the specified resource in storage. | ||
92 | * | ||
93 | * @param \Illuminate\Http\Request $request | ||
94 | * @param \App\Models\Banner $banner | ||
95 | * @return \Illuminate\Http\Response | ||
96 | */ | ||
97 | public function update(Request $request, Banner $banner) | ||
98 | { | ||
99 | $rules = [ | ||
100 | 'image' => 'required|min:3|max:10000', | ||
101 | 'title' => 'required|min:3|max:255' | ||
102 | ]; | ||
103 | $messages = [ | ||
104 | 'required' => 'Поле не может быть пустым!', | ||
105 | ]; | ||
106 | $validator = Validator::make($request->all(), $rules, $messages); | ||
107 | |||
108 | if ($validator->fails()) { | ||
109 | return redirect()->route('admin.banner.edit') | ||
110 | ->withErrors($validator); | ||
111 | } else { | ||
112 | $params = $request->all(); | ||
113 | unset($params['image']); | ||
114 | if ($request->has('image')) { | ||
115 | Storage::delete($banner->image); | ||
116 | $params['image'] = $request->file('image')->store('banners', 'public'); | ||
117 | } | ||
118 | |||
119 | $banner->update($params); | ||
120 | return redirect()->route('admin.banner.index'); | ||
121 | } | ||
122 | } | ||
123 | |||
124 | /** | ||
125 | * Remove the specified resource from storage. | ||
126 | * | ||
127 | * @param \App\Models\Banner $banner | ||
128 | * @return \Illuminate\Http\Response | ||
129 | */ | ||
130 | public function destroy(Banner $banner) | ||
131 | { | ||
132 | if (!empty($banner->image)) { | ||
133 | Storage::delete($banner->image); | ||
134 | } | ||
135 | $image->delete(); | ||
136 | return redirect()->route('admin.banner.index'); | ||
137 | } | ||
138 | } | ||
139 |
app/Http/Controllers/Admin/CategoryController.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Controllers\Admin; | ||
4 | |||
5 | use App\Http\Controllers\Controller; | ||
6 | use App\Models\Category; | ||
7 | use Illuminate\Http\Request; | ||
8 | |||
9 | class CategoryController extends Controller | ||
10 | { | ||
11 | /** | ||
12 | * Display a listing of the resource. | ||
13 | * | ||
14 | * @return \Illuminate\Http\Response | ||
15 | */ | ||
16 | public function index() | ||
17 | { | ||
18 | // | ||
19 | } | ||
20 | |||
21 | /** | ||
22 | * Show the form for creating a new resource. | ||
23 | * | ||
24 | * @return \Illuminate\Http\Response | ||
25 | */ | ||
26 | public function create() | ||
27 | { | ||
28 | // | ||
29 | } | ||
30 | |||
31 | /** | ||
32 | * Store a newly created resource in storage. | ||
33 | * | ||
34 | * @param \Illuminate\Http\Request $request | ||
35 | * @return \Illuminate\Http\Response | ||
36 | */ | ||
37 | public function store(Request $request) | ||
38 | { | ||
39 | // | ||
40 | } | ||
41 | |||
42 | /** | ||
43 | * Display the specified resource. | ||
44 | * | ||
45 | * @param \App\Models\Category $category | ||
46 | * @return \Illuminate\Http\Response | ||
47 | */ | ||
48 | public function show(Category $category) | ||
49 | { | ||
50 | // | ||
51 | } | ||
52 | |||
53 | /** | ||
54 | * Show the form for editing the specified resource. | ||
55 | * | ||
56 | * @param \App\Models\Category $category | ||
57 | * @return \Illuminate\Http\Response | ||
58 | */ | ||
59 | public function edit(Category $category) | ||
60 | { | ||
61 | // | ||
62 | } | ||
63 | |||
64 | /** | ||
65 | * Update the specified resource in storage. | ||
66 | * | ||
67 | * @param \Illuminate\Http\Request $request | ||
68 | * @param \App\Models\Category $category | ||
69 | * @return \Illuminate\Http\Response | ||
70 | */ | ||
71 | public function update(Request $request, Category $category) | ||
72 | { | ||
73 | // | ||
74 | } | ||
75 | |||
76 | /** | ||
77 | * Remove the specified resource from storage. | ||
78 | * | ||
79 | * @param \App\Models\Category $category | ||
80 | * @return \Illuminate\Http\Response | ||
81 | */ | ||
82 | public function destroy(Category $category) | ||
83 | { | ||
84 | // | ||
85 | } | ||
86 | } | ||
87 |
app/Http/Controllers/Admin/CompanyController.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Controllers\Admin; | ||
4 | |||
5 | use App\Http\Controllers\Controller; | ||
6 | use App\Models\Company; | ||
7 | use Illuminate\Http\Request; | ||
8 | |||
9 | class CompanyController extends Controller | ||
10 | { | ||
11 | /** | ||
12 | * Display a listing of the resource. | ||
13 | * | ||
14 | * @return \Illuminate\Http\Response | ||
15 | */ | ||
16 | public function index() | ||
17 | { | ||
18 | // | ||
19 | } | ||
20 | |||
21 | /** | ||
22 | * Show the form for creating a new resource. | ||
23 | * | ||
24 | * @return \Illuminate\Http\Response | ||
25 | */ | ||
26 | public function create() | ||
27 | { | ||
28 | // | ||
29 | } | ||
30 | |||
31 | /** | ||
32 | * Store a newly created resource in storage. | ||
33 | * | ||
34 | * @param \Illuminate\Http\Request $request | ||
35 | * @return \Illuminate\Http\Response | ||
36 | */ | ||
37 | public function store(Request $request) | ||
38 | { | ||
39 | // | ||
40 | } | ||
41 | |||
42 | /** | ||
43 | * Display the specified resource. | ||
44 | * | ||
45 | * @param \App\Models\Company $company | ||
46 | * @return \Illuminate\Http\Response | ||
47 | */ | ||
48 | public function show(Company $company) | ||
49 | { | ||
50 | // | ||
51 | } | ||
52 | |||
53 | /** | ||
54 | * Show the form for editing the specified resource. | ||
55 | * | ||
56 | * @param \App\Models\Company $company | ||
57 | * @return \Illuminate\Http\Response | ||
58 | */ | ||
59 | public function edit(Company $company) | ||
60 | { | ||
61 | // | ||
62 | } | ||
63 | |||
64 | /** | ||
65 | * Update the specified resource in storage. | ||
66 | * | ||
67 | * @param \Illuminate\Http\Request $request | ||
68 | * @param \App\Models\Company $company | ||
69 | * @return \Illuminate\Http\Response | ||
70 | */ | ||
71 | public function update(Request $request, Company $company) | ||
72 | { | ||
73 | // | ||
74 | } | ||
75 | |||
76 | /** | ||
77 | * Remove the specified resource from storage. | ||
78 | * | ||
79 | * @param \App\Models\Company $company | ||
80 | * @return \Illuminate\Http\Response | ||
81 | */ | ||
82 | public function destroy(Company $company) | ||
83 | { | ||
84 | // | ||
85 | } | ||
86 | } | ||
87 |
app/Http/Controllers/Admin/GoodController.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Controllers\Admin; | ||
4 | |||
5 | use App\Http\Controllers\Controller; | ||
6 | use App\Models\Good; | ||
7 | use Illuminate\Http\Request; | ||
8 | |||
9 | class GoodController extends Controller | ||
10 | { | ||
11 | /** | ||
12 | * Display a listing of the resource. | ||
13 | * | ||
14 | * @return \Illuminate\Http\Response | ||
15 | */ | ||
16 | public function index() | ||
17 | { | ||
18 | // | ||
19 | } | ||
20 | |||
21 | /** | ||
22 | * Show the form for creating a new resource. | ||
23 | * | ||
24 | * @return \Illuminate\Http\Response | ||
25 | */ | ||
26 | public function create() | ||
27 | { | ||
28 | // | ||
29 | } | ||
30 | |||
31 | /** | ||
32 | * Store a newly created resource in storage. | ||
33 | * | ||
34 | * @param \Illuminate\Http\Request $request | ||
35 | * @return \Illuminate\Http\Response | ||
36 | */ | ||
37 | public function store(Request $request) | ||
38 | { | ||
39 | // | ||
40 | } | ||
41 | |||
42 | /** | ||
43 | * Display the specified resource. | ||
44 | * | ||
45 | * @param \App\Models\Good $good | ||
46 | * @return \Illuminate\Http\Response | ||
47 | */ | ||
48 | public function show(Good $good) | ||
49 | { | ||
50 | // | ||
51 | } | ||
52 | |||
53 | /** | ||
54 | * Show the form for editing the specified resource. | ||
55 | * | ||
56 | * @param \App\Models\Good $good | ||
57 | * @return \Illuminate\Http\Response | ||
58 | */ | ||
59 | public function edit(Good $good) | ||
60 | { | ||
61 | // | ||
62 | } | ||
63 | |||
64 | /** | ||
65 | * Update the specified resource in storage. | ||
66 | * | ||
67 | * @param \Illuminate\Http\Request $request | ||
68 | * @param \App\Models\Good $good | ||
69 | * @return \Illuminate\Http\Response | ||
70 | */ | ||
71 | public function update(Request $request, Good $good) | ||
72 | { | ||
73 | // | ||
74 | } | ||
75 | |||
76 | /** | ||
77 | * Remove the specified resource from storage. | ||
78 | * | ||
79 | * @param \App\Models\Good $good | ||
80 | * @return \Illuminate\Http\Response | ||
81 | */ | ||
82 | public function destroy(Good $good) | ||
83 | { | ||
84 | // | ||
85 | } | ||
86 | } | ||
87 |
app/Http/Controllers/Admin/NewsController.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Controllers\Admin; | ||
4 | |||
5 | use App\Http\Controllers\Controller; | ||
6 | use App\Models\News; | ||
7 | use Illuminate\Http\Request; | ||
8 | |||
9 | class NewsController extends Controller | ||
10 | { | ||
11 | /** | ||
12 | * Display a listing of the resource. | ||
13 | * | ||
14 | * @return \Illuminate\Http\Response | ||
15 | */ | ||
16 | public function index() | ||
17 | { | ||
18 | // | ||
19 | } | ||
20 | |||
21 | /** | ||
22 | * Show the form for creating a new resource. | ||
23 | * | ||
24 | * @return \Illuminate\Http\Response | ||
25 | */ | ||
26 | public function create() | ||
27 | { | ||
28 | // | ||
29 | } | ||
30 | |||
31 | /** | ||
32 | * Store a newly created resource in storage. | ||
33 | * | ||
34 | * @param \Illuminate\Http\Request $request | ||
35 | * @return \Illuminate\Http\Response | ||
36 | */ | ||
37 | public function store(Request $request) | ||
38 | { | ||
39 | // | ||
40 | } | ||
41 | |||
42 | /** | ||
43 | * Display the specified resource. | ||
44 | * | ||
45 | * @param \App\Models\News $news | ||
46 | * @return \Illuminate\Http\Response | ||
47 | */ | ||
48 | public function show(News $news) | ||
49 | { | ||
50 | // | ||
51 | } | ||
52 | |||
53 | /** | ||
54 | * Show the form for editing the specified resource. | ||
55 | * | ||
56 | * @param \App\Models\News $news | ||
57 | * @return \Illuminate\Http\Response | ||
58 | */ | ||
59 | public function edit(News $news) | ||
60 | { | ||
61 | // | ||
62 | } | ||
63 | |||
64 | /** | ||
65 | * Update the specified resource in storage. | ||
66 | * | ||
67 | * @param \Illuminate\Http\Request $request | ||
68 | * @param \App\Models\News $news | ||
69 | * @return \Illuminate\Http\Response | ||
70 | */ | ||
71 | public function update(Request $request, News $news) | ||
72 | { | ||
73 | // | ||
74 | } | ||
75 | |||
76 | /** | ||
77 | * Remove the specified resource from storage. | ||
78 | * | ||
79 | * @param \App\Models\News $news | ||
80 | * @return \Illuminate\Http\Response | ||
81 | */ | ||
82 | public function destroy(News $news) | ||
83 | { | ||
84 | // | ||
85 | } | ||
86 | } | ||
87 |
app/Http/Controllers/Admin/ProjectController.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Controllers\Admin; | ||
4 | |||
5 | use App\Http\Controllers\Controller; | ||
6 | use App\Models\Project; | ||
7 | use Illuminate\Http\Request; | ||
8 | |||
9 | class ProjectController extends Controller | ||
10 | { | ||
11 | /** | ||
12 | * Display a listing of the resource. | ||
13 | * | ||
14 | * @return \Illuminate\Http\Response | ||
15 | */ | ||
16 | public function index() | ||
17 | { | ||
18 | // | ||
19 | } | ||
20 | |||
21 | /** | ||
22 | * Show the form for creating a new resource. | ||
23 | * | ||
24 | * @return \Illuminate\Http\Response | ||
25 | */ | ||
26 | public function create() | ||
27 | { | ||
28 | // | ||
29 | } | ||
30 | |||
31 | /** | ||
32 | * Store a newly created resource in storage. | ||
33 | * | ||
34 | * @param \Illuminate\Http\Request $request | ||
35 | * @return \Illuminate\Http\Response | ||
36 | */ | ||
37 | public function store(Request $request) | ||
38 | { | ||
39 | // | ||
40 | } | ||
41 | |||
42 | /** | ||
43 | * Display the specified resource. | ||
44 | * | ||
45 | * @param \App\Models\Project $project | ||
46 | * @return \Illuminate\Http\Response | ||
47 | */ | ||
48 | public function show(Project $project) | ||
49 | { | ||
50 | // | ||
51 | } | ||
52 | |||
53 | /** | ||
54 | * Show the form for editing the specified resource. | ||
55 | * | ||
56 | * @param \App\Models\Project $project | ||
57 | * @return \Illuminate\Http\Response | ||
58 | */ | ||
59 | public function edit(Project $project) | ||
60 | { | ||
61 | // | ||
62 | } | ||
63 | |||
64 | /** | ||
65 | * Update the specified resource in storage. | ||
66 | * | ||
67 | * @param \Illuminate\Http\Request $request | ||
68 | * @param \App\Models\Project $project | ||
69 | * @return \Illuminate\Http\Response | ||
70 | */ | ||
71 | public function update(Request $request, Project $project) | ||
72 | { | ||
73 | // | ||
74 | } | ||
75 | |||
76 | /** | ||
77 | * Remove the specified resource from storage. | ||
78 | * | ||
79 | * @param \App\Models\Project $project | ||
80 | * @return \Illuminate\Http\Response | ||
81 | */ | ||
82 | public function destroy(Project $project) | ||
83 | { | ||
84 | // | ||
85 | } | ||
86 | } | ||
87 |
app/Http/Controllers/AdminController.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Controllers; | ||
4 | |||
5 | use Illuminate\Http\Request; | ||
6 | |||
7 | class AdminController extends Controller | ||
8 | { | ||
9 | public function index() { | ||
10 | return view('user.cabinet'); | ||
11 | } | ||
12 | } | ||
13 |
app/Http/Controllers/LoginController.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Controllers; | ||
4 | |||
5 | use Illuminate\Http\Request; | ||
6 | use Illuminate\Support\Facades\Auth; | ||
7 | |||
8 | class LoginController extends Controller | ||
9 | { | ||
10 | public function __construct() { | ||
11 | $this->middleware('guest')->except('logout'); | ||
12 | } | ||
13 | |||
14 | //Форма входа | ||
15 | public function login() { | ||
16 | return view('auth.login'); | ||
17 | } | ||
18 | |||
19 | // Аутентификация | ||
20 | public function autenticate(Request $request) { | ||
21 | $request->validate([ | ||
22 | 'email' => 'required|string|email', | ||
23 | 'password' => 'required|string', | ||
24 | ]); | ||
25 | |||
26 | $credentials = $request->only('email', 'password'); | ||
27 | |||
28 | if (Auth::attempt($credentials, $request->has('remember'))) { | ||
29 | if (is_null(Auth::user()->email_verified_at)){ | ||
30 | Auth::logout(); | ||
31 | return redirect() | ||
32 | ->route('auth.vefiry-message') | ||
33 | ->withErrors('Адрес почты не подтвержден'); | ||
34 | } | ||
35 | |||
36 | return redirect() | ||
37 | ->route('user.index') | ||
38 | ->with('success', 'Вы вошли в личный кабинет.'); | ||
39 | } | ||
40 | |||
41 | return redirect() | ||
42 | ->route('auth.login') | ||
43 | ->withErrors('Неверный логин или пароль!'); | ||
44 | } | ||
45 | |||
46 | // Выход | ||
47 | public function logout() { | ||
48 | Auth::logout(); | ||
49 | return redirect()->route('index') | ||
50 | ->with('success', 'Вы вышли из личного кабинета'); | ||
51 | } | ||
52 | } | ||
53 |
app/Http/Controllers/RegisterController.php
File was created | 1 | <?php | |
2 | |||
3 | namespace App\Http\Controllers; | ||
4 | |||
5 | use App\Models\User; | ||
6 | use Illuminate\Http\Request; | ||
7 | use Illuminate\Support\Facades\Hash; | ||
8 | |||
9 | class RegisterController extends Controller | ||
10 | { | ||
11 | public function __construct() { | ||
12 | $this->middleware('guest'); | ||
13 | } | ||
14 | |||
15 | // Форма регистрации | ||
16 | public function register() { | ||
17 | return view('auth.register'); | ||
18 | } | ||
19 | |||
20 | // Создание пользователя | ||
21 | public function create(Request $request) { | ||
22 | $request->validate([ | ||
23 | 'name' => 'required|string|max:255', | ||
24 | 'email' => 'required|string|email|max:255|unique:users', | ||
25 | 'password' => 'required|string|min:8|confirmed', | ||
26 | ]); | ||
27 | |||
28 | User::create([ | ||
29 | 'name' => $request->name, | ||
30 | 'email' => $request->email, | ||
31 | 'password' => Hash::make($request->password), | ||
32 | ]); | ||
33 | |||
34 | return redirect() | ||
35 | ->route('auth.login') | ||
36 | ->with('success', 'Вы успешно зарегистрировались'); | ||
37 | } | ||
38 | } | ||
39 |
app/Http/Middleware/Authenticate.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Http\Middleware; | 3 | namespace App\Http\Middleware; |
4 | 4 | ||
5 | use Illuminate\Auth\Middleware\Authenticate as Middleware; | 5 | use Illuminate\Auth\Middleware\Authenticate as Middleware; |
6 | 6 | ||
7 | class Authenticate extends Middleware | 7 | class Authenticate extends Middleware |
8 | { | 8 | { |
9 | /** | 9 | /** |
10 | * Get the path the user should be redirected to when they are not authenticated. | 10 | * Get the path the user should be redirected to when they are not authenticated. |
11 | * | 11 | * |
12 | * @param \Illuminate\Http\Request $request | 12 | * @param \Illuminate\Http\Request $request |
13 | * @return string|null | 13 | * @return string|null |
14 | */ | 14 | */ |
15 | protected function redirectTo($request) | 15 | protected function redirectTo($request) |
16 | { | 16 | { |
17 | if (! $request->expectsJson()) { | 17 | if (! $request->expectsJson()) { |
18 | return route('login'); | 18 | return route('auth.login'); |
19 | } | 19 | } |
20 | } | 20 | } |
21 | } | 21 | } |
22 | 22 |
app/Http/Middleware/RedirectIfAuthenticated.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Http\Middleware; | 3 | namespace App\Http\Middleware; |
4 | 4 | ||
5 | use App\Providers\RouteServiceProvider; | 5 | use App\Providers\RouteServiceProvider; |
6 | use Closure; | 6 | use Closure; |
7 | use Illuminate\Http\Request; | 7 | use Illuminate\Http\Request; |
8 | use Illuminate\Support\Facades\Auth; | 8 | use Illuminate\Support\Facades\Auth; |
9 | 9 | ||
10 | class RedirectIfAuthenticated | 10 | class RedirectIfAuthenticated |
11 | { | 11 | { |
12 | /** | 12 | /** |
13 | * Handle an incoming request. | 13 | * Handle an incoming request. |
14 | * | 14 | * |
15 | * @param \Illuminate\Http\Request $request | 15 | * @param \Illuminate\Http\Request $request |
16 | * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next | 16 | * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next |
17 | * @param string|null ...$guards | 17 | * @param string|null ...$guards |
18 | * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse | 18 | * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse |
19 | */ | 19 | */ |
20 | public function handle(Request $request, Closure $next, ...$guards) | 20 | public function handle(Request $request, Closure $next, ...$guards) |
21 | { | 21 | { |
22 | $guards = empty($guards) ? [null] : $guards; | 22 | $guards = empty($guards) ? [null] : $guards; |
23 | 23 | ||
24 | foreach ($guards as $guard) { | 24 | foreach ($guards as $guard) { |
25 | if (Auth::guard($guard)->check()) { | 25 | if (Auth::guard($guard)->check()) { |
26 | return redirect(RouteServiceProvider::HOME); | 26 | //return redirect(RouteServiceProvider::HOME); |
27 | return redirect()->route('user.index'); | ||
27 | } | 28 | } |
28 | } | 29 | } |
29 | 30 | ||
30 | return $next($request); | 31 | return $next($request); |
31 | } | 32 | } |
32 | } | 33 | } |
33 | 34 |
app/Models/Banner.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | namespace App\Models; | 3 | namespace App\Models; |
4 | 4 | ||
5 | use Illuminate\Database\Eloquent\Factories\HasFactory; | 5 | use Illuminate\Database\Eloquent\Factories\HasFactory; |
6 | use Illuminate\Database\Eloquent\Model; | 6 | use Illuminate\Database\Eloquent\Model; |
7 | 7 | ||
8 | class Banner extends Model | 8 | class Banner extends Model |
9 | { | 9 | { |
10 | use HasFactory; | 10 | use HasFactory; |
11 | |||
12 | protected $fillable = ['title', 'text', 'image']; | ||
11 | } | 13 | } |
12 | 14 |
public/css/style_table.css
File was created | 1 | .table { | |
2 | width: 100%; | ||
3 | border: none; | ||
4 | margin-bottom: 20px; | ||
5 | } | ||
6 | .table thead th { | ||
7 | font-weight: bold; | ||
8 | text-align: left; | ||
9 | border: none; | ||
10 | padding: 10px 15px; | ||
11 | background: #d8d8d8; | ||
12 | font-size: 14px; | ||
13 | border-left: 1px solid #ddd; | ||
14 | border-right: 1px solid #ddd; | ||
15 | } | ||
16 | .table tbody td { | ||
17 | text-align: left; | ||
18 | border-left: 1px solid #ddd; | ||
19 | border-right: 1px solid #ddd; | ||
20 | padding: 10px 15px; | ||
21 | font-size: 14px; | ||
22 | vertical-align: top; | ||
23 | } | ||
24 | .table thead tr th:first-child, .table tbody tr td:first-child { | ||
25 | border-left: none; | ||
26 | } | ||
27 | .table thead tr th:last-child, .table tbody tr td:last-child { | ||
28 | border-right: none; | ||
29 | } | ||
30 | .table tbody tr:nth-child(even){ | ||
31 | background: #f3f3f3; | ||
32 | } | ||
33 |
resources/views/admin/banners/create.blade.php
resources/views/admin/banners/edit.blade.php
resources/views/admin/banners/form.blade.php
resources/views/admin/banners/index.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Профиль пользователя']) | |
2 | |||
3 | @section('content') | ||
4 | <!-- главный экран --> | ||
5 | <div class="profile-block-wrapper"> | ||
6 | <div class="profile-block"> | ||
7 | <a href="{{ route('admin.banner.create') }}" class="btn banner-container__button" style="margin: 0px;"> | ||
8 | Создать баннер | ||
9 | </a><br><br> | ||
10 | |||
11 | <table class="table" style="width: 100%"> | ||
12 | <thead> | ||
13 | <tr> | ||
14 | <th>ID</th> | ||
15 | <th>Фото</th> | ||
16 | <th>Заголовок</th> | ||
17 | <th>Дата создания</th> | ||
18 | <th>Действия</th> | ||
19 | </tr> | ||
20 | </thead> | ||
21 | <tbody> | ||
22 | @if ($banners->count()) | ||
23 | @foreach($banners as $banner) | ||
24 | <tr> | ||
25 | <td>{{ $banner->id }}</td> | ||
26 | <td><? if (empty($banner->image)) {?>Нет фото<?} else {?> | ||
27 | <!--<img src="/storage/app/public/<?//=$area->foto_main; //=asset(Storage::url($area->foto_main))?>" width="100px"/>--> | ||
28 | <img src="<?=asset(Storage::url($banner->image))?>" width="100px"/> | ||
29 | <?}?></td> | ||
30 | |||
31 | <td>{{ $banner->title }}</td> | ||
32 | <td>{{ $banner->created_at }}</td> | ||
33 | <td> <form action="{{ route('admin.banner.destroy', $banner) }}" method="POST"> | ||
34 | <a href="{{ route('admin.banner.edit', ['banner' => $banner->id]) }}"> | ||
35 | Редактировать | ||
36 | </a> | | ||
37 | @csrf | ||
38 | @method('DELETE') | ||
39 | <input class=" btn-danger" type="submit" value="Удалить"> | ||
40 | </form> | ||
41 | </td> | ||
42 | </tr> | ||
43 | @endforeach | ||
44 | @else | ||
45 | <tr> | ||
46 | <td>-</td> | ||
47 | <td>-</td> | ||
48 | <td>-</td> | ||
49 | <td>-</td> | ||
50 | <td>-</td> | ||
51 | </tr> | ||
52 | @endif | ||
53 | |||
54 | </tbody> | ||
55 | </table> | ||
56 | |||
57 | {{ $banners->onEachSide(1)->links('catalogs.paginate') }} | ||
58 | |||
59 | </div> | ||
60 | </div> | ||
61 | @endsection | ||
62 |
resources/views/admin/profile.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Профиль пользователя']) | |
2 | |||
3 | @section('content') | ||
4 | <!-- главный экран --> | ||
5 | <div class="profile-block-wrapper js_profile_data"> | ||
6 | <div class="profile-block"> | ||
7 | <p class="profile-block__title">Контактное лицо</p> | ||
8 | <p class="profile-block__content">{{ auth()->user()->name }}</p> | ||
9 | </div> | ||
10 | <div class="profile-block"> | ||
11 | <p class="profile-block__title">Название компании</p> | ||
12 | <p class="profile-block__content">ООО “ВЕКПРОМ”</p> | ||
13 | </div> | ||
14 | <div class="profile-block"> | ||
15 | <p class="profile-block__title">E-mail</p> | ||
16 | <p class="profile-block__content">{{ auth()->user()->email }}</p> | ||
17 | </div> | ||
18 | <div class="profile-block"> | ||
19 | <p class="profile-block__title">Телефон</p> | ||
20 | <p class="profile-block__content">+7 965 - 333 - 44 - 44</p> | ||
21 | </div> | ||
22 | <!--<div class="profile-block"> | ||
23 | <label class="form__label form__label-file profile-block__title-file" for="file">Данные компании (для юридических | ||
24 | лиц) | ||
25 | <svg width="14" height="22" class="svg-file"> | ||
26 | <use xlink:href="./img/icons.svg#input-file-oran"></use> | ||
27 | </svg> | ||
28 | <span class="choose-file acc-file">Реквизиты</span> | ||
29 | </label> | ||
30 | <input class="form-input" type="file" id="file" name="file"> | ||
31 | </div>--> | ||
32 | <div class="profile-block-buttons"> | ||
33 | <!--<a class="profile-block-buttons__link-data" href="#">Изменить данные</a>--> | ||
34 | <a class="profile-block-buttons__link-pass js_profile_pass" href="#">Изменить пароль</a> | ||
35 | </div> | ||
36 | </div> | ||
37 | |||
38 | |||
39 | <!-- мой профиль - изменить пароль --> | ||
40 | <div class="change-pass-wrapper change-pass-wrapper--hidden js_change_pass"> | ||
41 | <form class="modal-reg-form profile-pass-change" method="post"> | ||
42 | |||
43 | <label class="form__label label-reg-pass error" for="prof-password">Текущий пароль | ||
44 | <span class="required">*</span> | ||
45 | </label> | ||
46 | <input class="form-input auth-pass-err js_reg_pass" type="password"" id="prof-password" name="password" | ||
47 | placeholder="Введите ваш пароль" required> | ||
48 | <button class="modal-auth-show-pass prof-show-pass js_reg_show_pass"></button> | ||
49 | |||
50 | <label class="form__label label-reg-pass error" for="prof-password-new">Новый пароль | ||
51 | <span class="required">*</span> | ||
52 | </label> | ||
53 | <input class="form-input auth-pass-err js_prof_show_pass" type="password"" id="prof-password-new" name="password" | ||
54 | placeholder="Введите ваш пароль" required> | ||
55 | <button class="modal-auth-show-pass prof-show-pas-sec js_prof_pass_new"></button> | ||
56 | |||
57 | <label class="form__label label-reg auth-label-pass" for="prof-confirm-password">Повторите новый пароль | ||
58 | <span class="required">*</span> | ||
59 | <span class="reg-pass-error reg-pass-error--hidden">Ошибка</span> | ||
60 | </label> | ||
61 | <input class="form-input reg-pass-conf-input js_pass_conf" type="password"" id="prof-confirm-password" | ||
62 | name="confirm-password" placeholder="Введите пароль еще раз" required> | ||
63 | <button class="modal-auth-show-pass prof-show-pas-third js_reg_show_pass_conf"></button> | ||
64 | |||
65 | <div class="parts-content-form-bottom modal-auth-bottom"> | ||
66 | |||
67 | <button class="parts-content-form-bottom__button profile-pass-change__btn" type="submit">Изменить пароль</button> | ||
68 | </div> | ||
69 | </form> | ||
70 | </div> | ||
71 | <!-- мой профиль - изменить пароль - успешно --> | ||
72 | <div class="pass-change-succ pass-change-succ--hidden"> | ||
73 | <h2 class="pass-change-succ__title">Пароль успешно изменен</h2> | ||
74 | <a class="pass-change-succ__btn" href="#">Хорошо</a> | ||
75 | </div> | ||
76 | @endsection | ||
77 |
resources/views/auth/login.blade.php
File was created | 1 | @extends('layout.site', ['title' => 'Вход в личный кабинет']) | |
2 | |||
3 | @section('content') | ||
4 | <section class="product-cart"> | ||
5 | <div class="container"> | ||
6 | <h2 class="modal-auth__title"> | ||
7 | Авторизация | ||
8 | </h2> | ||
9 | <form method="post" class="modal-auth-form" action="{{ route('auth.auth') }}"> | ||
10 | @csrf | ||
11 | <label class="form__label auth-label-mail" for="email-auth">E-mail | ||
12 | <span class="auth-mail-error auth-mail-error--hidden">Ошибка</span> | ||
13 | </label><br> | ||
14 | <input class="form-input form__email auth-mail-err" type="email" id="email-auth" name="email" placeholder="Введите ваш e-mail" required value="{{ old('email') ?? '' }}"><br><br> | ||
15 | |||
16 | <label class="form__label auth-label-pass" for="password-auth">Пароль | ||
17 | <span class="auth-pass-error auth-pass-error--hidden">Ошибка</span> | ||
18 | </label><br> | ||
19 | <input class="form-input auth-pass-err js_auth_pass" type="password" id="password-auth" name="password" placeholder="Введите ваш пароль" required> | ||
20 | <button class="modal-auth-show-pass js_auth_show_pass"></button> | ||
21 | <div class="parts-content-form-bottom modal-auth-bottom"> | ||
22 | <a class="modal-auth-bottom__reset js_restore_pass" href="#">Забыли пароль?</a> | ||
23 | |||
24 | <label class="form-check-label" for="remember"> | ||
25 | <input type="checkbox" class="form-check-input" name="remember" id="remember">Запомнить меня | ||
26 | </label> | ||
27 | <p class="parts-content-form-bottom__par modal-auth-bottom__note">Даю согласие на обработку персональных данных.</p> | ||
28 | <button class="parts-content-form-bottom__button" type="submit">Войти</button> | ||
29 | </div> | ||
30 | </form> | ||
31 | </div> | ||
32 | </section> | ||
33 | @endsection | ||
34 |
resources/views/auth/register.blade.php
File was created | 1 | @extends('layout.site', ['title' => 'Регистрация']) | |
2 | |||
3 | @section('content') | ||
4 | <section class="product-cart"> | ||
5 | <div class="container"> | ||
6 | <h2 class="modal-reg__title">Регистрация</h2> | ||
7 | <form class="modal-reg-form" method="post" action="{{ route('auth.register') }}"> | ||
8 | @csrf | ||
9 | <label class="form__label label-reg" for="name-reg">Ваше имя | ||
10 | <span class="required">*</span> | ||
11 | </label><br> | ||
12 | <input class="form-input form__name" type="text" id="name-reg" name="name" placeholder="Введите ваше имя" required value="{{ old('name') ?? '' }}"> | ||
13 | |||
14 | <label class="form__label label-reg-pass reg-mail error" for="email-reg">E-mail | ||
15 | <span class="required">*</span> | ||
16 | <span class="reg-mail-error reg-mail-error--hidden">Ошибка</span> | ||
17 | </label><br> | ||
18 | <input class="form-input form__email reg-mail-input js_reg_mail_input" type="email" id="email-reg" name="email" | ||
19 | placeholder="Введите ваш e-mail" value="{{ old('email') ?? '' }}" required> | ||
20 | |||
21 | <label class="form__label label-reg-pass error" for="password-reg">Пароль | ||
22 | <span class="required">*</span> | ||
23 | </label><br> | ||
24 | <input class="form-input auth-pass-err js_reg_pass" type="password" id="password-reg" name="password" | ||
25 | placeholder="Введите ваш пароль" required> | ||
26 | <button class="modal-auth-show-pass reg-show-pass js_reg_show_pass"></button><br> | ||
27 | |||
28 | <label class="form__label label-reg auth-label-pass" for="confirm-password-reg">Повторите пароль | ||
29 | <span class="required">*</span> | ||
30 | <span class="reg-pass-error reg-pass-error--hidden">Ошибка</span> | ||
31 | </label><br> | ||
32 | <input class="form-input reg-pass-conf-input js_pass_conf" type="password" id="confirm-password-reg" name="password_confirmation" | ||
33 | placeholder="Введите пароль еще раз" required> | ||
34 | <button class="modal-auth-show-pass reg-show-pass-second js_reg_show_pass_conf"></button> | ||
35 | |||
36 | <div class="parts-content-form-bottom modal-auth-bottom"> | ||
37 | <p class="parts-content-form-bottom__par modal-auth-bottom__note">Даю согласие на обработку персональных данных. | ||
38 | </p> | ||
39 | <button class="parts-content-form-bottom__button" type="submit">Отправить заявку</button> | ||
40 | </div> | ||
41 | </form> | ||
42 | </div> | ||
43 | </section> | ||
44 | @endsection | ||
45 |
resources/views/auth/test.blade.php
File was created | 1 | @extends('layout.site', ['title' => 'Неудачный вход в личный кабинет']) | |
2 | |||
3 | @section('content') | ||
4 | <section class="product-cart"> | ||
5 | <div class="container"> | ||
6 | <h2>Авторизация не пройдена!</h2> | ||
7 | <span>Email не подтвержден.</span> | ||
8 | </div> | ||
9 | </section> | ||
10 | @endsection | ||
11 |
resources/views/auth/verify-message.blade.php
File was created | 1 | @extends('layout.site', ['title' => 'Неудачный вход в личный кабинет']) | |
2 | |||
3 | @section('content') | ||
4 | <section class="product-cart"> | ||
5 | <div class="container"> | ||
6 | |||
7 | </div> | ||
8 | </section> | ||
9 | @endsection | ||
10 |
resources/views/catalogs/paginate.blade.php
File was created | 1 | @if ($paginator->hasPages()) | |
2 | <div class="pagination"> | ||
3 | <div class="pagination__inner"> | ||
4 | @if ($paginator->onFirstPage()) | ||
5 | <a class="pagination__btn pagination__btn-prev disabled" href="#"> | ||
6 | <svg width="10" height="17"> | ||
7 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> | ||
8 | </svg> | ||
9 | </a> | ||
10 | @else | ||
11 | <a class="pagination__btn pagination__btn-prev" href="{{ $paginator->previousPageUrl() }}"> | ||
12 | <svg width="10" height="17"> | ||
13 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> | ||
14 | </svg> | ||
15 | </a> | ||
16 | @endif | ||
17 | <ul class="pagination__list"> | ||
18 | @foreach ($elements as $element) | ||
19 | @if (is_string($element)) | ||
20 | |||
21 | <li class="disabled pagination__item"><span>{{ $element }}</span></li> | ||
22 | |||
23 | @endif | ||
24 | @if (is_array($element)) | ||
25 | @foreach ($element as $page => $url) | ||
26 | @if ($page == $paginator->currentPage()) | ||
27 | |||
28 | <li class="pagination__item"><a class="pagination__link active">{{ $page }}</a></li> | ||
29 | |||
30 | @else | ||
31 | |||
32 | <li class="pagination__item"><a class="pagination__link" href="{{ $url }}">{{ $page }}</a></li> | ||
33 | |||
34 | @endif | ||
35 | @endforeach | ||
36 | @endif | ||
37 | @endforeach | ||
38 | |||
39 | </ul> | ||
40 | @if ($paginator->hasMorePages()) | ||
41 | <a class="pagination__btn pagination__btn-next" href="{{ $paginator->nextPageUrl() }}"> | ||
42 | <svg width="10" height="17"> | ||
43 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> | ||
44 | </svg></a> | ||
45 | @else | ||
46 | <a class="pagination__btn pagination__btn-next disabled" href="#"> | ||
47 | <svg width="10" height="17"> | ||
48 | <use xlink:href="{{ asset('images/sprite.svg#slider-arrow')}}"></use> | ||
49 | </svg></a> | ||
50 | @endif | ||
51 | </div> | ||
52 | </div> | ||
53 | @endif | ||
54 |
resources/views/layout/admin.blade.php
File was created | 1 | <!DOCTYPE html> | |
2 | <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> | ||
3 | |||
4 | <head> | ||
5 | <meta charset="UTF-8"> | ||
6 | <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||
7 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
8 | <meta name="csrf-token" content="<?=csrf_token() ?>"> | ||
9 | <title>Vekprom</title> | ||
10 | <link rel="preload" href="{{ asset('fonts/Montserrat-Bold.woff2') }}" as="font" type="font/woff2" crossorigin> | ||
11 | <link rel="preload" href="{{ asset('fonts/Montserrat-Regular.woff2') }}" as="font" type="font/woff2" crossorigin> | ||
12 | <link rel="preload" href="{{ asset('fonts/Montserrat-Medium.woff2') }}" as="font" type="font/woff2" crossorigin> | ||
13 | <link rel="preload" href="{{ asset('fonts/Montserrat-SemiBold.woff2') }}" as="font" type="font/woff2" crossorigin> | ||
14 | <link rel="stylesheet" href="{{ asset('css/style.css') }}"> | ||
15 | <link rel="stylesheet" href="{{ asset('css/style_table.css') }}"> | ||
16 | <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@9/swiper-bundle.min.css" /> | ||
17 | </head> | ||
18 | |||
19 | <body> | ||
20 | |||
21 | <div class="wrapper"> | ||
22 | |||
23 | <header class="header"> | ||
24 | <div class="header-up"> | ||
25 | <div class="header-up-wrapper"> | ||
26 | <a class="header-mobile-call" href="tel:+79003003030"></a> | ||
27 | <div class="header-up-left"> | ||
28 | <span class="header-up-left__your-city">Ваш город:</span> | ||
29 | <p class="header-up-left__city js_city_choose"> | ||
30 | Москва | ||
31 | </p> | ||
32 | <svg class="svg-location"> | ||
33 | <use xlink:href="{{ asset('/img/icons.svg#location') }}"></use> | ||
34 | </svg> | ||
35 | <p class="header-up-left__address"> | ||
36 | пр-т Коммунистов, 62 | ||
37 | </p> | ||
38 | </div> | ||
39 | <nav class="header-up__menu"> | ||
40 | <ul class="header-up__menu-wrapper"> | ||
41 | <li class="header-up__menu-item js_test">О компании</li> | ||
42 | <li class="header-up__menu-item">Демозал</li> | ||
43 | <li class="header-up__menu-item">Сервис 24/7</li> | ||
44 | </ul> | ||
45 | </nav> | ||
46 | <div class="header-up-right"> | ||
47 | <a href="#" class="header-up-right__item right-item-compare">Сравнить</a> | ||
48 | <a href="#" class="header-up-right__item right-item-fav">Избранное</a> | ||
49 | <a href="#" class="header-up-right__item right-item-entry js_header_entry">Войти</a> | ||
50 | </div> | ||
51 | </div> | ||
52 | </div> | ||
53 | <div class="header-main"> | ||
54 | <div class="container header-main-container"> | ||
55 | <div class="header-main-left"> | ||
56 | <a class="header-main-left__logo" href="#"> | ||
57 | <img src="{{ asset('img/logo.png') }}" alt="Векпром логотип"> | ||
58 | </a> | ||
59 | <a class="header-main-left__button js-catalog-btn" href="#">Каталог</a> | ||
60 | <div class="header-main-left-search"> | ||
61 | <input class="header-main-left-search__input" type="search" placeholder="Станов вектор..." /> | ||
62 | <!-- <input class="header-main-left-search__mobile" type="search"> --> | ||
63 | </div> | ||
64 | </div> | ||
65 | <div class="header-main__right"> | ||
66 | <div class="header-main__right-socials"> | ||
67 | <a class="mail" href="mailto:Info@vekprom.ru">Info@vekprom.ru</a> | ||
68 | <a class="tel" href="tel:88007006050">8 (800) 700-60-50</a> | ||
69 | </div> | ||
70 | <a class="header-main__right-button js_header_button_call">Заказать звонок</a> | ||
71 | <div class="header-main__right-cart"> | ||
72 | <svg class="svg-cart"> | ||
73 | <use xlink:href="{{ asset('/img/icons.svg#cart') }}"></use> | ||
74 | </svg> | ||
75 | <span class="number">2</span> | ||
76 | </div> | ||
77 | </div> | ||
78 | </div> | ||
79 | </div> | ||
80 | |||
81 | <section class="modal modal-city modal-city--hidden js_modal_city"> | ||
82 | <div class="modal-city-top"> | ||
83 | <h2 class="modal-city-top__title"> | ||
84 | Выбор города | ||
85 | </h2> | ||
86 | <div class="header-main-left-search modal-city-search"> | ||
87 | <input class="header-main-left-search__input modal-city-search__input" type="search" placeholder="Введите ваш город" /> | ||
88 | </div> | ||
89 | <a class="modal-city-top__close js_modal_city_close" href="#"></a> | ||
90 | </div> | ||
91 | <div class="modal-city-content"> | ||
92 | <ul class="city-main"> | ||
93 | <li class="city-main__item city-main__item--active js_city_item">Москва и Московская область</li> | ||
94 | <li class="city-main__item js_city_item">Санкт-Петербург и Ленинградская область</li> | ||
95 | <li class="city-main__item js_city_item">Свердловская обл.</li> | ||
96 | <li class="city-main__item js_city_item">Краснодарский край.</li> | ||
97 | <li class="city-main__item js_city_item">Башкортостан Респ.</li> | ||
98 | <li class="city-main__item js_city_item">Самарская обл.</li> | ||
99 | <li class="city-main__item js_city_item">Челябинская обл.</li> | ||
100 | <li class="city-main__item js_city_item">Татарстан Респ.</li> | ||
101 | <li class="city-main__item js_city_item">Новосибирская обл.</li> | ||
102 | <li class="city-main__item js_city_item">Нижегородская обл.</li> | ||
103 | </ul> | ||
104 | <ul class="modal-city-block"> | ||
105 | <li class="modal-city-block__name js_city_item">Адыгея Респ.</li> | ||
106 | <span class="modal-city-block__letter">A</span> | ||
107 | <li class="modal-city-block__name js_city_item">Алтай Респ.</li> | ||
108 | <li class="modal-city-block__name js_city_item">Алтайский край.</li> | ||
109 | <li class="modal-city-block__name js_city_item">Амурская обл.</li> | ||
110 | <li class="modal-city-block__name js_city_item">Архангельская обл.</li> | ||
111 | <li class="modal-city-block__name js_city_item">Астраханская обл.</li> | ||
112 | </ul> | ||
113 | <ul class="modal-city-block"> | ||
114 | <li class="modal-city-block__name js_city_item">Башкортостан Респ.</li> | ||
115 | <span class="modal-city-block__letter">Б</span> | ||
116 | <li class="modal-city-block__name js_city_item">Белгородская обл.</li> | ||
117 | <li class="modal-city-block__name js_city_item">Брянская обл.</li> | ||
118 | <li class="modal-city-block__name js_city_item">Бурятия Респ.</li> | ||
119 | </ul> | ||
120 | <ul class="modal-city-block"> | ||
121 | <li class="modal-city-block__name js_city_item">Владимирская обл.</li> | ||
122 | <span class="modal-city-block__letter">В</span> | ||
123 | <li class="modal-city-block__name js_city_item">Волгоградская обл.</li> | ||
124 | <li class="modal-city-block__name js_city_item">Вологодская обл.</li> | ||
125 | <li class="modal-city-block__name js_city_item">Воронежская обл.</li> | ||
126 | </ul> | ||
127 | <ul class="modal-city-block"> | ||
128 | <li class="modal-city-block__name js_city_item">Дагестан Респ.</li> | ||
129 | <span class="modal-city-block__letter">Д</span> | ||
130 | </ul> | ||
131 | <ul class="modal-city-block"> | ||
132 | <li class="modal-city-block__name js_city_item">Еврейская АО</li> | ||
133 | <span class="modal-city-block__letter">Е</span> | ||
134 | </ul> | ||
135 | <ul class="modal-city-block"> | ||
136 | <li class="modal-city-block__name js_city_item">Забайкальский край.</li> | ||
137 | <span class="modal-city-block__letter">З</span> | ||
138 | </ul> | ||
139 | <ul class="modal-city-block"> | ||
140 | <li class="modal-city-block__name js_city_item">Ивановская обл.</li> | ||
141 | <span class="modal-city-block__letter">И</span> | ||
142 | <li class="modal-city-block__name js_city_item">Ингушетия Респ.</li> | ||
143 | <li class="modal-city-block__name js_city_item">Иркутская обл.</li> | ||
144 | </ul> | ||
145 | <ul class="modal-city-block"> | ||
146 | <li class="modal-city-block__name js_city_item">Кабардино-Балкарская Респ.</li> | ||
147 | <span class="modal-city-block__letter">К</span> | ||
148 | <li class="modal-city-block__name js_city_item">Калининградская обл.</li> | ||
149 | <li class="modal-city-block__name js_city_item">Калужская обл.</li> | ||
150 | <li class="modal-city-block__name js_city_item">Калужская обл.</li> | ||
151 | <li class="modal-city-block__name js_city_item">Камчатский край.</li> | ||
152 | <li class="modal-city-block__name js_city_item">Карачаево-Черкесская Респ.</li> | ||
153 | <li class="modal-city-block__name js_city_item">Кемеровская обл.</li> | ||
154 | <li class="modal-city-block__name js_city_item">Кировская обл.</li> | ||
155 | <li class="modal-city-block__name js_city_item">Коми Респ.</li> | ||
156 | <li class="modal-city-block__name js_city_item">Костромская обл.</li> | ||
157 | <li class="modal-city-block__name js_city_item">Краснодарский край.</li> | ||
158 | <li class="modal-city-block__name js_city_item">Красноярский край.</li> | ||
159 | <li class="modal-city-block__name js_city_item">Курская обл.</li> | ||
160 | </ul> | ||
161 | <ul class="modal-city-block"> | ||
162 | <li class="modal-city-block__name js_city_item">Липецкая обл.</li> | ||
163 | <span class="modal-city-block__letter">Л</span> | ||
164 | </ul> | ||
165 | <ul class="modal-city-block"> | ||
166 | <li class="modal-city-block__name js_city_item">Магаданская обл.</li> | ||
167 | <span class="modal-city-block__letter">М</span> | ||
168 | <li class="modal-city-block__name js_city_item">Марий Эл Респ.</li> | ||
169 | <li class="modal-city-block__name js_city_item">Мордовия Респ.</li> | ||
170 | </ul> | ||
171 | <ul class="modal-city-block"> | ||
172 | <li class="modal-city-block__name js_city_item">Нижегородская обл.</li> | ||
173 | <span class="modal-city-block__letter">Н</span> | ||
174 | <li class="modal-city-block__name js_city_item">Новгородская обл.</li> | ||
175 | <li class="modal-city-block__name js_city_item">Новосибирская обл.</li> | ||
176 | </ul> | ||
177 | <ul class="modal-city-block"> | ||
178 | <li class="modal-city-block__name js_city_item">Омская обл.</li> | ||
179 | <span class="modal-city-block__letter">О</span> | ||
180 | <li class="modal-city-block__name js_city_item">Оренбургская обл.</li> | ||
181 | <li class="modal-city-block__name js_city_item">Орловская обл.</li> | ||
182 | </ul> | ||
183 | <ul class="modal-city-block"> | ||
184 | <li class="modal-city-block__name js_city_item">Ростовская обл.</li> | ||
185 | <span class="modal-city-block__letter">Р</span> | ||
186 | <li class="modal-city-block__name js_city_item">Рязанская обл.</li> | ||
187 | </ul> | ||
188 | <ul class="modal-city-block"> | ||
189 | <li class="modal-city-block__name js_city_item">Самарская</li> | ||
190 | <span class="modal-city-block__letter">С</span> | ||
191 | <li class="modal-city-block__name js_city_item">Санкт-Петербург и Ленинградская область</li> | ||
192 | <li class="modal-city-block__name js_city_item">Саратовская обл.</li> | ||
193 | <li class="modal-city-block__name js_city_item">Саха Республика - Якутия</li> | ||
194 | <li class="modal-city-block__name js_city_item">Сахалинская обл.</li> | ||
195 | <li class="modal-city-block__name js_city_item">Свердловская обл.</li> | ||
196 | <li class="modal-city-block__name js_city_item">Северная Осетия - Алания Респ.</li> | ||
197 | <li class="modal-city-block__name js_city_item">Смоленская обл.</li> | ||
198 | </ul> | ||
199 | <ul class="modal-city-block"> | ||
200 | <li class="modal-city-block__name js_city_item">Удмуртская</li> | ||
201 | <span class="modal-city-block__letter">У</span> | ||
202 | <li class="modal-city-block__name js_city_item">Ульяновская</li> | ||
203 | </ul> | ||
204 | <ul class="modal-city-block"> | ||
205 | <li class="modal-city-block__name js_city_item">Хабаровский</li> | ||
206 | <span class="modal-city-block__letter">Х</span> | ||
207 | <li class="modal-city-block__name js_city_item">Хакасия Респ.</li> | ||
208 | <li class="modal-city-block__name js_city_item">Ханты-Мансийский Автономный округ - Югра АО.</li> | ||
209 | </ul> | ||
210 | <ul class="modal-city-block"> | ||
211 | <li class="modal-city-block__name js_city_item">Челябинская</li> | ||
212 | <span class="modal-city-block__letter">Ч</span> | ||
213 | <li class="modal-city-block__name js_city_item">Чеченская Респ.</li> | ||
214 | <li class="modal-city-block__name js_city_item">Чувашская Республика - Чувашия.</li> | ||
215 | </ul> | ||
216 | <ul class="modal-city-block"> | ||
217 | <li class="modal-city-block__name js_city_item">Ямало-Ненецкий АО.</li> | ||
218 | <span class="modal-city-block__letter">Я</span> | ||
219 | <li class="modal-city-block__name js_city_item">Ярославская обл.</li> | ||
220 | </ul> | ||
221 | |||
222 | </div> | ||
223 | <a class="modal-city__close js_modal_city_close" href="#"></a> | ||
224 | </section> | ||
225 | <div class="modal-overlay modal-city-overlay modal-city-overlay--hidden js_modal_city_overlay"></div> | ||
226 | |||
227 | |||
228 | <section class="modal modal-reg modal-reg--hidden js_modal_reg"> | ||
229 | <a class="modal__close modal-reg__close js_modal_reg_close" href="#"></a> | ||
230 | <h2 class="modal-reg__title">Регистрация</h2> | ||
231 | <form class="modal-reg-form" method="post"> | ||
232 | <label class="form__label label-reg" for="name-reg">Ваше имя | ||
233 | <span class="required">*</span> | ||
234 | </label> | ||
235 | <input class="form-input form__name" type="text" id="name-reg" name="name" placeholder="Введите ваше имя" required> | ||
236 | |||
237 | <label class="form__label label-reg-pass reg-mail error" for="email-reg">E-mail | ||
238 | <span class="required">*</span> | ||
239 | <span class="reg-mail-error reg-mail-error--hidden">Ошибка</span> | ||
240 | </label> | ||
241 | <input class="form-input form__email reg-mail-input js_reg_mail_input" type="email" id="email-reg" name="email" | ||
242 | placeholder="Введите ваш e-mail" required> | ||
243 | |||
244 | <label class="form__label label-reg-pass error" for="password-reg">Пароль | ||
245 | <span class="required">*</span> | ||
246 | </label> | ||
247 | <input class="form-input auth-pass-err js_reg_pass" type="password"" id="password-reg" name="password" | ||
248 | placeholder="Введите ваш пароль" required> | ||
249 | <button class="modal-auth-show-pass reg-show-pass js_reg_show_pass"></button> | ||
250 | |||
251 | <label class="form__label label-reg auth-label-pass" for="confirm-password-reg">Повторите пароль | ||
252 | <span class="required">*</span> | ||
253 | <span class="reg-pass-error reg-pass-error--hidden">Ошибка</span> | ||
254 | </label> | ||
255 | <input class="form-input reg-pass-conf-input js_pass_conf" type="password"" id="confirm-password-reg" name="confirm-password" | ||
256 | placeholder="Введите пароль еще раз" required> | ||
257 | <button class="modal-auth-show-pass reg-show-pass-second js_reg_show_pass_conf"></button> | ||
258 | |||
259 | <div class="parts-content-form-bottom modal-auth-bottom"> | ||
260 | <a class="modal-auth-bottom__reset js_restore_pass" href="#">Забыли пароль?</a> | ||
261 | <p class="parts-content-form-bottom__par modal-auth-bottom__note">Даю согласие на обработку персональных данных. | ||
262 | </p> | ||
263 | <button class="parts-content-form-bottom__button" type="submit">Отправить заявку</button> | ||
264 | </div> | ||
265 | </form> | ||
266 | <a class="modal-restore__back js_back_inner" href="#">Вернуться на главный экран</a> | ||
267 | </section> | ||
268 | <div class="modal-overlay modal-reg-overlay modal-reg-overlay--hidden js_modal_reg_overlay"></div> | ||
269 | |||
270 | <section class="modal modal-auth modal-auth--hidden js_modal_auth"> | ||
271 | <a class="modal__close modal-auth__close js_modal_auth_close" href="#"></a> | ||
272 | <h2 class="modal-auth__title"> | ||
273 | Авторизация | ||
274 | </h2> | ||
275 | <form method="post" class="modal-auth-form"> | ||
276 | <label class="form__label auth-label-mail" for="email-auth">E-mail | ||
277 | <span class="auth-mail-error auth-mail-error--hidden">Ошибка</span> | ||
278 | </label> | ||
279 | <input class="form-input form__email auth-mail-err" type="email" id="email-auth" name="email" placeholder="Введите ваш e-mail" required> | ||
280 | |||
281 | <label class="form__label auth-label-pass" for="password-auth">Пароль | ||
282 | <span class="auth-pass-error auth-pass-error--hidden">Ошибка</span> | ||
283 | </label> | ||
284 | <input class="form-input auth-pass-err js_auth_pass" type="password"" id="password-auth" name="password" placeholder="Введите ваш пароль" required> | ||
285 | <button class="modal-auth-show-pass js_auth_show_pass"></button> | ||
286 | <div class="parts-content-form-bottom modal-auth-bottom"> | ||
287 | <a class="modal-auth-bottom__reset js_restore_pass" href="#">Забыли пароль?</a> | ||
288 | <p class="parts-content-form-bottom__par modal-auth-bottom__note">Даю согласие на обработку персональных данных.</p> | ||
289 | <button class="parts-content-form-bottom__button" type="submit">Войти</button> | ||
290 | </div> | ||
291 | </form> | ||
292 | </section> | ||
293 | <div class="modal-overlay modal-auth-overlay modal-auth-overlay--hidden js_modal_auth_overlay"></div> | ||
294 | |||
295 | <section class="modal modal-restore modal-restore--hidden js_modal_restore"> | ||
296 | <a class="modal__close modal-restore__close js_modal_restore_close" href="#"></a> | ||
297 | <h2 class="modal-restore__title"> | ||
298 | Восстановить пароль | ||
299 | </h2> | ||
300 | <form method="post" class="modal-restore-form"> | ||
301 | <label class="form__label restore-label" for="email-restore">E-mail | ||
302 | <span class="required">*</span> | ||
303 | </label> | ||
304 | <input class="form-input form__email" type="email" id="email-restore" name="email" | ||
305 | placeholder="Введите ваш e-mail" required> | ||
306 | <div class="parts-content-form-bottom modal-auth-bottom"> | ||
307 | <p class="parts-content-form-bottom__par modal-auth-bottom__note">Даю согласие на обработку персональных данных.</p> | ||
308 | <button class="parts-content-form-bottom__button" type="submit">Восстановить пароль</button> | ||
309 | </div> | ||
310 | </form> | ||
311 | <a class="modal-restore__back js_restore_back" href="#">Вернуться на главный экран</a> | ||
312 | </section> | ||
313 | <div class="modal-overlay modal-restore-overlay modal-restore-overlay--hidden js_modal_restore_overlay"></div> | ||
314 | |||
315 | <section class="modal modal-restore-succ modal-restore-succ--hidden js_modal_restore_succ"> | ||
316 | <a class="modal__close modal-restore-succ__close js_modal_restore_succ_close" href="#"></a> | ||
317 | <h2 class="modal-restore-succ__title"> | ||
318 | Сообщение отправлено | ||
319 | </h2> | ||
320 | <p class="modal-restore-succ__note">Мы отправили ссылку для восстановения доступа к вашему аккаунту на адрес</p> | ||
321 | <p class="modal-restore-succ__mail">v****m@g***l.com</p> | ||
322 | <a class="modal-restore-succ__btn js_res_succ_ok" href="#">ОК</a> | ||
323 | <a class="modal-restore-succ__back js_res_succ_back" href="#">Вернуться на главный экран</a> | ||
324 | </section> | ||
325 | <div class="modal-overlay modal-restore-succ-overlay modal-restore-succ-overlay--hidden js_modal_restore_succ_overlay"></div> | ||
326 | |||
327 | <section class="modal modal-restore-error modal-restore-error--hidden js_modal_restore_error"> | ||
328 | <a class="modal__close modal-restore-error__close js_modal_restore_error_close" href="#"></a> | ||
329 | <h2 class="modal-restore-error__title"> | ||
330 | Пользователь не найден | ||
331 | </h2> | ||
332 | <form method="post" class="modal-restore-form restore-form-error"> | ||
333 | <label class="form__label restore-label" for="email-pass-err">E-mail | ||
334 | <span class="required">*</span> | ||
335 | </label> | ||
336 | <input class="form-input form__email" type="email" id="email-pass-err" name="email" placeholder="Введите ваш e-mail" | ||
337 | required> | ||
338 | <div class="parts-content-form-bottom modal-auth-bottom"> | ||
339 | <p class="parts-content-form-bottom__par modal-auth-bottom__note">Даю согласие на обработку персональных | ||
340 | данных.</p> | ||
341 | <button class="parts-content-form-bottom__button" type="submit">Восстановить пароль</button> | ||
342 | </div> | ||
343 | </form> | ||
344 | <a class="modal-restore__back js_restore_error_back" href="#">Вернуться на главный экран</a> | ||
345 | </section> | ||
346 | <div class="modal-overlay modal-restore-error-overlay modal-restore-error-overlay--hidden js_modal_restore_error_overlay"></div> | ||
347 | |||
348 | <section class="modal modal-contact modal-contact--hidden js_modal_contact"> | ||
349 | <a class="modal__close modal-contact__close js_modal_contact_close" href="#"></a> | ||
350 | <div class="modal-parts-content"> | ||
351 | <h2 class="modal-parts-content__title"> | ||
352 | Свяжитесь с нами | ||
353 | </h2> | ||
354 | <p class="modal-contact-type">Отметьте галочкой предпочтительный канал связи</p> | ||
355 | <form class="modal-parts-content-form" enctype="multipart/form-data" method="post"> | ||
356 | <div class="parts-content-form-top"> | ||
357 | <div class="parts-content-form-top-line-one"> | ||
358 | <label class="form__label" for="name">Ваше имя <span class="required">*</span></label> | ||
359 | <input class="form-input form__name" type="text" id="name" name="name" placeholder="Введите ваше имя" | ||
360 | required><br> | ||
361 | |||
362 | <label class="form__label" for="email">E-mail <span class="required">*</span></label> | ||
363 | <input class="form-input form__email" type="email" id="email" name="email" | ||
364 | placeholder="Введите ваш e-mail" required> | ||
365 | |||
366 | <label class="form__label" for="number">Телефон</label> | ||
367 | <input class="form-input form__tel js_input_phone" type="tel" id="number" name="number" | ||
368 | placeholder="+7 (___) ___-__-__"> | ||
369 | </div> | ||
370 | |||
371 | <div class="parts-content-form-top-line-two"> | ||
372 | <label class="form__label form__label-question" for="question">Ваш вопрос <span class="required">*</span></label> | ||
373 | <textarea class="form-input form__question modal-contact-form-question" id="question" name="question" placeholder="Введите текст" | ||
374 | required></textarea><br> | ||
375 | </div> | ||
376 | </div> | ||
377 | <div class="checkboxes-connect"> | ||
378 | <p class="checkboxes-connect__name">Отметьте галочкой предпочтительный канал связи:</p> | ||
379 | <label class="catalog-checkboxes-container label-connect">Телефон | ||
380 | <input type="checkbox" checked="checked" class="check-highload"> | ||
381 | <span class="highload2"></span> | ||
382 | </label> | ||
383 | <label class="catalog-checkboxes-container label-connect">E-mail | ||
384 | <input type="checkbox" class="check-highload"> | ||
385 | <span class="highload2"></span> | ||
386 | </label> | ||
387 | <label class="catalog-checkboxes-container label-connect">Whatsapp | ||
388 | <input type="checkbox" class="check-highload"> | ||
389 | <span class="highload2"></span> | ||
390 | </label> | ||
391 | <label class="catalog-checkboxes-container label-connect">Telegram | ||
392 | <input type="checkbox" checked="checked" class="check-highload"> | ||
393 | <span class="highload2"></span> | ||
394 | </label> | ||
395 | </div> | ||
396 | <div class="parts-content-form-bottom"> | ||
397 | <p class="parts-content-form-bottom__par">Отправляя форму, подтверждаю свое согласие с политикой | ||
398 | конфиденциальности и обработки данных</p> | ||
399 | <button class="parts-content-form-bottom__button" type="submit">Отправить заявку</button> | ||
400 | </div> | ||
401 | </form> | ||
402 | </div> | ||
403 | </section> | ||
404 | <div class="modal-overlay modal-contact-overlay modal-contact-overlay--hidden js_modal_contact_overlay"></div> | ||
405 | |||
406 | </header> | ||
407 | |||
408 | <main> | ||
409 | |||
410 | @if ($message = Session::get('success')) | ||
411 | <section> | ||
412 | <div class="alert alert-success alert-dismissible mt-0" role="alert"> | ||
413 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | ||
414 | <span aria-hidden="true">×</span> | ||
415 | </button> | ||
416 | {{ $message }} | ||
417 | </div> | ||
418 | </section> | ||
419 | @endif | ||
420 | |||
421 | @if ($errors->any()) | ||
422 | <section> | ||
423 | <div class="alert alert-danger alert-dismissible mt-4" role="alert"> | ||
424 | <button type="button" class="close" data-dismiss="alert" aria-label="Закрыть"> | ||
425 | <span aria-hidden="true">×</span> | ||
426 | </button> | ||
427 | <ul class="mb-0"> | ||
428 | @foreach ($errors->all() as $error) | ||
429 | <li>{{ $error }}</li> | ||
430 | @endforeach | ||
431 | </ul> | ||
432 | </div> | ||
433 | </section> | ||
434 | @endif | ||
435 | |||
436 | <section class="account"> | ||
437 | <div class="container"> | ||
438 | <div class="result-links account-top-links"> | ||
439 | <a class="result-links__item" href="{{ route('index') }}">Главная</a><span> /</span> | ||
440 | <a class="result-links__item result-links__item--active" href="{{ route('user.index') }}">Личный кабинет</a> | ||
441 | </div> | ||
442 | <h1 class="account-title"> | ||
443 | Личный кабинет | ||
444 | </h1> | ||
445 | <div class="account-content"> | ||
446 | <div class="account-left"> | ||
447 | <ul class="catalog__tabs account-tabs"> | ||
448 | <li class="tab active account-tabs__item js_my_profile" data-tab=".js-tab_1"> | ||
449 | <a href="{{ route('user.index') }}">Мой профиль</a> | ||
450 | </li> | ||
451 | <li class="tab account-tabs__item" data-tab=".js-tab_2"> | ||
452 | <a href="{{ route('user.index') }}">Категории</a> | ||
453 | <!--<span>(4)</span>--> | ||
454 | </li> | ||
455 | <li class="tab account-tabs__item" data-tab=".js-tab_3"> | ||
456 | <a href="{{ route('admin.banner.index') }}">Баннеры</a> | ||
457 | <!--<span>(48)</span>--> | ||
458 | </li> | ||
459 | <li class="tab account-tabs__item" data-tab=".js-tab_4"> | ||
460 | <a href="{{ route('user.index') }}">Новости</a> | ||
461 | <!--<span>(5)</span>--> | ||
462 | </li> | ||
463 | <li class="tab account-tabs__item" data-tab=".js-tab_5"> | ||
464 | <a href="{{ route('user.index') }}">Товары</a> | ||
465 | </li> | ||
466 | <li class="tab account-tabs__item" data-tab=".js-tab_5"> | ||
467 | <a href="{{ route('user.index') }}">Проекты</a> | ||
468 | </li> | ||
469 | <li class="tab account-tabs__item" data-tab=".js-tab_5"> | ||
470 | <a href="{{ route('user.index') }}">Компания</a> | ||
471 | </li> | ||
472 | </ul> | ||
473 | <a class="account-left__exit" href="{{ route('auth.logout') }}"> | ||
474 | Выйти из аккаунта | ||
475 | </a> | ||
476 | </div> | ||
477 | <div class="tabs__content catalog-content-items"> | ||
478 | <!-- содержимое мой профиль --> | ||
479 | <div class="tabs__item tabs__item-active js-tab_1_"> | ||
480 | @yield('content') | ||
481 | </div> <!-- end --> | ||
482 | </div> | ||
483 | </div> | ||
484 | </div> | ||
485 | </section> | ||
486 | </main> | ||
487 | <footer class="footer"> | ||
488 | <div class="container"> | ||
489 | <div class="footer__wrapper"> | ||
490 | <div class="footer__left"> | ||
491 | <a href="#"> | ||
492 | <img class="footer__left-logo" src="img/footer-logo.png" alt="Векпром лого" /> | ||
493 | </a> | ||
494 | |||
495 | <p class="footer__left-par">Металлообрабатывающее, сварочное | ||
496 | оборудование, иснтрумент</p> | ||
497 | <div class="footer__left-numbers"> | ||
498 | <a href="tel:7495215645">+7 (495) 215-6-45</a> | ||
499 | <a href="tel:88005553463" class="number-2">8 (800) 555-34-63</a> | ||
500 | </div> | ||
501 | <ul class="footer__left-socials"> | ||
502 | <li class="vk"><a href="https://vk.com/" target="_blank"><img src="./img/svg/socials/vk.svg" alt=""></a> | ||
503 | </li> | ||
504 | <li class="youtube"><a href="https://www.youtube.com/" target="_blank"><img | ||
505 | src="./img/svg/socials/youtube.svg" alt=""></a></li> | ||
506 | <li class="telegram"><a href="https://t.me/" target="_blank"><img src="./img/svg/socials/telegram.svg" | ||
507 | alt=""></a></li> | ||
508 | </ul> | ||
509 | <div class="footer__left-rating"> | ||
510 | <p class="yandex">Рейтинг Яндекс</p> | ||
511 | <div class="stars-wrapper"> | ||
512 | <svg class="svg-star"> | ||
513 | <use xlink:href="./img/icons.svg#star"></use> | ||
514 | </svg> | ||
515 | <svg class="svg-star"> | ||
516 | <use xlink:href="./img/icons.svg#star"></use> | ||
517 | </svg> | ||
518 | <svg class="svg-star"> | ||
519 | <use xlink:href="./img/icons.svg#star"></use> | ||
520 | </svg> | ||
521 | <svg class="svg-star"> | ||
522 | <use xlink:href="./img/icons.svg#star"></use> | ||
523 | </svg> | ||
524 | <svg class="svg-star"> | ||
525 | <use xlink:href="./img/icons.svg#star"></use> | ||
526 | </svg> | ||
527 | <span class="yandex-rating">4,9</span> | ||
528 | </div> | ||
529 | </div> | ||
530 | </div> | ||
531 | <div class="footer__centre"> | ||
532 | <div class="footer__centre-col footer__centre-col-1"> | ||
533 | <h4 class="footer__centre-col-title footer-spoiler-button js_comp_btn"> | ||
534 | Компания | ||
535 | </h4> | ||
536 | <ul class="footer__centre-col-nav footer-acc-panel"> | ||
537 | <li class="footer__centre-col-nav-item footer-item footer-hidden-comp js_comp_item"><a href="#">О компании</a></li> | ||
538 | <li class="footer__centre-col-nav-item footer-item footer-hidden-comp js_comp_item"><a href="#">Услуги</a></li> | ||
539 | <li class="footer__centre-col-nav-item footer-item footer-hidden-comp js_comp_item"><a href="#">Демозал</a></li> | ||
540 | <li class="footer__centre-col-nav-item footer-item footer-hidden-comp js_comp_item"><a href="#">Полезные статьи</a></li> | ||
541 | <li class="footer__centre-col-nav-item footer-item footer-hidden-comp js_comp_item"><a href="#">Сотрудничество</a></li> | ||
542 | <li class="footer__centre-col-nav-item footer-item footer-hidden-comp js_comp_item"><a href="#">Поставщики</a></li> | ||
543 | <li class="footer__centre-col-nav-item footer-item footer-hidden-comp js_comp_item"><a href="#">Контакты</a></li> | ||
544 | </ul> | ||
545 | </div> | ||
546 | <div class="footer__centre-col footer__centre-col-2"> | ||
547 | <h4 class="footer__centre-col-title footer-spoiler-button sp-2 js_comp_btn"> | ||
548 | Покупателям | ||
549 | </h4> | ||
550 | <ul class="footer__centre-col-nav footer-acc-panel"> | ||
551 | <li class="footer__centre-col-nav-item"><a href="#">Каталог</a></li> | ||
552 | <li class="footer__centre-col-nav-item"><a href="#">Доставка</a></li> | ||
553 | <li class="footer__centre-col-nav-item"><a href="#">Сервис и гарантия</a></li> | ||
554 | <li class="footer__centre-col-nav-item"><a href="#">Разработка технологий</a></li> | ||
555 | <li class="footer__centre-col-nav-item"><a href="#">Лизинг</a></li> | ||
556 | <li class="footer__centre-col-nav-item"><a href="#">Сертификаты</a></li> | ||
557 | <li class="footer__centre-col-nav-item"><a href="#">Отзывы</a></li> | ||
558 | </ul> | ||
559 | </div> | ||
560 | <div class="centre__bottom"> | ||
561 | <a class="politica" href="#">Политика конфиденциальности</a> | ||
562 | <p class="years">2008-2023 ПГ ВЕКПРОМ</p> | ||
563 | </div> | ||
564 | </div> | ||
565 | |||
566 | <div class="footer__right"> | ||
567 | <h6 class="footer__centre-col-title footer__right-title">Контакты</h6> | ||
568 | <div class="footer__right-contacts"> | ||
569 | <span class="contacts-main">Почта:</span> | ||
570 | <a class="footer__right-contacts-item" href="mailto:info@vekprom.ru">info@vekprom.ru</a> | ||
571 | <p class="contacts-main footer-second">Офис и демозал в городе Жуковский:</p> | ||
572 | <p class="footer__right-contacts-item"> | ||
573 | ул. Чкалова, д. 50 | ||
574 | </p> | ||
575 | <p class="contacts-main">Офис в городе Жуковский:</p> | ||
576 | <p class="footer__right-contacts-item"> | ||
577 | ул. Праволинейная, д 33 | ||
578 | </p> | ||
579 | </div> | ||
580 | </div> | ||
581 | </div> | ||
582 | </div> | ||
583 | </footer> | ||
584 | |||
585 | </div> | ||
586 | |||
587 | <script src="https://cdn.jsdelivr.net/npm/swiper@9/swiper-bundle.min.js"></script> | ||
588 | <script src="https://unpkg.com/imask"></script> | ||
589 | <script src="{{ asset('js/main.js') }}"></script> | ||
590 | </body> | ||
591 | |||
592 | </html> | ||
593 |
resources/views/user/cabinet.blade.php
File was created | 1 | @extends('layout.admin', ['title' => 'Личный кабинет']) | |
2 | |||
3 | @section('content') | ||
4 | <!-- содержимое мой профиль --> | ||
5 | <div class="tabs__item tabs__item-active js-tab_1"> | ||
6 | <!-- главный экран --> | ||
7 | <div class="profile-block-wrapper js_profile_data"> | ||
8 | <div class="profile-block"> | ||
9 | <p class="profile-block__title">Контактное лицо</p> | ||
10 | <p class="profile-block__content">{{ auth()->user()->name }}</p> | ||
11 | </div> | ||
12 | <div class="profile-block"> | ||
13 | <p class="profile-block__title">Название компании</p> | ||
14 | <p class="profile-block__content">ООО “ВЕКПРОМ”</p> | ||
15 | </div> | ||
16 | <div class="profile-block"> | ||
17 | <p class="profile-block__title">E-mail</p> | ||
18 | <p class="profile-block__content">{{ auth()->user()->email }}</p> | ||
19 | </div> | ||
20 | <div class="profile-block"> | ||
21 | <p class="profile-block__title">Телефон</p> | ||
22 | <p class="profile-block__content">+7 965 - 333 - 44 - 44</p> | ||
23 | </div> | ||
24 | <!--<div class="profile-block"> | ||
25 | <label class="form__label form__label-file profile-block__title-file" for="file">Данные компании (для юридических | ||
26 | лиц) | ||
27 | <svg width="14" height="22" class="svg-file"> | ||
28 | <use xlink:href="./img/icons.svg#input-file-oran"></use> | ||
29 | </svg> | ||
30 | <span class="choose-file acc-file">Реквизиты</span> | ||
31 | </label> | ||
32 | <input class="form-input" type="file" id="file" name="file"> | ||
33 | </div>--> | ||
34 | <div class="profile-block-buttons"> | ||
35 | <!--<a class="profile-block-buttons__link-data" href="#">Изменить данные</a>--> | ||
36 | <a class="profile-block-buttons__link-pass js_profile_pass" href="#">Изменить пароль</a> | ||
37 | </div> | ||
38 | </div> | ||
39 | <!-- мой профиль - изменить пароль --> | ||
40 | <div class="change-pass-wrapper change-pass-wrapper--hidden js_change_pass"> | ||
41 | <form class="modal-reg-form profile-pass-change" method="post"> | ||
42 | |||
43 | <label class="form__label label-reg-pass error" for="prof-password">Текущий пароль | ||
44 | <span class="required">*</span> | ||
45 | </label> | ||
46 | <input class="form-input auth-pass-err js_reg_pass" type="password"" id="prof-password" name="password" | ||
47 | placeholder="Введите ваш пароль" required> | ||
48 | <button class="modal-auth-show-pass prof-show-pass js_reg_show_pass"></button> | ||
49 | |||
50 | <label class="form__label label-reg-pass error" for="prof-password-new">Новый пароль | ||
51 | <span class="required">*</span> | ||
52 | </label> | ||
53 | <input class="form-input auth-pass-err js_prof_show_pass" type="password"" id="prof-password-new" name="password" | ||
54 | placeholder="Введите ваш пароль" required> | ||
55 | <button class="modal-auth-show-pass prof-show-pas-sec js_prof_pass_new"></button> | ||
56 | |||
57 | <label class="form__label label-reg auth-label-pass" for="prof-confirm-password">Повторите новый пароль | ||
58 | <span class="required">*</span> | ||
59 | <span class="reg-pass-error reg-pass-error--hidden">Ошибка</span> | ||
60 | </label> | ||
61 | <input class="form-input reg-pass-conf-input js_pass_conf" type="password"" id="prof-confirm-password" | ||
62 | name="confirm-password" placeholder="Введите пароль еще раз" required> | ||
63 | <button class="modal-auth-show-pass prof-show-pas-third js_reg_show_pass_conf"></button> | ||
64 | |||
65 | <div class="parts-content-form-bottom modal-auth-bottom"> | ||
66 | |||
67 | <button class="parts-content-form-bottom__button profile-pass-change__btn" type="submit">Изменить пароль</button> | ||
68 | </div> | ||
69 | </form> | ||
70 | </div> | ||
71 | <!-- мой профиль - изменить пароль - успешно --> | ||
72 | <div class="pass-change-succ pass-change-succ--hidden"> | ||
73 | <h2 class="pass-change-succ__title">Пароль успешно изменен</h2> | ||
74 | <a class="pass-change-succ__btn" href="#">Хорошо</a> | ||
75 | </div> | ||
76 | </div> | ||
77 | <!-- содержимое мои заказы --> | ||
78 | <div class="tabs__item js-tab_2"> | ||
79 | <div class="orders-acc-wrapper"> | ||
80 | <div class="orders-acc"> | ||
81 | <p class="orders-acc__content number"><span>Заказ №:</span>5726482949</p> | ||
82 | <p class="orders-acc__content date"><span>Дата:</span>28.02.2023</p> | ||
83 | <p class="orders-acc__content sum"><span>Сумма заказа:</span>255 600 ₽</p> | ||
84 | <a class="orders-acc__btn js_open_accordion" href="#">Посмотреть заказ</a> | ||
85 | <div class="orders-panel"> | ||
86 | <div class="orders-panel-data"> | ||
87 | <h3 class="orders-panel-data__title">Ваши данные:</h3> | ||
88 | <p class="orders-panel-data__content name">Алексей Витальевич Кржижановский</p> | ||
89 | <p class="orders-panel-data__content number">+7 965 114-44-44</p> | ||
90 | <p class="orders-panel-data__content mail">123465gtyriejkk@mail.ru</p> | ||
91 | </div> | ||
92 | <div class="profile-block"> | ||
93 | <label class="form__label form__label-file orders-panel-title" for="file">Данные компании (для юридических | ||
94 | лиц) | ||
95 | <svg width="14" height="22" class="svg-file orders-panel-svg-act"> | ||
96 | <use xlink:href="./img/icons.svg#input-file-oran"></use> | ||
97 | <span class="choose-file acc-file orders-panel-svg-act">ИП Кржижановский</span> | ||
98 | </svg> | ||
99 | <svg width="14" height="22" class="svg-file orders-panel-svg"> | ||
100 | <use xlink:href="./img/icons.svg#input-file"></use> | ||
101 | <span class="choose-file orders-panel-svg">Отсутствуют</span> | ||
102 | </svg> | ||
103 | </label> | ||
104 | <input class="form-input" type="file" id="file" name="file"> | ||
105 | </div> | ||
106 | |||
107 | </div> | ||
108 | </div> | ||
109 | </div> | ||
110 | </div> | ||
111 | |||
112 | @endsection | ||
113 |
routes/web.php
1 | <?php | 1 | <?php |
2 | 2 | ||
3 | use App\Http\Controllers\Admin\BannerController; | ||
4 | use App\Http\Controllers\Admin\CategoryController; | ||
5 | use App\Http\Controllers\Admin\NewsController; | ||
6 | use App\Http\Controllers\Admin\ProjectController; | ||
7 | use App\Http\Controllers\AdminController; | ||
8 | use App\Http\Controllers\LoginController; | ||
3 | use App\Http\Controllers\MainController; | 9 | use App\Http\Controllers\MainController; |
10 | use App\Http\Controllers\RegisterController; | ||
4 | use Illuminate\Support\Facades\Route; | 11 | use Illuminate\Support\Facades\Route; |
5 | 12 | ||
6 | /* | 13 | /* |
7 | |-------------------------------------------------------------------------- | 14 | |-------------------------------------------------------------------------- |
8 | | Web Routes | 15 | | Web Routes |
9 | |-------------------------------------------------------------------------- | 16 | |-------------------------------------------------------------------------- |
10 | | | 17 | | |
11 | | Here is where you can register web routes for your application. These | 18 | | Here is where you can register web routes for your application. These |
12 | | routes are loaded by the RouteServiceProvider within a group which | 19 | | routes are loaded by the RouteServiceProvider within a group which |
13 | | contains the "web" middleware group. Now create something great! | 20 | | contains the "web" middleware group. Now create something great! |
14 | | | 21 | | |
15 | */ | 22 | */ |
16 | 23 | ||
17 | /* | 24 | /* |
18 | Route::get('/', function () { | 25 | Route::get('/', function () { |
19 | return view('welcome'); | 26 | return view('welcome'); |
20 | }); | 27 | }); |
21 | */ | 28 | */ |
22 | 29 | ||
23 | //Главная страница | 30 | //Главная страница |
24 | Route::get('/',[MainController::class, 'index'])->name('index'); | 31 | Route::get('/',[MainController::class, 'index'])->name('index'); |
25 | 32 | ||
26 | //Каталог | 33 | //Каталог |
27 | Route::get('catalog',[MainController::class, 'catalog'])->name('catalog'); | 34 | Route::get('catalog',[MainController::class, 'catalog'])->name('catalog'); |
28 | 35 | ||
29 | //О компании | 36 | //О компании |
30 | Route::get('company',[MainController::class, 'about_company'])->name('company'); | 37 | Route::get('company',[MainController::class, 'about_company'])->name('company'); |
31 | 38 | ||
32 | //Карточка товара | 39 | //Карточка товара |
33 | Route::get('good',[MainController::class, 'good'])->name('good'); | 40 | Route::get('good',[MainController::class, 'good'])->name('good'); |
34 | 41 | ||
35 | //Упрощенная карточка товара | 42 | //Упрощенная карточка товара |
36 | Route::get('simplegood',[MainController::class, 'simple_good'])->name('simplegood'); | 43 | Route::get('simplegood',[MainController::class, 'simple_good'])->name('simplegood'); |
37 | 44 | ||
45 | Route::group([ | ||
46 | 'as' => 'auth.', // имя маршрута, например auth.index | ||
47 | 'prefix' => 'auth', // префикс маршрута, например auth/index | ||
48 | ], function () { | ||
49 | // Форма регистрации | ||
50 | Route::get('register', [RegisterController::class, 'register'])->name('register'); | ||
51 | |||
52 | // Создание пользователя | ||
53 | Route::post('register', [RegisterController::class, 'create'])->name('create'); | ||
54 | |||
55 | //Форма входа | ||
56 | Route::get('login', [LoginController::class, 'login'])->name('login'); | ||
57 | |||
58 | // аутентификация | ||
59 | Route::post('login', [LoginController::class, 'autenticate'])->name('auth'); | ||
60 | |||
61 | // выход | ||
62 | Route::get('logout', [LoginController::class, 'logout'])->name('logout'); | ||
63 | |||
64 | //Страница неудачной авторизации | ||
65 | Route::get('vefiry-message', function () { | ||
66 | return view('auth.test'); | ||
67 | })->name('vefiry-message'); | ||
68 | |||
69 | }); | ||
70 | |||
71 | /* | ||
72 | * Личный кабинет пользователя | ||
73 | */ | ||
74 | Route::group([ | ||
75 | 'as' => 'user.', // имя маршрута, например user.index | ||
76 | 'prefix' => 'user', // префикс маршрута, например user/index | ||
77 | //'namespace' => 'User', // пространство имен контроллеров | ||
78 | 'middleware' => ['auth'] // один или несколько посредников | ||
79 | ], function () { | ||
80 | // главная страница | ||
81 | Route::get('index', [AdminController::class, 'index'])->name('index'); | ||
82 | }); | ||
83 | |||
84 | Route::group([ | ||
85 | 'as' => 'admin.', // имя маршрута, например admin.index | ||
86 | 'prefix' => 'admin', // префикс маршрута, например admin/index | ||
87 | //'namespace' => 'Admin', // пространство имен контроллеров | ||
88 | 'middleware' => ['auth'] // один или несколько посредников | ||
89 | ], function () { | ||
90 | /* | ||
91 | * CRUD-операции над баннерами | ||
92 | */ | ||
93 | Route::resource('banner', BannerController::class, ['except' => ['show']]); | ||
94 | |||
95 | /* | ||
96 | * CRUD-операции над категориями | ||
97 | */ | ||
98 | Route::resource('category', CategoryController::class, ['except' => ['show']]); | ||
99 | |||
100 | /* | ||
101 | * CRUD-операции над компанией | ||
102 | */ | ||
103 | Route::resource('company', BannerController::class, ['except' => ['create', 'store', 'destroy', 'index']]); | ||
104 | |||
105 | /* | ||
106 | * CRUD-операции над категориями | ||
107 | */ | ||
108 | Route::resource('goods', CategoryController::class, ['except' => ['show']]); | ||
109 | |||
110 | /* | ||
111 | * CRUD-операции над категориями | ||
112 | */ | ||
113 | Route::resource('news', NewsController::class, ['except' => ['show']]); | ||
114 | |||
115 | /* | ||
116 | * CRUD-операции над категориями | ||
117 | */ | ||
118 | Route::resource('project', ProjectController::class, ['except' => ['show']]); | ||
119 | |||
120 | }); | ||
38 | 121 |