import { createRouter, createWebHistory } from 'vue-router'
import Logon from '@/Logon.vue'
import Projects from '@/views/Projects.vue'
import Homepage from '@/views/Homepage.vue'
import Project from '@/views/Project.vue'
import Control from '@/views/Control.vue'
import ControlUsers from '@/views/Control-users.vue'
const routes = [
{
path: '/logon',
name: 'Logon',
component: Logon
},
{
path: '/',
name: 'Homepage',
component: Homepage
},
{
path: '/projects',
name: 'Projects',
component: Projects
},
{
path: '/project',
name: 'Project',
component: Project
},
{
path: '/control',
name: 'control',
component: Control
},
{
path: '/control/control-users',
name: 'control-users',
component: ControlUsers
}
]
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes
})
let isAuth = false
router.beforeEach((to, from, next) => {
if (to.name !== 'Logon' && !localStorage.getItem('authToken')) {
next({ name: 'Logon' })
} else next()
})
router.beforeEach(async (to, from, next) => {
if (localStorage.getItem('authToken') && !isAuth && to.name !== 'Logon') {
const request = await fetch('http://localhost:8000/api/authuser', {
method: 'POST',
credentials: 'same-origin',
headers: {
'Content-type': 'application/json',
Authorization: localStorage.getItem('authToken')
}
})
const response = await request
if (response.status === 200) {
isAuth = true
next(to.fullPath)
} else next({ name: 'Logon' })
} else next()
})
export default router
<?php
namespace App\Http;
use Illuminate\Foundation\Http\Kernel as HttpKernel;
class Kernel extends HttpKernel
{
/**
* The application's global HTTP middleware stack.
*
* These middleware are run during every request to your application.
*
* @var array
*/
protected $middleware = [
// \App\Http\Middleware\TrustHosts::class,
\App\Http\Middleware\TrustProxies::class,
\Fruitcake\Cors\HandleCors::class,
\App\Http\Middleware\PreventRequestsDuringMaintenance::class,
\Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
\App\Http\Middleware\TrimStrings::class,
\Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
/**
* The application's route middleware groups.
*
* @var array
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\Cors::class,
],
];
/**
* The application's route middleware.
*
* These middleware may be assigned to groups or used individually.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
];
}
const productRemoveBtn = document.querySelectorAll('[data-product=remove-product]'); //кнопка удаления у продукта
const modalRemoveBtn = document.querySelector('[data-remove=remove]'); //Кнопка подтвреждения удаления у модального окна
let currentTarget = null;
for(let prb of productRemoveBtn) {
prb.addEventListener('click', function(){
currentTarget = prb;
});
}
modalRemoveBtn.addEventListener('click', function(){
currentTarget.form.submit();
});
<?php
//присвой массив строк в адресной строке разделенные "/";
$parts = $controller->getDataURI();
//присвой первую строку из адресной строки после символа "/" если существует иначе дай строку Index;
$ctrl = $parts[1] ?: 'Index';
//присвой Класс контроллера отвечающий за переданную строку;
$class = 'Classes\Controllers\\' . ucfirst($ctrl);
//инициализация класса контроллера
$ctrl = new $class;
//вызов метода __invoke у вызванного контроллера
$ctrl();
?>
echo "<div>хочу в отпуск!</div>"
вот тебе и основы)