🔧 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;
|
const showInLeaderboard = document.getElementById('showInLeaderboard').checked;
|
||||||
|
|
||||||
// Update player settings
|
// Update player settings using public endpoint (no API key needed)
|
||||||
const response = await fetch(`/api/v1/private/update-player-settings`, {
|
const response = await fetch(`/api/v1/public/update-player-settings`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json'
|
||||||
'Authorization': `Bearer ${localStorage.getItem('apiKey')}`
|
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
player_id: currentPlayerId,
|
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) => {
|
router.post('/v1/private/update-player-settings', requireApiKey, async (req, res) => {
|
||||||
try {
|
try {
|
||||||
const { player_id, show_in_leaderboard } = req.body;
|
const { player_id, show_in_leaderboard } = req.body;
|
||||||
|
|||||||
Reference in New Issue
Block a user