mirror of
https://github.com/dec0dOS/zero-ui.git
synced 2025-07-06 04:51:44 -07:00
commit
9b519079ca
4 changed files with 34 additions and 8 deletions
|
@ -153,6 +153,7 @@ Advanced manual setups are also supported. Check the following environment varia
|
|||
| ZU_DEFAULT_USERNAME | unset (`docker-compose.yml`: admin) | Default username that will be set on the first run |
|
||||
| ZU_DEFAULT_PASSWORD | unset (`docker-compose.yml`: zero-ui) | Default password that will be set on the first run |
|
||||
| ZU_DATAPATH | `data/db.json` | ZeroUI data storage path |
|
||||
| ZU_DISABLE_AUTH | unset | If set to true, automatically log in all users. This is useful if ZeroUI is protected by an authentication proxy |
|
||||
|
||||
ZeroUI could be deployed as a regular nodejs web application, but it requires ZeroTier controller that is installed with `zerotier-one` package. More info about the network controller you could read [here](https://github.com/zerotier/ZeroTierOne/tree/master/controller/#readme).
|
||||
|
||||
|
|
|
@ -3,6 +3,14 @@ const router = express.Router();
|
|||
|
||||
const auth = require("../services/auth");
|
||||
|
||||
router.get("/login", async function (req, res) {
|
||||
if (process.env.ZU_DISABLE_AUTH === "true") {
|
||||
res.send({ enabled: false });
|
||||
} else {
|
||||
res.send({ enabled: true });
|
||||
}
|
||||
});
|
||||
|
||||
router.post("/login", async function (req, res) {
|
||||
if (req.body.username && req.body.password) {
|
||||
auth.authorize(req.body.username, req.body.password, function (err, user) {
|
||||
|
|
|
@ -20,14 +20,18 @@ async function authorize(username, password, callback) {
|
|||
|
||||
exports.isAuthorized = isAuthorized;
|
||||
async function isAuthorized(req, res, next) {
|
||||
if (req.token) {
|
||||
const user = await db.get("users").find({ token: req.token }).value();
|
||||
if (user) {
|
||||
next();
|
||||
} else {
|
||||
res.status(403).send({ error: "Invalid token" });
|
||||
}
|
||||
if (process.env.ZU_DISABLE_AUTH === "true") {
|
||||
next();
|
||||
} else {
|
||||
res.status(401).send({ error: "Specify token" });
|
||||
if (req.token) {
|
||||
const user = await db.get("users").find({ token: req.token }).value();
|
||||
if (user) {
|
||||
next();
|
||||
} else {
|
||||
res.status(403).send({ error: "Invalid token" });
|
||||
}
|
||||
} else {
|
||||
res.status(401).send({ error: "Specify token" });
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,19 @@
|
|||
import { Grid, Typography } from "@material-ui/core";
|
||||
import { useLocalStorage } from "react-use";
|
||||
import axios from "axios";
|
||||
import { useHistory } from "react-router-dom";
|
||||
|
||||
function HomeLoggedOut() {
|
||||
const [, setLoggedIn] = useLocalStorage("loggedIn", false);
|
||||
const [, setToken] = useLocalStorage("token", null);
|
||||
const history = useHistory();
|
||||
axios.get("/auth/login").then(function (response) {
|
||||
if (!response.data.enabled) {
|
||||
setLoggedIn(true);
|
||||
setToken("");
|
||||
history.go(0);
|
||||
}
|
||||
});
|
||||
return (
|
||||
<Grid
|
||||
container
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue