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