миграция для удаления имени пользователя, модальное окно, js-логика, клиентская…

миграция для удаления имени пользователя, модальное окно, js-логика, клиентская валидация, правки по верстке
parent e794075d
...@@ -19,19 +19,18 @@ class UserController extends Controller ...@@ -19,19 +19,18 @@ class UserController extends Controller
//dd($request->all()); //dd($request->all());
$request->validate([ $request->validate([
'name' => 'required',
'email' => 'required|email|unique:users', 'email' => 'required|email|unique:users',
'password' => 'required|confirmed', 'password' => 'required|confirmed',
]); ]);
$user = User::create([ $user = User::create([
'name' => $request->name, // || 'name' => $request->input('name'), //'name' => $request->name, // || 'name' => $request->input('name'),
'email' => $request->email, 'email' => $request->email,
'password' => Hash::make($request->password), 'password' => Hash::make($request->password),
'email_verified_at' => NOW(), 'email_verified_at' => NOW(),
]); ]);
session()->flash('success', 'Successful registration'); session()->flash('success', 'Реєстрація успішна');
Auth::login($user); Auth::login($user);
return redirect()->route('home'); // || redirect()->home(); || redirect('/'); return redirect()->route('home'); // || redirect()->home(); || redirect('/');
} }
...@@ -40,29 +39,32 @@ class UserController extends Controller ...@@ -40,29 +39,32 @@ class UserController extends Controller
//dd($request->all()); //dd($request->all());
$request->validate([ $request->validate([
'name' => 'required',
'email' => 'required|email', 'email' => 'required|email',
'password' => 'required|confirmed', 'password' => 'required|confirmed',
]); ]);
$user = Auth()->user(); $user = Auth()->user();
$user->name = $request->name;
$user->email = $request->email; $user->email = $request->email;
$user->password = Hash::make($request->password); $user->password = Hash::make($request->password);
$user->email_verified_at = NOW(); $user->email_verified_at = NOW();
if ($user->save()) { if ($user->save()) {
session()->flash('success', 'Sittings saved successful'); session()->flash('success', 'Налаштування збережено успішно');
return redirect()->back(); return redirect()->back();
} }
return redirect()->back()->with('error', 'Sittings saving error'); return redirect()->back()->with('error', 'Виникла помилка при збереженні налаштувань');
} }
public function loginForm() { public function loginForm() {
return view('user.login'); return view('user.login');
} }
public function loginAuth() {
$is_auth = true;
return view('user.auth', compact('is_auth'));
}
public function login(Request $request) { public function login(Request $request) {
$request->validate([ $request->validate([
...@@ -76,12 +78,13 @@ class UserController extends Controller ...@@ -76,12 +78,13 @@ class UserController extends Controller
])) { ])) {
return redirect()->route('home'); return redirect()->route('home');
} }
return redirect()->back()->with('error', 'Incorrect login or password'); return redirect()->back()->with('error', 'Введено невiрний Email або пароль');
} }
public function logout(Request $request) { public function logout(Request $request) {
Auth::logout(); Auth::logout();
return redirect()->route('login.create'); //return redirect()->route('login.create');
return redirect()->route('home');
} }
public function settings() { public function settings() {
...@@ -94,7 +97,6 @@ class UserController extends Controller ...@@ -94,7 +97,6 @@ class UserController extends Controller
$user = User::where('email','=', $googleUser->email)->first(); $user = User::where('email','=', $googleUser->email)->first();
if (!$user) { if (!$user) {
$user = User::create([ $user = User::create([
'name' => $googleUser->name,
'email' => $googleUser->email, 'email' => $googleUser->email,
'password' => Hash::make(config('project.empty_password')), 'password' => Hash::make(config('project.empty_password')),
]); ]);
...@@ -111,8 +113,7 @@ class UserController extends Controller ...@@ -111,8 +113,7 @@ class UserController extends Controller
$user = User::where('email','=', $appleUser->email)->first(); $user = User::where('email','=', $appleUser->email)->first();
if (!$user) { if (!$user) {
$user = User::create([ $user = User::create([
'name' => $googleUser->name, 'email' => $appleUser->email,
'email' => $googleUser->email,
'password' => Hash::make(config('project.empty_password')), 'password' => Hash::make(config('project.empty_password')),
]); ]);
} }
......
...@@ -12,6 +12,6 @@ class Authenticate extends Middleware ...@@ -12,6 +12,6 @@ class Authenticate extends Middleware
*/ */
protected function redirectTo(Request $request): ?string protected function redirectTo(Request $request): ?string
{ {
return $request->expectsJson() ? null : route('login'); // перенаправление для не зарегистрированного return $request->expectsJson() ? null : route('login.auth'); // перенаправление для не зарегистрированного
} }
} }
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
"license": "MIT", "license": "MIT",
"require": { "require": {
"php": "^8.1", "php": "^8.1",
"doctrine/dbal": "^3.6",
"genealabs/laravel-sign-in-with-apple": "^0.7.0", "genealabs/laravel-sign-in-with-apple": "^0.7.0",
"genealabs/laravel-socialiter": "^10.0", "genealabs/laravel-socialiter": "^10.0",
"guzzlehttp/guzzle": "^7.2", "guzzlehttp/guzzle": "^7.2",
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "0287343da2ecbdb8d4c4d640fa53b6ac", "content-hash": "0454f6fb0fb8d09966da87472a35d789",
"packages": [ "packages": [
{ {
"name": "brick/math", "name": "brick/math",
...@@ -136,6 +136,349 @@ ...@@ -136,6 +136,349 @@
}, },
"time": "2022-10-27T11:44:00+00:00" "time": "2022-10-27T11:44:00+00:00"
}, },
{
"name": "doctrine/cache",
"version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/cache.git",
"reference": "1ca8f21980e770095a31456042471a57bc4c68fb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb",
"reference": "1ca8f21980e770095a31456042471a57bc4c68fb",
"shasum": ""
},
"require": {
"php": "~7.1 || ^8.0"
},
"conflict": {
"doctrine/common": ">2.2,<2.4"
},
"require-dev": {
"cache/integration-tests": "dev-master",
"doctrine/coding-standard": "^9",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"psr/cache": "^1.0 || ^2.0 || ^3.0",
"symfony/cache": "^4.4 || ^5.4 || ^6",
"symfony/var-exporter": "^4.4 || ^5.4 || ^6"
},
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.",
"homepage": "https://www.doctrine-project.org/projects/cache.html",
"keywords": [
"abstraction",
"apcu",
"cache",
"caching",
"couchdb",
"memcached",
"php",
"redis",
"xcache"
],
"support": {
"issues": "https://github.com/doctrine/cache/issues",
"source": "https://github.com/doctrine/cache/tree/2.2.0"
},
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
"type": "custom"
},
{
"url": "https://www.patreon.com/phpdoctrine",
"type": "patreon"
},
{
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcache",
"type": "tidelift"
}
],
"time": "2022-05-20T20:07:39+00:00"
},
{
"name": "doctrine/dbal",
"version": "3.6.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
"reference": "9a747d29e7e6b39509b8f1847e37a23a0163ea6a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/dbal/zipball/9a747d29e7e6b39509b8f1847e37a23a0163ea6a",
"reference": "9a747d29e7e6b39509b8f1847e37a23a0163ea6a",
"shasum": ""
},
"require": {
"composer-runtime-api": "^2",
"doctrine/cache": "^1.11|^2.0",
"doctrine/deprecations": "^0.5.3|^1",
"doctrine/event-manager": "^1|^2",
"php": "^7.4 || ^8.0",
"psr/cache": "^1|^2|^3",
"psr/log": "^1|^2|^3"
},
"require-dev": {
"doctrine/coding-standard": "12.0.0",
"fig/log-test": "^1",
"jetbrains/phpstorm-stubs": "2022.3",
"phpstan/phpstan": "1.10.14",
"phpstan/phpstan-strict-rules": "^1.5",
"phpunit/phpunit": "9.6.7",
"psalm/plugin-phpunit": "0.18.4",
"squizlabs/php_codesniffer": "3.7.2",
"symfony/cache": "^5.4|^6.0",
"symfony/console": "^4.4|^5.4|^6.0",
"vimeo/psalm": "4.30.0"
},
"suggest": {
"symfony/console": "For helpful console commands such as SQL execution and import of files."
},
"bin": [
"bin/doctrine-dbal"
],
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\DBAL\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
}
],
"description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.",
"homepage": "https://www.doctrine-project.org/projects/dbal.html",
"keywords": [
"abstraction",
"database",
"db2",
"dbal",
"mariadb",
"mssql",
"mysql",
"oci8",
"oracle",
"pdo",
"pgsql",
"postgresql",
"queryobject",
"sasql",
"sql",
"sqlite",
"sqlserver",
"sqlsrv"
],
"support": {
"issues": "https://github.com/doctrine/dbal/issues",
"source": "https://github.com/doctrine/dbal/tree/3.6.3"
},
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
"type": "custom"
},
{
"url": "https://www.patreon.com/phpdoctrine",
"type": "patreon"
},
{
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal",
"type": "tidelift"
}
],
"time": "2023-06-01T05:46:46+00:00"
},
{
"name": "doctrine/deprecations",
"version": "v1.1.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/deprecations.git",
"reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3",
"reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
"doctrine/coding-standard": "^9",
"phpstan/phpstan": "1.4.10 || 1.10.15",
"phpstan/phpstan-phpunit": "^1.0",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"psalm/plugin-phpunit": "0.18.4",
"psr/log": "^1 || ^2 || ^3",
"vimeo/psalm": "4.30.0 || 5.12.0"
},
"suggest": {
"psr/log": "Allows logging deprecations via PSR-3 logger implementation"
},
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
"homepage": "https://www.doctrine-project.org/",
"support": {
"issues": "https://github.com/doctrine/deprecations/issues",
"source": "https://github.com/doctrine/deprecations/tree/v1.1.1"
},
"time": "2023-06-03T09:27:29+00:00"
},
{
"name": "doctrine/event-manager",
"version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/event-manager.git",
"reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/event-manager/zipball/750671534e0241a7c50ea5b43f67e23eb5c96f32",
"reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32",
"shasum": ""
},
"require": {
"php": "^8.1"
},
"conflict": {
"doctrine/common": "<2.9"
},
"require-dev": {
"doctrine/coding-standard": "^10",
"phpstan/phpstan": "^1.8.8",
"phpunit/phpunit": "^9.5",
"vimeo/psalm": "^4.28"
},
"type": "library",
"autoload": {
"psr-4": {
"Doctrine\\Common\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Guilherme Blanco",
"email": "guilhermeblanco@gmail.com"
},
{
"name": "Roman Borschel",
"email": "roman@code-factory.org"
},
{
"name": "Benjamin Eberlei",
"email": "kontakt@beberlei.de"
},
{
"name": "Jonathan Wage",
"email": "jonwage@gmail.com"
},
{
"name": "Johannes Schmitt",
"email": "schmittjoh@gmail.com"
},
{
"name": "Marco Pivetta",
"email": "ocramius@gmail.com"
}
],
"description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.",
"homepage": "https://www.doctrine-project.org/projects/event-manager.html",
"keywords": [
"event",
"event dispatcher",
"event manager",
"event system",
"events"
],
"support": {
"issues": "https://github.com/doctrine/event-manager/issues",
"source": "https://github.com/doctrine/event-manager/tree/2.0.0"
},
"funding": [
{
"url": "https://www.doctrine-project.org/sponsorship.html",
"type": "custom"
},
{
"url": "https://www.patreon.com/phpdoctrine",
"type": "patreon"
},
{
"url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager",
"type": "tidelift"
}
],
"time": "2022-10-12T20:59:15+00:00"
},
{ {
"name": "doctrine/inflector", "name": "doctrine/inflector",
"version": "2.0.6", "version": "2.0.6",
...@@ -2842,6 +3185,55 @@ ...@@ -2842,6 +3185,55 @@
], ],
"time": "2023-02-25T19:38:58+00:00" "time": "2023-02-25T19:38:58+00:00"
}, },
{
"name": "psr/cache",
"version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/cache.git",
"reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
"reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
"shasum": ""
},
"require": {
"php": ">=8.0.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
"Psr\\Cache\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "PHP-FIG",
"homepage": "https://www.php-fig.org/"
}
],
"description": "Common interface for caching libraries",
"keywords": [
"cache",
"psr",
"psr-6"
],
"support": {
"source": "https://github.com/php-fig/cache/tree/3.0.0"
},
"time": "2021-02-03T23:26:27+00:00"
},
{ {
"name": "psr/clock", "name": "psr/clock",
"version": "1.0.0", "version": "1.0.0",
......
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('users', function (Blueprint $table) {
$table -> dropColumn('name');
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('users', function (Blueprint $table) {
//
});
}
};
...@@ -5,26 +5,80 @@ ...@@ -5,26 +5,80 @@
margin-top: 30px; margin-top: 30px;
z-index: 9999; z-index: 9999;
} }
.b-alerts .alert.m-hide
{
display: none;
}
.b-header-menu .b-header-menu
{ {
text-align: right; text-align: right;
} }
/*
+++ Обрезание логина-почты
*/
#navbar
{
max-width: 65%;
}
#navbar>ul
{
max-width: 100%;
}
#navbar, #navbar ul li.dropdown
#navbar ul, {
#navbar ul li.dropdown, max-width: 100%;
}
#navbar ul li.dropdown>a
{
overflow: hidden;
max-width: 100%;
}
#navbar ul li.dropdown span #navbar ul li.dropdown span
{ {
overflow: hidden; overflow: hidden;
text-overflow: ellipsis;
}
/*
--- Обрезание логина-почты
*/
.b-social.m-hide,
.b-auth.m-hide,
.b-email.m-hide,
.b-reg.m-hide,
.soc-link.m-hide,
.modal-header .modal-title.auth.m-hide,
.modal-header .modal-title.reg.m-hide
{
display: none;
}
.modal-body
{
padding: 3rem;
}
.b-social
{
margin: 10px;
} }
#navbar ul li.dropdown span
{
text-overflow: ellipsis;
}
.b-auth-wrap .b-auth-wrap
{ {
height: calc(100vh - 160px); height: calc(100vh - 160px);
...@@ -56,15 +110,3 @@ ...@@ -56,15 +110,3 @@
border: none !important; border: none !important;
} }
.b-email,
.b-social
{
//transition: all 1s ease-out;
//animation: 3s linear 1s slidein;
}
.b-email.m-hide,
.b-social.m-hide
{
display: none;
}
\ No newline at end of file
(function() { (function() {
"use strict"; "use strict";
console.log('AAA login page');
const select = (el, all = false) => {
const select = (el, all = false) => {
el = el.trim() el = el.trim()
if (all) { if (all) {
return [...document.querySelectorAll(el)] return [...document.querySelectorAll(el)]
} else { } else {
return document.querySelector(el) return document.querySelector(el)
} }
} }
const on = (type, el, listener, all = false) => { const on = (type, el, listener, all = false) => {
let selectEl = select(el, all) let selectEl = select(el, all)
if (selectEl) { if (selectEl) {
if (all) { if (all) {
...@@ -21,15 +20,29 @@ ...@@ -21,15 +20,29 @@
selectEl.addEventListener(type, listener) selectEl.addEventListener(type, listener)
} }
} }
} }
let email = select('.b-email');
let social = select('.b-social'); let
social = select('.b-social'),
function ToggleAuthBlock() auth = select('.b-auth'),
email = select('.b-email'),
reg = select('.b-reg'),
authTitle = select('.modal-title.auth'),
regTitle = select('.modal-title.reg');
function ToggleLoginBlock()
{ {
email.classList.toggle('m-hide'); email.classList.toggle('m-hide');
reg.classList.toggle('m-hide');
authTitle.classList.toggle('m-hide');
regTitle.classList.toggle('m-hide');
}
function ToggleAuthBlock()
{
social.classList.toggle('m-hide'); social.classList.toggle('m-hide');
auth.classList.toggle('m-hide');
} }
on('click', '.btn-email', function(e) { on('click', '.btn-email', function(e) {
...@@ -37,13 +50,120 @@ ...@@ -37,13 +50,120 @@
ToggleAuthBlock(); ToggleAuthBlock();
}); });
on('click', '.b-email_back', function(e) { on('click', '.soc-link', function(e) {
e.preventDefault();
ToggleAuthBlock();
});
on('click', '.soc-link2', function(e) {
e.preventDefault(); e.preventDefault();
ToggleAuthBlock(); ToggleAuthBlock();
}); });
on('click', '.auth-link', function(e) {
e.preventDefault();
ToggleLoginBlock();
});
on('click', '.reg-link', function(e) {
e.preventDefault();
ToggleLoginBlock();
});
})();
(function() {
var constraintsAuth = {
email: {
presence: {message: "Email не повинен бути пустим"},
email: {message: "Перевiрте поштову адресу"}
},
password: {
presence: {message: "Пароль не повинен бути пустим"},
},
};
var constraintsReg = {
email: {
presence: {message: "Email не повинен бути пустим"},
email: {message: "Перевiрте поштову адресу"}
},
password: {
presence: {message: "Пароль не повинен бути пустим"},
},
'password_confirmation': {
presence: {message: "Повторiть пароль"},
equality: {
attribute: "password",
message: "Паролi не спiвпадають"
}
},
};
var alertForm = document.querySelector(".b-alerts .alert.form");
var alertAll = document.querySelectorAll(".b-alerts .alert");
// клик извне, чтобы закрыть сообщение ошибок
document.addEventListener( 'click', (e) => {
const withinAlertAll = e.composedPath().includes(alertAll);
if (!withinAlertAll) {
//alertAll.classList.add('m-hide');
alertAll.forEach(function(item){
item.classList.add('m-hide');
})
}
});
var formAuth = document.querySelector("form#auth-form");
formAuth.addEventListener("submit", function(ev) {
ev.preventDefault();
handleFormSubmit(formAuth, constraintsAuth);
});
var formReg = document.querySelector("form#reg-form");
formReg.addEventListener("submit", function(ev) {
ev.preventDefault();
handleFormSubmit(formReg, constraintsReg);
});
var formSet = document.querySelector("form#set-form");
if (formSet) {
formSet.addEventListener("submit", function(ev) {
ev.preventDefault();
handleFormSubmit(formSet, constraintsReg);
});
}
})() function handleFormSubmit(form, constraints) {
\ No newline at end of file var errors = validate(form, constraints, {fullMessages: false});
showErrors(errors || {});
if (!errors) {
form.submit();
}
}
function showErrors(errors) {
if (!Object.keys(errors).length) {
return false;
}
var messageText = '<ul>';
for (const [key, value] of Object.entries(errors)) {
messageText += `<li>${value}</li>`;
}
messageText += '</ul>';
alertForm.innerHTML = messageText;
alertForm.classList.remove('m-hide');
}
})();
\ No newline at end of file
...@@ -282,9 +282,11 @@ ...@@ -282,9 +282,11 @@
const withinDropdown = e.composedPath().includes(navbarDropdown); const withinDropdown = e.composedPath().includes(navbarDropdown);
const withinBoundaries = e.composedPath().includes(navbarDropdownUl); const withinBoundaries = e.composedPath().includes(navbarDropdownUl);
if (withinDropdown && !withinBoundaries) { if (withinDropdown && !withinBoundaries) {
console.log('AAA 1');
e.preventDefault(); e.preventDefault();
navbarDropdownUl.classList.toggle('visible'); navbarDropdownUl.classList.toggle('visible');
} else if (!withinBoundaries) { } else if (!withinBoundaries) {
console.log('AAA 2');
navbarDropdownUl.classList.remove('visible'); navbarDropdownUl.classList.remove('visible');
} }
}); });
......
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
} }
thisForm.querySelector('.loading').classList.add('d-block'); thisForm.querySelector('.loading').classList.add('d-block');
thisForm.querySelector('.error-message').classList.remove('d-block'); thisForm.querySelector('.error-message').classList.remove('d-block');
thisForm.querySelector('.sent-message').classList.remove('d-block');
let formData = new FormData( thisForm ); let formData = new FormData( thisForm );
...@@ -65,7 +64,6 @@ ...@@ -65,7 +64,6 @@
.then(data => { .then(data => {
thisForm.querySelector('.loading').classList.remove('d-block'); thisForm.querySelector('.loading').classList.remove('d-block');
if (data.trim() == 'OK') { if (data.trim() == 'OK') {
thisForm.querySelector('.sent-message').classList.add('d-block');
thisForm.reset(); thisForm.reset();
} else { } else {
throw new Error(data ? data : 'Form submission failed and no error message returned from: ' + action); throw new Error(data ? data : 'Form submission failed and no error message returned from: ' + action);
...@@ -77,8 +75,11 @@ ...@@ -77,8 +75,11 @@
} }
function displayError(thisForm, error) { function displayError(thisForm, error) {
console.log('AAA error = ', error);
thisForm.querySelector('.loading').classList.remove('d-block'); thisForm.querySelector('.loading').classList.remove('d-block');
thisForm.querySelector('.error-message').innerHTML = error; thisForm.querySelector('.error-message').innerHTML = error.message;
thisForm.querySelector('.error-message').classList.add('d-block'); thisForm.querySelector('.error-message').classList.add('d-block');
} }
......
<div class="b-alerts row justify-content-center"> <div class="b-alerts row justify-content-center">
<div class="alert form alert-danger col-4 m-hide">
</div>
@if(session('success')) @if(session('success'))
<div class="alert alert-success col-4"> <div class="alert alert-success col-4">
{{ session('success') }} {{ session('success') }}
......
...@@ -24,6 +24,9 @@ ...@@ -24,6 +24,9 @@
</head> </head>
<body> <body>
<!-- ======= Modal ======= -->
@include('layouts.modal')
<!-- ======= Header ======= --> <!-- ======= Header ======= -->
<header id="header" class="fixed-top"> <header id="header" class="fixed-top">
...@@ -34,10 +37,6 @@ ...@@ -34,10 +37,6 @@
<nav id="navbar" class="navbar"> <nav id="navbar" class="navbar">
<ul> <ul>
@auth @auth
<?php /*?>
$email = auth()->user()->email;
$email_brief = (strlen($email) > 30) ? substr_replace($email, '...', 5, 25) : $email;
<?php */ ?>
<li class="dropdown"><a href="#"><span class="fw-bold">{{ auth()->user()->email }}</span> <i class="bi bi-chevron-down"></i></a> <li class="dropdown"><a href="#"><span class="fw-bold">{{ auth()->user()->email }}</span> <i class="bi bi-chevron-down"></i></a>
<ul> <ul>
<li><a href="{{ url('settings') }}">Налаштування</a></li> <li><a href="{{ url('settings') }}">Налаштування</a></li>
...@@ -46,7 +45,9 @@ ...@@ -46,7 +45,9 @@
</li> </li>
@endauth @endauth
@guest @guest
<li><a class="getstarted" href="{{ route('login.create') }}">Увiйти</a></li> <li>
<a class="getstarted" href="#" data-bs-toggle="modal" data-bs-target="#loginModal">Увiйти</a>
</li>
@endguest @endguest
</ul> </ul>
......
<div class="modal fade" id="loginModal" data-bs-backdrop="static" tabindex="-1" aria-labelledby="loginModalLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title auth">Авторизацiя</h5>
<h5 class="modal-title reg m-hide">Новий акаунт</h5>
@isset ($is_auth)
<a class="btn-close" href="{{ route('home') }}" role="button"></a>
@else
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Закрити"></button>
@endisset
</div>
<div class="modal-body">
<div class="b-social text-center">
<div class="row">
<a class="btn btn-google" href="{{ route('login.google') }}" role="button"><img src="https://img.icons8.com/color/16/000000/google-logo.png"> Sign in with Google</a>
</div>
<br>
<div class="row b-social_apple">
@signInWithApple("white", true, "sign-in", 10)
</div>
<br>
<div class="row">
<a class="btn btn-email" href="#" role="button">Продовжити за допомогою e-mail</a>
</div>
</div>
<div class="b-auth m-hide">
<div class="b-email contact text-center">
<form method="post" action="{{ route('login') }}" class="php-email-form" id="auth-form">
@csrf
<div class="form-group">
<input class="form-control" type="email" id="email_1" name="email" placeholder="Ваша електронна пошта" value="{{ old('email') }}">
<div class="messages"></div>
</div>
<div class="form-group">
<input class="form-control" type="password" id="password_1" name="password" placeholder="Пароль">
<div class="messages"></div>
</div>
<div class="form-group d-flex justify-content-between align-items-center">
<a class="soc-link" href="#">Назад</a>
<a class="reg-link" href="#">Новий акаунт</a>
<button type="submit" class="btn btn-primary">Увiйти</button>
</div>
</form>
</div>
<div class="b-reg contact text-center m-hide">
<form method="post" action="{{ route('register.store') }}" class="php-email-form" id="reg-form">
@csrf
<div class="form-group">
<input class="form-control" type="email" id="email_2" name="email" placeholder="Ваша електронна пошта" value="{{ old('email') }}">
</div>
<div class="form-group">
<input class="form-control" type="password" id="password_2" placeholder="Пароль" name="password">
</div>
<div class="form-group">
<input class="form-control" type="password" id="password_confirmation" name="password_confirmation" placeholder="Підтвердіть пароль">
</div>
<div class="form-group d-flex justify-content-between align-items-center">
<a class="soc-link2" href="#">Назад</a>
<a class="auth-link" href="#">Вже є акаунт</a>
<button type="submit">Зареєструватись</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
...@@ -10,8 +10,11 @@ ...@@ -10,8 +10,11 @@
<script src="assets/vendor/glightbox/js/glightbox.min.js"></script> <script src="assets/vendor/glightbox/js/glightbox.min.js"></script>
<script src="assets/vendor/isotope-layout/isotope.pkgd.min.js"></script> <script src="assets/vendor/isotope-layout/isotope.pkgd.min.js"></script>
<script src="assets/vendor/swiper/swiper-bundle.min.js"></script> <script src="assets/vendor/swiper/swiper-bundle.min.js"></script>
<script src="assets/vendor/php-email-form/validate.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/validate.js/0.13.1/validate.min.js"></script>
<script src="assets/js/main.js"></script> <script src="assets/js/main.js"></script>
<script src="assets/js/login.js"></script>
@endif @endif
\ No newline at end of file
@extends('layouts.layout')
@section('title')Авторизацiя @endsection
@section('page_scripts')
@if(!config('project.minificate_static'))
<script>
document.querySelector('#navbar .getstarted').click();
</script>
@endif
@endsection
...@@ -50,12 +50,12 @@ ...@@ -50,12 +50,12 @@
@csrf @csrf
<div class="form-group"> <div class="form-group">
<label for='email'>Email address</label> <label for='email'>Ваша електронна пошта</label>
<input class="form-control" type="email" id="email" name="email" value="{{ old('email') }}"> <input class="form-control" type="email" id="email" name="email" value="{{ old('email') }}">
</div> </div>
<div class="form-group"> <div class="form-group">
<label for='password'>Password</label> <label for='password'>Пароль</label>
<input class="form-control" type="password" id="password" name="password"> <input class="form-control" type="password" id="password" name="password">
</div> </div>
<br> <br>
......
...@@ -5,31 +5,26 @@ ...@@ -5,31 +5,26 @@
@section('content') @section('content')
<section> <section>
<div class='container'> <div class='container contact'>
<h4>Налаштування</h4> <h4>Налаштування</h4>
<form method="post" action="{{ route('settings.edit') }}"> <form method="post" action="{{ route('settings.edit') }}" class="php-email-form" id="set-form">
@csrf @csrf
<div class="form-group"> <div class="form-group">
<label for='name'>Ваше имя</label> <label for='email'>Ваша електронна пошта</label>
<input class="form-control" type="text" id="name" name="name" value="{{ auth()->user()->name }}">
</div>
<div class="form-group">
<label for='email'>Email address</label>
<input class="form-control" type="email" id="email" name="email" value="{{ auth()->user()->email }}"> <input class="form-control" type="email" id="email" name="email" value="{{ auth()->user()->email }}">
</div> </div>
<div class="form-group"> <div class="form-group">
<label for='password'>Password</label> <label for='password'>Пароль</label>
<input class="form-control" type="password" id="password" name="password"> <input class="form-control" type="password" id="password" name="password">
</div> </div>
<div class="form-group"> <div class="form-group">
<label for='password_confirmation'>Confirm password</label> <label for='password_confirmation'>Підтвердіть пароль</label>
<input class="form-control" type="password" id="password_confirmation" name="password_confirmation"> <input class="form-control" type="password" id="password_confirmation" name="password_confirmation">
</div> </div>
......
...@@ -30,10 +30,10 @@ Route::group(['middleware' => 'guest'], function(){ ...@@ -30,10 +30,10 @@ Route::group(['middleware' => 'guest'], function(){
Route::get('/register', [UserController::class, 'create']) -> name('register.create'); Route::get('/register', [UserController::class, 'create']) -> name('register.create');
Route::post('/register', [UserController::class, 'store']) -> name('register.store'); Route::post('/register', [UserController::class, 'store']) -> name('register.store');
Route::get('/login', [UserController::class, 'loginForm']) -> name('login.create'); Route::get('/login', [UserController::class, 'loginAuth']) -> name('login.auth');
//Route::get('/login', [UserController::class, 'loginForm']) -> name('login.create');
Route::post('/login', [UserController::class, 'login']) -> name('login'); Route::post('/login', [UserController::class, 'login']) -> name('login');
//Auth Google //Auth Google
Route::get('/login/google', function () { Route::get('/login/google', function () {
return Socialite::driver('google')->redirect(); return Socialite::driver('google')->redirect();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment