İlk sürüm: hDiyanetProxy v1.0.0
- Backend: Node.js + Express + MySQL + JWT auth - 8 MySQL tablosu (users, countries, states, cities, prayer_times, ramadan_times, eid_times, fetch_logs) - Diyanet API entegrasyonu (auth + token yönetimi) - Tüm API endpointleri (places, prayer-times, ramadan, eid, admin) - Rate limiting, CORS, input validation - Cron job (gece 02:00 otomatik veri çekme) - Frontend: Login, Dashboard, Fetch Panel, Namaz Vakitleri, Ramazan, Admin, Profil - Admin kullanıcı: admin/admin123
This commit is contained in:
56
backend/src/models/User.js
Normal file
56
backend/src/models/User.js
Normal file
@@ -0,0 +1,56 @@
|
||||
// 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;
|
||||
Reference in New Issue
Block a user