🔧 Fix settings API: Use public endpoint for logged-in users
- Changed from /api/v1/private/update-player-settings to /api/v1/public/update-player-settings - Removed API key requirement for logged-in users - Added both public and private endpoints for flexibility - Fixed 401 Unauthorized error in settings modal
This commit is contained in:
@@ -984,12 +984,11 @@ async function saveSettings() {
|
||||
|
||||
const showInLeaderboard = document.getElementById('showInLeaderboard').checked;
|
||||
|
||||
// Update player settings
|
||||
const response = await fetch(`/api/v1/private/update-player-settings`, {
|
||||
// Update player settings using public endpoint (no API key needed)
|
||||
const response = await fetch(`/api/v1/public/update-player-settings`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': `Bearer ${localStorage.getItem('apiKey')}`
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({
|
||||
player_id: currentPlayerId,
|
||||
|
||||
@@ -2911,7 +2911,51 @@ router.get('/achievements/leaderboard', async (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
// Update player settings (privacy settings)
|
||||
// Update player settings (privacy settings) - Public endpoint for authenticated users
|
||||
router.post('/v1/public/update-player-settings', async (req, res) => {
|
||||
try {
|
||||
const { player_id, show_in_leaderboard } = req.body;
|
||||
|
||||
if (!player_id) {
|
||||
return res.status(400).json({
|
||||
success: false,
|
||||
message: 'Player ID ist erforderlich'
|
||||
});
|
||||
}
|
||||
|
||||
// Update player settings
|
||||
const updateQuery = `
|
||||
UPDATE players
|
||||
SET show_in_leaderboard = $1, updated_at = NOW()
|
||||
WHERE id = $2
|
||||
RETURNING id, firstname, lastname, show_in_leaderboard
|
||||
`;
|
||||
|
||||
const result = await pool.query(updateQuery, [show_in_leaderboard || false, player_id]);
|
||||
|
||||
if (result.rows.length === 0) {
|
||||
return res.status(404).json({
|
||||
success: false,
|
||||
message: 'Spieler nicht gefunden'
|
||||
});
|
||||
}
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
message: 'Einstellungen erfolgreich aktualisiert',
|
||||
data: result.rows[0]
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
console.error('Error updating player settings:', error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: 'Fehler beim Aktualisieren der Einstellungen'
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Update player settings (privacy settings) - Private endpoint with API key
|
||||
router.post('/v1/private/update-player-settings', requireApiKey, async (req, res) => {
|
||||
try {
|
||||
const { player_id, show_in_leaderboard } = req.body;
|
||||
|
||||
Reference in New Issue
Block a user