Add users table and create default admin
This commit is contained in:
parent
2ba0e81086
commit
356aed0338
19
index.js
19
index.js
|
@ -77,9 +77,26 @@ app.listen(port, (err) => {
|
||||||
global.log.info(`Listening on port :${port}`);
|
global.log.info(`Listening on port :${port}`);
|
||||||
global.log.debug(`DSN: ${DSN}`);
|
global.log.debug(`DSN: ${DSN}`);
|
||||||
db.query("SELECT * FROM ACL LIMIT 1;")
|
db.query("SELECT * FROM ACL LIMIT 1;")
|
||||||
.then(() => {
|
.then(async () => {
|
||||||
dbReady = true;
|
dbReady = true;
|
||||||
global.log.info("Database connection established");
|
global.log.info("Database connection established");
|
||||||
|
|
||||||
|
// Do init stuff
|
||||||
|
await db.query("CREATE TABLE IF NOT EXISTS users ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(255) UNIQUE, passwordHash VARCHAR(), perms TEXT, createdAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP );");
|
||||||
|
db.query("SELECT COUNT(*) AS count FROM users;").then(async (res) => {
|
||||||
|
if (res[0].count === 0) {
|
||||||
|
const defaultUser = process.env.DEFAULT_USER || "admin";
|
||||||
|
const defaultPassword = process.env.DEFAULT_PASSWORD || [...Array(32)].map(() => (Math.random().toString(36)+Math.random().toString(32)).charAt(2)).join('');
|
||||||
|
const passwordHash = await global.hashPassword(defaultPassword);
|
||||||
|
db.query("INSERT INTO users (username, passwordHash, perms) VALUES (?, ?, ?);", [defaultUser, passwordHash, JSON.stringify(["*", "login", "acl", "liveMonitor", "eventLog", "auditLog", "manageUsers"])])
|
||||||
|
.then(() => {
|
||||||
|
global.log.info(`Created default admin user '${defaultUser}' with password '${defaultPassword}'`);
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
global.log.error(`Cannot create default user: ${err}`);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
})
|
})
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
global.log.error(`Database connection failed: ${err}`);
|
global.log.error(`Database connection failed: ${err}`);
|
||||||
|
|
|
@ -4,7 +4,7 @@ const router = express.Router();
|
||||||
|
|
||||||
// GET /login
|
// GET /login
|
||||||
router.get('/', (req, res) => {
|
router.get('/', (req, res) => {
|
||||||
if (!req.session.user) return res.redirect('/login');
|
if (!req.session.user) return res.redirect('/login?err=4');
|
||||||
return res.render("dashboard", { sessionData: req.session });
|
return res.render("dashboard", { sessionData: req.session });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue