User creation and management
This commit is contained in:
@@ -21,6 +21,7 @@ export interface User {
|
||||
id?: number
|
||||
username: string
|
||||
password: string
|
||||
is_admin: number
|
||||
}
|
||||
|
||||
export function getDatabase() {
|
||||
@@ -49,7 +50,8 @@ export function getDatabase() {
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
username TEXT UNIQUE NOT NULL,
|
||||
password TEXT NOT NULL
|
||||
password TEXT NOT NULL,
|
||||
is_admin INTEGER DEFAULT 0
|
||||
)
|
||||
`)
|
||||
|
||||
@@ -63,7 +65,7 @@ export function getDatabase() {
|
||||
// Hash the password before storing
|
||||
const saltRounds = 10
|
||||
const hashedPassword = bcrypt.hashSync(adminPassword, saltRounds)
|
||||
db.prepare('INSERT INTO users (username, password) VALUES (?, ?)').run(adminUsername, hashedPassword)
|
||||
db.prepare('INSERT INTO users (username, password, is_admin) VALUES (?, ?, 1)').run(adminUsername, hashedPassword)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -117,3 +119,32 @@ export function getUserByUsername(username: string) {
|
||||
const db = getDatabase()
|
||||
return db.prepare('SELECT * FROM users WHERE username = ?').get(username) as User | undefined
|
||||
}
|
||||
|
||||
export function createUser(username: string, password: string) {
|
||||
const db = getDatabase()
|
||||
const saltRounds = 10
|
||||
const hashedPassword = bcrypt.hashSync(password, saltRounds)
|
||||
return db.prepare('INSERT INTO users (username, password, is_admin) VALUES (?, ?, 0)').run(username, hashedPassword)
|
||||
}
|
||||
|
||||
export function getAllUsers() {
|
||||
const db = getDatabase()
|
||||
return db.prepare('SELECT id, username, is_admin FROM users ORDER BY username').all() as Omit<User, 'password'>[]
|
||||
}
|
||||
|
||||
export function deleteUser(id: number) {
|
||||
const db = getDatabase()
|
||||
return db.prepare('DELETE FROM users WHERE id = ?').run(id)
|
||||
}
|
||||
|
||||
export function updateUserRole(id: number, isAdmin: number) {
|
||||
const db = getDatabase()
|
||||
return db.prepare('UPDATE users SET is_admin = ? WHERE id = ?').run(isAdmin, id)
|
||||
}
|
||||
|
||||
export function resetUserPassword(id: number, newPassword: string) {
|
||||
const db = getDatabase()
|
||||
const saltRounds = 10
|
||||
const hashedPassword = bcrypt.hashSync(newPassword, saltRounds)
|
||||
return db.prepare('UPDATE users SET password = ? WHERE id = ?').run(hashedPassword, id)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user