mirror of
https://github.com/donpat1to/Schichtenplaner.git
synced 2025-11-30 22:45:46 +01:00
added changing password frontend backend
This commit is contained in:
@@ -365,4 +365,36 @@ export const updateAvailabilities = async (req: AuthRequest, res: Response): Pro
|
||||
console.error('Error updating availabilities:', error);
|
||||
res.status(500).json({ error: 'Internal server error' });
|
||||
}
|
||||
};
|
||||
|
||||
export const changePassword = async (req: AuthRequest, res: Response): Promise<void> => {
|
||||
try {
|
||||
const { id } = req.params;
|
||||
const { currentPassword, newPassword } = req.body;
|
||||
|
||||
// Check if employee exists and get password
|
||||
const employee = await db.get<{ password: string }>('SELECT password FROM employees WHERE id = ?', [id]);
|
||||
if (!employee) {
|
||||
res.status(404).json({ error: 'Employee not found' });
|
||||
return;
|
||||
}
|
||||
|
||||
// Verify current password
|
||||
const isValidPassword = await bcrypt.compare(currentPassword, employee.password);
|
||||
if (!isValidPassword) {
|
||||
res.status(400).json({ error: 'Current password is incorrect' });
|
||||
return;
|
||||
}
|
||||
|
||||
// Hash new password
|
||||
const hashedPassword = await bcrypt.hash(newPassword, 10);
|
||||
|
||||
// Update password
|
||||
await db.run('UPDATE employees SET password = ? WHERE id = ?', [hashedPassword, id]);
|
||||
|
||||
res.json({ message: 'Password updated successfully' });
|
||||
} catch (error) {
|
||||
console.error('Error changing password:', error);
|
||||
res.status(500).json({ error: 'Internal server error' });
|
||||
}
|
||||
};
|
||||
@@ -710,7 +710,7 @@ export const getTemplates = async (req: Request, res: Response): Promise<void> =
|
||||
};
|
||||
|
||||
// Neue Funktion: Create from Template
|
||||
export const createFromTemplate = async (req: Request, res: Response): Promise<void> => {
|
||||
/*export const createFromTemplate = async (req: Request, res: Response): Promise<void> => {
|
||||
try {
|
||||
const { templatePlanId, name, startDate, endDate, description } = req.body;
|
||||
const userId = (req as AuthRequest).user?.userId;
|
||||
@@ -800,4 +800,4 @@ export const createFromTemplate = async (req: Request, res: Response): Promise<v
|
||||
console.error('Error creating plan from template:', error);
|
||||
res.status(500).json({ error: 'Internal server error' });
|
||||
}
|
||||
};
|
||||
};*/
|
||||
@@ -8,7 +8,8 @@ import {
|
||||
updateEmployee,
|
||||
deleteEmployee,
|
||||
getAvailabilities,
|
||||
updateAvailabilities
|
||||
updateAvailabilities,
|
||||
changePassword
|
||||
} from '../controllers/employeeController.js';
|
||||
|
||||
const router = express.Router();
|
||||
@@ -22,6 +23,7 @@ router.get('/:id', requireRole(['admin', 'instandhalter']), getEmployee);
|
||||
router.post('/', requireRole(['admin']), createEmployee);
|
||||
router.put('/:id', requireRole(['admin']), updateEmployee);
|
||||
router.delete('/:id', requireRole(['admin']), deleteEmployee);
|
||||
router.put('/:id/password', requireRole(['admin']), changePassword);
|
||||
|
||||
// Availability Routes
|
||||
router.get('/:employeeId/availabilities', requireRole(['admin', 'instandhalter']), getAvailabilities);
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
updateShiftPlan,
|
||||
deleteShiftPlan,
|
||||
getTemplates,
|
||||
createFromTemplate,
|
||||
//createFromTemplate,
|
||||
createFromPreset
|
||||
} from '../controllers/shiftPlanController.js';
|
||||
|
||||
@@ -31,7 +31,7 @@ router.get('/:id', getShiftPlan);
|
||||
router.post('/', requireRole(['admin', 'instandhalter']), createShiftPlan);
|
||||
|
||||
// POST create new plan from template
|
||||
router.post('/from-template', requireRole(['admin', 'instandhalter']), createFromTemplate);
|
||||
//router.post('/from-template', requireRole(['admin', 'instandhalter']), createFromTemplate);
|
||||
|
||||
// POST create new plan from preset
|
||||
router.post('/from-preset', requireRole(['admin', 'instandhalter']), createFromPreset);
|
||||
|
||||
Reference in New Issue
Block a user