forked from external-repos/noisedash
Register users from admin page
This commit is contained in:
@@ -15,7 +15,7 @@ module.exports = function () {
|
||||
|
||||
db.run(`CREATE TABLE IF NOT EXISTS profiles (
|
||||
id INTEGER PRIMARY KEY,
|
||||
name TEXT UNIQUE,
|
||||
name TEXT,
|
||||
user INTEGER,
|
||||
timer_enabled INTEGER,
|
||||
duration INTEGER,
|
||||
@@ -31,7 +31,8 @@ module.exports = function () {
|
||||
tremolo_enabled INTEGER,
|
||||
tremolo_frequency REAL,
|
||||
tremolo_depth REAL,
|
||||
FOREIGN KEY(user) REFERENCES users(id))`
|
||||
FOREIGN KEY(user) REFERENCES users(id),
|
||||
UNIQUE(user,name))`
|
||||
)
|
||||
|
||||
db.run(`CREATE TABLE IF NOT EXISTS samples (
|
||||
|
||||
@@ -185,6 +185,7 @@ router.post('/profiles/default', (req, res) => {
|
||||
],
|
||||
function (err) {
|
||||
if (err) {
|
||||
console.log('ERROR: ', err)
|
||||
return res.sendStatus(500)
|
||||
} else {
|
||||
return res.json({ id: this.lastID })
|
||||
|
||||
@@ -29,10 +29,6 @@ router.get('/users/current', (req, res) => {
|
||||
})
|
||||
|
||||
router.get('/users', (req, res) => {
|
||||
if (!req.user) {
|
||||
return res.sendStatus(401)
|
||||
}
|
||||
|
||||
const users = []
|
||||
|
||||
db.all('SELECT id, username, name, is_admin as isAdmin, can_upload as canUpload FROM users', (err, rows) => {
|
||||
@@ -57,42 +53,94 @@ router.get('/users', (req, res) => {
|
||||
})
|
||||
|
||||
router.post('/users', (req, res) => {
|
||||
const salt = crypto.randomBytes(16)
|
||||
crypto.pbkdf2(req.body.password, salt, 10000, 32, 'sha256', (err, hashedPassword) => {
|
||||
if (err) {
|
||||
return res.sendStatus(500)
|
||||
}
|
||||
|
||||
db.run(`INSERT INTO users (username, hashed_password, salt, name, is_admin, dark_mode, can_upload)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?)`, [
|
||||
req.body.username,
|
||||
hashedPassword,
|
||||
salt,
|
||||
req.body.name,
|
||||
req.body.isAdmin,
|
||||
req.body.darkMode,
|
||||
req.body.canUpload
|
||||
], function (err) {
|
||||
db.serialize(() => {
|
||||
db.get('SELECT COUNT(*) as count FROM users', (err, row) => {
|
||||
if (err) {
|
||||
if (err.code === 'SQLITE_CONSTRAINT') {
|
||||
return res.sendStatus(409)
|
||||
} else {
|
||||
return res.sendStatus(500)
|
||||
}
|
||||
return res.sendStatus(500)
|
||||
}
|
||||
|
||||
const user = {
|
||||
id: this.lastID.toString(),
|
||||
username: req.body.username,
|
||||
displayName: req.body.name
|
||||
}
|
||||
req.login(user, (err) => {
|
||||
if (err) {
|
||||
return res.sendStatus(500)
|
||||
} else {
|
||||
return res.sendStatus(200)
|
||||
if (row.count !== 0) {
|
||||
if (!req.user) {
|
||||
return res.sendStatus(401)
|
||||
}
|
||||
})
|
||||
|
||||
db.get('SELECT is_admin as isAdmin FROM users WHERE id = ?', [req.user.id], (err, row) => {
|
||||
if (err) {
|
||||
return res.sendStatus(500)
|
||||
}
|
||||
|
||||
if (row.isAdmin !== 1) {
|
||||
return res.sendStatus(401)
|
||||
}
|
||||
|
||||
const salt = crypto.randomBytes(16)
|
||||
crypto.pbkdf2(req.body.password, salt, 10000, 32, 'sha256', (err, hashedPassword) => {
|
||||
if (err) {
|
||||
return res.sendStatus(500)
|
||||
}
|
||||
|
||||
db.run(`INSERT INTO users (username, hashed_password, salt, name, is_admin, dark_mode, can_upload)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?)`, [
|
||||
req.body.username,
|
||||
hashedPassword,
|
||||
salt,
|
||||
req.body.name,
|
||||
req.body.isAdmin,
|
||||
req.body.darkMode,
|
||||
req.body.canUpload
|
||||
], (err) => {
|
||||
if (err) {
|
||||
if (err.code === 'SQLITE_CONSTRAINT') {
|
||||
return res.sendStatus(409)
|
||||
} else {
|
||||
return res.sendStatus(500)
|
||||
}
|
||||
}
|
||||
|
||||
return res.sendStatus(200)
|
||||
})
|
||||
})
|
||||
})
|
||||
} else {
|
||||
const salt = crypto.randomBytes(16)
|
||||
crypto.pbkdf2(req.body.password, salt, 10000, 32, 'sha256', (err, hashedPassword) => {
|
||||
if (err) {
|
||||
return res.sendStatus(500)
|
||||
}
|
||||
|
||||
db.run(`INSERT INTO users (username, hashed_password, salt, name, is_admin, dark_mode, can_upload)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?)`, [
|
||||
req.body.username,
|
||||
hashedPassword,
|
||||
salt,
|
||||
req.body.name,
|
||||
req.body.isAdmin,
|
||||
req.body.darkMode,
|
||||
req.body.canUpload
|
||||
], function (err) {
|
||||
if (err) {
|
||||
if (err.code === 'SQLITE_CONSTRAINT') {
|
||||
return res.sendStatus(409)
|
||||
} else {
|
||||
return res.sendStatus(500)
|
||||
}
|
||||
}
|
||||
|
||||
const user = {
|
||||
id: this.lastID.toString(),
|
||||
username: req.body.username,
|
||||
displayName: req.body.name
|
||||
}
|
||||
req.login(user, (err) => {
|
||||
if (err) {
|
||||
return res.sendStatus(500)
|
||||
} else {
|
||||
return res.sendStatus(200)
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user