Compare commits
1 Commits
master
...
passwordfi
Author | SHA1 | Date | |
---|---|---|---|
8c9f3aecd8 |
17
api/settings.php
Normal file
17
api/settings.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
require 'Database.php';
|
||||
|
||||
$conn = Database::getInstance()->getConnection();
|
||||
|
||||
|
||||
if (isset($_POST['action'])) {
|
||||
$action = $_POST['action'];
|
||||
switch ($action) {
|
||||
case "isPasswordNeeded":
|
||||
echo '{"password": true}';
|
||||
break;
|
||||
case "checkPassword":
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
34
src/App.js
34
src/App.js
@ -7,11 +7,13 @@ import RandomPage from "./pages/RandomPage/RandomPage";
|
||||
import 'bootstrap/dist/css/bootstrap.min.css';
|
||||
import SettingsPage from "./pages/SettingsPage/SettingsPage";
|
||||
import CategoryPage from "./pages/CategoryPage/CategoryPage";
|
||||
import {Spinner} from "react-bootstrap";
|
||||
import LoginPage from "./pages/LoginPage/LoginPage";
|
||||
|
||||
class App extends React.Component {
|
||||
constructor(props, context) {
|
||||
super(props, context);
|
||||
this.state = {page: "default"};
|
||||
this.state = {page: "unverified"};
|
||||
|
||||
// bind this to the method for being able to call methods such as this.setstate
|
||||
this.showVideo = this.showVideo.bind(this);
|
||||
@ -42,12 +44,42 @@ class App extends React.Component {
|
||||
} else if (this.state.page === "lastpage") {
|
||||
// return back to last page
|
||||
page = this.mypage;
|
||||
} else if (this.state.page === "loginpage") {
|
||||
// return back to last page
|
||||
page = <LoginPage/>;
|
||||
} else if (this.state.page === "unverified") {
|
||||
// return back to last page
|
||||
page =
|
||||
<div className='loadSpinner'>
|
||||
<Spinner style={{marginLeft: "40px", marginBottom: "20px"}} animation="border" role="status">
|
||||
<span className="sr-only">Loading...</span>
|
||||
</Spinner>
|
||||
<div>Content loading...</div>
|
||||
</div>;
|
||||
} else {
|
||||
page = <div>unimplemented yet!</div>;
|
||||
}
|
||||
return (page);
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
const updateRequest = new FormData();
|
||||
updateRequest.append("action", "isPasswordNeeded");
|
||||
|
||||
fetch('/api/settings.php', {method: 'POST', body: updateRequest})
|
||||
.then((response) => response.json()
|
||||
.then((result) => {
|
||||
if (result.password === false) {
|
||||
this.setState({page: "default"});
|
||||
} else {
|
||||
this.setState({page: "loginpage"});
|
||||
}
|
||||
}))
|
||||
.catch(() => {
|
||||
console.log("no connection to backend");
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<div className="App">
|
||||
|
@ -10,3 +10,8 @@
|
||||
.nav-link:hover {
|
||||
color: rgba(255, 255, 255, 1);
|
||||
}
|
||||
|
||||
.loadSpinner {
|
||||
margin-top: 200px;
|
||||
margin-left: 50%;
|
||||
}
|
||||
|
60
src/pages/LoginPage/LoginPage.js
Normal file
60
src/pages/LoginPage/LoginPage.js
Normal file
@ -0,0 +1,60 @@
|
||||
import React from "react";
|
||||
import {Form} from "react-bootstrap";
|
||||
|
||||
class LoginPage extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
|
||||
this.state = {};
|
||||
|
||||
this.props = props;
|
||||
}
|
||||
|
||||
render() {
|
||||
return (
|
||||
<>
|
||||
<div className='pageheader'>
|
||||
<span className='pageheadertitle'>Login Page</span>
|
||||
<span className='pageheadersubtitle'>type correct password!</span>
|
||||
<hr/>
|
||||
</div>
|
||||
<div style={{marginLeft: "35%", width: "400px", marginTop: "100px"}}>
|
||||
<Form.Group>
|
||||
<Form.Label>Password</Form.Label>
|
||||
<Form.Control id='passfield' type="password" placeholder="Enter Password" onChange={(v) => {
|
||||
this.password = v.target.value
|
||||
}}/>
|
||||
<Form.Text className="text-muted">
|
||||
You can disable/enable this feature on settingspage.
|
||||
</Form.Text>
|
||||
<hr/>
|
||||
<button className='btn btn-success' type='submit' onClick={() => this.checkPassword()}>Submit
|
||||
</button>
|
||||
</Form.Group>
|
||||
</div>
|
||||
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
||||
checkPassword() {
|
||||
const updateRequest = new FormData();
|
||||
updateRequest.append("action", "checkPassword");
|
||||
updateRequest.append("password", this.state.password);
|
||||
|
||||
fetch('/api/settings.php', {method: 'POST', body: updateRequest})
|
||||
.then((response) => response.json()
|
||||
.then((result) => {
|
||||
if (result.correct) {
|
||||
// todo 2020-06-18: call a callback to return back to right page
|
||||
} else {
|
||||
// error popup
|
||||
}
|
||||
}))
|
||||
.catch(() => {
|
||||
console.log("no connection to backend");
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export default LoginPage;
|
@ -34,7 +34,10 @@ class SettingsPage extends React.Component {
|
||||
if (this.myinterval) {
|
||||
clearInterval(this.myinterval);
|
||||
}
|
||||
// todo 2020-06-18: maybe not start on mount
|
||||
this.myinterval = setInterval(this.updateStatus, 1000);
|
||||
|
||||
// todo 2020-06-18: fetch path data here
|
||||
}
|
||||
|
||||
componentWillUnmount() {
|
||||
|
Loading…
Reference in New Issue
Block a user