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