From 5c83b8717cd3498e52f75f0e4f1f413d296d4683 Mon Sep 17 00:00:00 2001 From: vasya Date: Sat, 14 Mar 2026 20:27:12 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B2=D1=81=D0=B5=20=D1=81=D0=BA=D1=80=D0=B8?= =?UTF-8?q?=D0=BF=D1=82=D1=8B=20=D0=B4=D0=BB=D1=8F=20=D1=84=D1=80=D0=BE?= =?UTF-8?q?=D0=BD=D1=82=D0=B0=20=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86?= =?UTF-8?q?=D1=8B=20=D1=81=20=D1=84=D0=BE=D1=80=D0=BC=D0=BE=D0=B9=20=D0=B0?= =?UTF-8?q?=D1=83=D1=82=D0=B5=D0=BD=D1=82=D0=B8=D1=84=D0=B8=D0=BA=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/js/components/MagicLogin.tsx | 34 ++++++++++++++++++++++++ resources/js/magicLogin.tsx | 7 +++++ resources/js/services/getCsrfService.tsx | 20 ++++++++++++++ resources/views/magic_login.blade.php | 20 ++++++++++++++ 4 files changed, 81 insertions(+) create mode 100644 resources/js/components/MagicLogin.tsx create mode 100644 resources/js/magicLogin.tsx create mode 100644 resources/js/services/getCsrfService.tsx create mode 100644 resources/views/magic_login.blade.php diff --git a/resources/js/components/MagicLogin.tsx b/resources/js/components/MagicLogin.tsx new file mode 100644 index 0000000..e5f0740 --- /dev/null +++ b/resources/js/components/MagicLogin.tsx @@ -0,0 +1,34 @@ +import React from "react"; +import { useEffect, useState } from "react"; +import { getCsrfToken } from './../services/getCsrfService'; + +function MagicLogin () +{ + //Состояние с введенным логином + const [userLogin, setUserLogin] = useState(''); + + return ( +
+
Magic
+
+
+ + setUserLogin(e.target.value) } placeholder="Логин" required/> + + +
+
+
+ ); +} + +export default MagicLogin; diff --git a/resources/js/magicLogin.tsx b/resources/js/magicLogin.tsx new file mode 100644 index 0000000..c9f9a34 --- /dev/null +++ b/resources/js/magicLogin.tsx @@ -0,0 +1,7 @@ +import { createRoot } from 'react-dom/client'; +import MagicLogin from './components/MagicLogin.tsx'; +import React from 'react'; + +const container = document.getElementById('root')!; +const root = createRoot(container); +root.render(); diff --git a/resources/js/services/getCsrfService.tsx b/resources/js/services/getCsrfService.tsx new file mode 100644 index 0000000..12e160d --- /dev/null +++ b/resources/js/services/getCsrfService.tsx @@ -0,0 +1,20 @@ +/** + * Сервис для полуения csrt токена для размещения в формах + * @date 24.07.2025 + * @author dgavrilov + */ + +export const getCsrfToken = ():string => { + const METATAG:HTMLElement|null = document.querySelector('meta[name="csrf-token"]'); + + if (!METATAG) { + return ''; + } + + const CSRFTOKEN:string|null = METATAG.getAttribute('content'); + if (!CSRFTOKEN) { + return ''; + } + + return CSRFTOKEN; +} diff --git a/resources/views/magic_login.blade.php b/resources/views/magic_login.blade.php new file mode 100644 index 0000000..0086908 --- /dev/null +++ b/resources/views/magic_login.blade.php @@ -0,0 +1,20 @@ + + + + + + + + Laravel + React + + + @viteReactRefresh + + @vite(['resources/css/magicLogin.css', 'resources/js/magicLogin.tsx']) + + + +
+ + + \ No newline at end of file