API scheiß
This commit is contained in:
1
.env.docker
Normal file
1
.env.docker
Normal file
@@ -0,0 +1 @@
|
||||
VITE_API_TARGET=http://spring-backend:5173
|
||||
@@ -7,6 +7,8 @@ RUN npm install
|
||||
|
||||
COPY . .
|
||||
|
||||
ENV VITE_API_TARGET=http://spring-backend:5173
|
||||
|
||||
EXPOSE 8080
|
||||
|
||||
CMD ["npm", "run", "dev", "--", "--host", "--port", "8080"]
|
||||
@@ -64,7 +64,7 @@ export default function CreateNewsPage() {
|
||||
formData.append('data', new Blob([JSON.stringify(jsonPayload)], { type: 'application/json' }));
|
||||
files.forEach((file) => formData.append('images', file));
|
||||
|
||||
await axiosInstance.post('/api/news', formData, {
|
||||
await axiosInstance.post('/news', formData, {
|
||||
headers: { 'Content-Type': 'multipart/form-data' },
|
||||
});
|
||||
navigate('/posts');
|
||||
|
||||
@@ -44,7 +44,7 @@ export default function EditOrganizationPage() {
|
||||
useEffect(() => {
|
||||
const fetchData = async () => {
|
||||
try {
|
||||
const response = await axiosInstance.get('/api/organizations/' + id);
|
||||
const response = await axiosInstance.get('/organizations/' + id);
|
||||
const data = response.data;
|
||||
|
||||
setData(data);
|
||||
|
||||
@@ -29,7 +29,7 @@ export default function OrganizationPage() {
|
||||
|
||||
const loadOrganizations = async () => {
|
||||
try {
|
||||
const { data } = await axiosInstance.get('/api/organization');
|
||||
const { data } = await axiosInstance.get('/organization');
|
||||
setRows(data);
|
||||
} catch {
|
||||
setError('Fehler beim Laden der Organisationen');
|
||||
@@ -57,7 +57,7 @@ export default function OrganizationPage() {
|
||||
ownerEmail: createForm.email
|
||||
};
|
||||
|
||||
await axiosInstance.post('/api/organization', jsonPayload);
|
||||
await axiosInstance.post('/organization', jsonPayload);
|
||||
|
||||
await loadOrganizations(); // Liste neu laden
|
||||
handleCreateClose();
|
||||
@@ -79,7 +79,7 @@ export default function OrganizationPage() {
|
||||
if (!window.confirm('Organisation wirklich löschen?')) return;
|
||||
|
||||
try {
|
||||
await axiosInstance.delete(`/api/organization/${id}`);
|
||||
await axiosInstance.delete(`/organization/${id}`);
|
||||
setRows((prev) => prev.filter((r) => r.id !== id));
|
||||
} catch {
|
||||
alert('Löschen fehlgeschlagen');
|
||||
|
||||
@@ -18,7 +18,7 @@ export default function PostsPage() {
|
||||
const navigate = useNavigate();
|
||||
|
||||
useEffect(() => {
|
||||
axiosInstance.get('/api/news')
|
||||
axiosInstance.get('/news')
|
||||
.then(({ data }) => setRows(data))
|
||||
.catch(() => setError('Fehler beim Laden der News'))
|
||||
.finally(() => setLoading(false));
|
||||
@@ -27,7 +27,7 @@ export default function PostsPage() {
|
||||
const handleDelete = async (id) => {
|
||||
if (!window.confirm('News wirklich löschen?')) return;
|
||||
try {
|
||||
await axiosInstance.delete(`/api/news/${id}`);
|
||||
await axiosInstance.delete(`/news/${id}`);
|
||||
setRows((prev) => prev.filter((r) => r.id !== id));
|
||||
} catch {
|
||||
alert('Löschen fehlgeschlagen');
|
||||
|
||||
@@ -18,7 +18,7 @@ export default function PushPage() {
|
||||
setLoading(true);
|
||||
setResult(null);
|
||||
try {
|
||||
await axiosInstance.post('/api/push', { title, body, target });
|
||||
await axiosInstance.post('/push', { title, body, target });
|
||||
setResult({ type: 'success', msg: 'Notification erfolgreich gesendet!' });
|
||||
setTitle('');
|
||||
setBody('');
|
||||
|
||||
@@ -28,7 +28,7 @@ export default function UsersPage() {
|
||||
const [deleting, setDeleting] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
axiosInstance.get('/api/users')
|
||||
axiosInstance.get('/users')
|
||||
.then(({ data }) => setRows(data))
|
||||
.catch(() => setError('Fehler beim Laden der Nutzer'))
|
||||
.finally(() => setLoading(false));
|
||||
@@ -58,7 +58,7 @@ export default function UsersPage() {
|
||||
setSaving(true);
|
||||
setSaveError('');
|
||||
try {
|
||||
const { data } = await axiosInstance.put(`/api/users/${editUser.id}`, editForm);
|
||||
const { data } = await axiosInstance.put(`/users/${editUser.id}`, editForm);
|
||||
setRows((prev) => prev.map((r) => r.id === editUser.id ? { ...r, ...data } : r));
|
||||
setSnackbar(`Änderungen an ${editUser.nickname} erfolgreich gespeichert.`);
|
||||
handleEditClose();
|
||||
@@ -72,7 +72,7 @@ export default function UsersPage() {
|
||||
const handlePasswordReset = async (user) => {
|
||||
setResetting(user.id);
|
||||
try {
|
||||
await axiosInstance.post(`/api/users/${user.id}/reset-password`);
|
||||
await axiosInstance.post(`/users/${user.id}/reset-password`);
|
||||
setSnackbar(`Passwort für ${user.nickname} wurde zurückgesetzt — E-Mail wurde versendet.`);
|
||||
} catch (err) {
|
||||
setSnackbar(err.response?.data?.message ?? 'Zurücksetzen fehlgeschlagen');
|
||||
@@ -84,7 +84,7 @@ export default function UsersPage() {
|
||||
const handleDeleteConfirm = async () => {
|
||||
setDeleting(true);
|
||||
try {
|
||||
await axiosInstance.delete(`/api/users/${deleteUser.id}`);
|
||||
await axiosInstance.delete(`/users/${deleteUser.id}`);
|
||||
setRows((prev) => prev.filter((r) => r.id !== deleteUser.id));
|
||||
setSnackbar(`Nutzer ${deleteUser.nickname} wurde gelöscht.`);
|
||||
setDeleteUser(null);
|
||||
|
||||
Reference in New Issue
Block a user