From e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d Mon Sep 17 00:00:00 2001 From: Piotr Russ Date: Mon, 16 Nov 2020 00:10:28 +0100 Subject: api, login, auth --- client/src/login/jsx/App.jsx | 39 ++++++++++++++++++ client/src/login/jsx/LoginPanel.jsx | 80 +++++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+) create mode 100644 client/src/login/jsx/App.jsx create mode 100644 client/src/login/jsx/LoginPanel.jsx (limited to 'client/src/login/jsx') diff --git a/client/src/login/jsx/App.jsx b/client/src/login/jsx/App.jsx new file mode 100644 index 0000000..a0109dd --- /dev/null +++ b/client/src/login/jsx/App.jsx @@ -0,0 +1,39 @@ +import React, { useState } from 'react'; +import ReactDOM from 'react-dom'; + +import "../scss/index.scss"; + +import texts from '../../common/data/texts.js'; +import TopBar from '../../common/jsx/TopBar.jsx'; +import Info from '../../common/jsx/Info.jsx'; +import LoginPanel from './LoginPanel.jsx'; + +const App = () => { + const [lang, setLang] = useState('en'); + const [info, setInfo] = useState('login-info'); + const [hover, setHover] = useState(''); + const [user, setUser] = useState(null); + const t = (key) => texts[lang][key] || texts['en'][key]; + + return ( +
+ + + +
+ ) +}; + +ReactDOM.render(, document.getElementById('app')); diff --git a/client/src/login/jsx/LoginPanel.jsx b/client/src/login/jsx/LoginPanel.jsx new file mode 100644 index 0000000..296dc0e --- /dev/null +++ b/client/src/login/jsx/LoginPanel.jsx @@ -0,0 +1,80 @@ +import React, {useState, useEffect} from 'react'; + +const LoginPanel = ({setUser, t}) => { + const [username, setUsername] = useState(''); + const [password, setPassword] = useState(''); + const [active, setActive] = useState(false); + + useEffect(() => { + if (username.length > 4 && password.length > 4) { + setActive(true); + } else { + setActive(false); + } + }, [username, password]) + + const usernameValidation = (e) => { + const value = e.target.value; + const regex = /^[0-9a-zA-Z]+$/; + + if ((value.length < 20 && value.match(regex)) || value === "") { + setUsername(value); + } + }; + + const passwordValidation = (e) => { + e.target.value.length < 20 && setPassword(e.target.value); + }; + + const submit = (e) => { + e.preventDefault(); + if (username === 'admin' && password === 'admin') { + setUser('admin'); + } + } + + return ( +
+
+

+ {t('login-to-admin')} +

+
+ + +
+
+ + +
+
+ +
+
+
+ ); +}; + +export default LoginPanel; -- cgit v1.2.3