// hDiyanetProxy - Kullanıcı Modeli const pool = require('../utils/db'); const bcrypt = require('bcrypt'); const UserModel = { // Kullanıcı adına göre bul async findByUsername(username) { const [rows] = await pool.execute('SELECT * FROM users WHERE username = ?', [username]); return rows[0] || null; }, // ID'ye göre bul async findById(id) { const [rows] = await pool.execute('SELECT id, username, role, is_active, created_at FROM users WHERE id = ?', [id]); return rows[0] || null; }, // Yeni kullanıcı oluştur async create(username, password, role = 'user') { const hashedPassword = await bcrypt.hash(password, 10); const [result] = await pool.execute( 'INSERT INTO users (username, password, role) VALUES (?, ?, ?)', [username, hashedPassword, role] ); return { id: result.insertId, username, role }; }, // Şifre doğrula async verifyPassword(plainPassword, hashedPassword) { return bcrypt.compare(plainPassword, hashedPassword); }, // Tüm kullanıcıları listele async findAll() { const [rows] = await pool.execute('SELECT id, username, role, is_active, created_at, updated_at FROM users ORDER BY id'); return rows; }, // Kullanıcıyı aktif/pasif yap async toggleActive(id, isActive) { await pool.execute('UPDATE users SET is_active = ? WHERE id = ?', [isActive ? 1 : 0, id]); }, // Kullanıcı sil async delete(id) { await pool.execute('DELETE FROM users WHERE id = ?', [id]); }, // Şifre güncelle async updatePassword(id, newPassword) { const hashedPassword = await bcrypt.hash(newPassword, 10); await pool.execute('UPDATE users SET password = ? WHERE id = ?', [hashedPassword, id]); } }; module.exports = UserModel;