refactor + bilder injection safer

This commit is contained in:
2026-04-13 15:22:47 +02:00
parent 57dd2f5955
commit ccb1e912df
15 changed files with 36 additions and 36 deletions

View File

@@ -3,20 +3,20 @@ import { createTheme, ThemeProvider, CssBaseline } from '@mui/material';
import { AuthProvider } from './context/AuthContext'; import { AuthProvider } from './context/AuthContext';
import PrivateRoute from './components/PrivateRoute'; import PrivateRoute from './components/PrivateRoute';
import Layout from './components/Layout'; import Layout from './components/Layout';
import LoginPage from './pages/LoginPage'; import LoginPage from './pages/Auth/LoginPage.jsx';
import RegisterPage from './pages/RegisterPage'; import RegisterPage from './pages/Auth/RegisterPage.jsx';
import UsersPage from './pages/UsersPage'; import UsersPage from './pages/Auth/UsersPage.jsx';
import PostsPage from './pages/PostsPage'; import PostsPage from './pages/News/PostsPage.jsx';
import CreateNewsPage from './pages/CreateNewsPage'; import CreateNewsPage from './pages/News/CreateNewsPage.jsx';
import OrganizationPage from './pages/OrganizationPage'; import OrganizationPage from './pages/Organization/OrganizationPage.jsx';
import PushPage from './pages/PushPage'; import PushPage from './pages/Notification/PushPage.jsx';
import EditAttractionPage from './pages/EditAttractionPage'; import EditAttractionPage from './pages/Attraction/EditAttractionPage.jsx';
import AttractionPage from './pages/AttractionPage'; import AttractionPage from './pages/Attraction/AttractionPage.jsx';
import HomePage from './pages/HomePage'; import HomePage from './pages/Home/HomePage.jsx';
import EditOrganizationPage from "./pages/EditOrganizationPage.jsx"; import EditOrganizationPage from "./pages/Organization/EditOrganizationPage.jsx";
import CompanyPage from "./pages/CompanyPage.jsx"; import CompanyPage from "./pages/Company/CompanyPage.jsx";
import EditCompanyPage from "./pages/EditCompanyPage.jsx"; import EditCompanyPage from "./pages/Company/EditCompanyPage.jsx";
import CalenderPostPage from "./pages/CalenderPostPage.jsx"; import CalenderPostPage from "./pages/Calender/CalenderPostPage.jsx";
const theme = createTheme({ const theme = createTheme({
palette: { palette: {

View File

@@ -8,7 +8,7 @@ import { DataGrid } from '@mui/x-data-grid';
import DeleteOutlineIcon from '@mui/icons-material/DeleteOutline'; import DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';
import AddIcon from '@mui/icons-material/Add'; import AddIcon from '@mui/icons-material/Add';
import { Chip } from '@mui/material'; import { Chip } from '@mui/material';
import axiosInstance from '../api/axiosInstance'; import axiosInstance from '../../api/axiosInstance.js';
import EditOutlinedIcon from "@mui/icons-material/EditOutlined"; import EditOutlinedIcon from "@mui/icons-material/EditOutlined";
import {useNavigate} from "react-router-dom"; import {useNavigate} from "react-router-dom";

View File

@@ -16,7 +16,7 @@ import ArrowBackIcon from "@mui/icons-material/ArrowBack";
import StarIcon from "@mui/icons-material/Star"; import StarIcon from "@mui/icons-material/Star";
import DeleteOutlineIcon from "@mui/icons-material/DeleteOutline"; import DeleteOutlineIcon from "@mui/icons-material/DeleteOutline";
import AddPhotoAlternateOutlinedIcon from "@mui/icons-material/AddPhotoAlternateOutlined"; import AddPhotoAlternateOutlinedIcon from "@mui/icons-material/AddPhotoAlternateOutlined";
import axiosInstance from "../api/axiosInstance.js"; import axiosInstance from "../../api/axiosInstance.js";
const EMPTY_FORM = { const EMPTY_FORM = {
description: '', description: '',
@@ -242,7 +242,7 @@ export default function EditAttractionPage() {
sx={{ mt: 0.5, px: 0, minWidth: 0, fontSize: 12 }} sx={{ mt: 0.5, px: 0, minWidth: 0, fontSize: 12 }}
> >
Bild ersetzen Bild ersetzen
<input type="file" hidden accept="image/*" onChange={handleTitleImageChange} /> <input type="file" hidden accept="image/jpeg,image/png,image/webp" onChange={handleTitleImageChange} />
</Button> </Button>
</Box> </Box>
<IconButton size="small" color="error" onClick={handleRemoveTitleImage}> <IconButton size="small" color="error" onClick={handleRemoveTitleImage}>
@@ -258,7 +258,7 @@ export default function EditAttractionPage() {
sx={{ alignSelf: 'flex-start' }} sx={{ alignSelf: 'flex-start' }}
> >
Titelbild hochladen Titelbild hochladen
<input type="file" hidden accept="image/*" onChange={handleTitleImageChange} /> <input type="file" hidden accept="image/jpeg,image/png,image/webp" onChange={handleTitleImageChange} />
</Button> </Button>
)} )}
</Box> </Box>
@@ -329,7 +329,7 @@ export default function EditAttractionPage() {
sx={{ alignSelf: 'flex-start' }} sx={{ alignSelf: 'flex-start' }}
> >
Bild hinzufügen Bild hinzufügen
<input type="file" hidden accept="image/*" multiple onChange={handleOtherFilesChange} /> <input type="file" hidden accept="image/jpeg,image/png,image/webp" multiple onChange={handleOtherFilesChange} />
</Button> </Button>
</Stack> </Stack>
</Box> </Box>

View File

@@ -5,7 +5,7 @@ import {
Divider, Link, Divider, Link,
} from '@mui/material'; } from '@mui/material';
import LockOutlinedIcon from '@mui/icons-material/LockOutlined'; import LockOutlinedIcon from '@mui/icons-material/LockOutlined';
import { useAuth } from '../context/AuthContext'; import { useAuth } from '../../context/AuthContext.jsx';
export default function LoginPage() { export default function LoginPage() {
const { login } = useAuth(); const { login } = useAuth();

View File

@@ -5,7 +5,7 @@ import {
Alert, CircularProgress, Link, Divider, Alert, CircularProgress, Link, Divider,
} from '@mui/material'; } from '@mui/material';
import PersonAddOutlinedIcon from '@mui/icons-material/PersonAddOutlined'; import PersonAddOutlinedIcon from '@mui/icons-material/PersonAddOutlined';
import axiosInstance from '../api/axiosInstance'; import axiosInstance from '../../api/axiosInstance.js';
export default function RegisterPage() { export default function RegisterPage() {
const navigate = useNavigate(); const navigate = useNavigate();

View File

@@ -9,7 +9,7 @@ import { DataGrid } from '@mui/x-data-grid';
import EditOutlinedIcon from '@mui/icons-material/EditOutlined'; import EditOutlinedIcon from '@mui/icons-material/EditOutlined';
import LockResetIcon from '@mui/icons-material/LockReset'; import LockResetIcon from '@mui/icons-material/LockReset';
import DeleteOutlineIcon from '@mui/icons-material/DeleteOutline'; import DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';
import axiosInstance from '../api/axiosInstance'; import axiosInstance from '../../api/axiosInstance.js';
export default function UsersPage() { export default function UsersPage() {
const [rows, setRows] = useState([]); const [rows, setRows] = useState([]);

View File

@@ -8,7 +8,7 @@ import { DataGrid } from '@mui/x-data-grid';
import DeleteOutlineIcon from '@mui/icons-material/DeleteOutline'; import DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';
import EditIcon from '@mui/icons-material/Edit'; import EditIcon from '@mui/icons-material/Edit';
import AddIcon from '@mui/icons-material/Add'; import AddIcon from '@mui/icons-material/Add';
import axiosInstance from '../api/axiosInstance'; import axiosInstance from '../../api/axiosInstance.js';
const emptyForm = { const emptyForm = {
title: '', title: '',

View File

@@ -8,7 +8,7 @@ import { DataGrid } from '@mui/x-data-grid';
import DeleteOutlineIcon from '@mui/icons-material/DeleteOutline'; import DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';
import AddIcon from '@mui/icons-material/Add'; import AddIcon from '@mui/icons-material/Add';
import { Chip } from '@mui/material'; import { Chip } from '@mui/material';
import axiosInstance from '../api/axiosInstance'; import axiosInstance from '../../api/axiosInstance.js';
import EditOutlinedIcon from "@mui/icons-material/EditOutlined"; import EditOutlinedIcon from "@mui/icons-material/EditOutlined";
import {useNavigate} from "react-router-dom"; import {useNavigate} from "react-router-dom";

View File

@@ -18,7 +18,7 @@ import DeleteOutlineIcon from "@mui/icons-material/DeleteOutline";
import AddPhotoAlternateOutlinedIcon from "@mui/icons-material/AddPhotoAlternateOutlined"; import AddPhotoAlternateOutlinedIcon from "@mui/icons-material/AddPhotoAlternateOutlined";
import { useParams } from "react-router-dom"; import { useParams } from "react-router-dom";
import { useEffect } from "react"; import { useEffect } from "react";
import axiosInstance from "../api/axiosInstance.js"; import axiosInstance from "../../api/axiosInstance.js";
const EMPTY_FORM = { const EMPTY_FORM = {
description: '', description: '',
@@ -231,7 +231,7 @@ export default function EditCompanyPage() {
sx={{ mt: 0.5, px: 0, minWidth: 0, fontSize: 12 }} sx={{ mt: 0.5, px: 0, minWidth: 0, fontSize: 12 }}
> >
Bild ersetzen Bild ersetzen
<input type="file" hidden accept="image/*" onChange={handleTitleImageChange} /> <input type="file" hidden accept="image/jpeg,image/png,image/webp" onChange={handleTitleImageChange} />
</Button> </Button>
</Box> </Box>
<IconButton size="small" color="error" onClick={handleRemoveTitleImage}> <IconButton size="small" color="error" onClick={handleRemoveTitleImage}>
@@ -247,7 +247,7 @@ export default function EditCompanyPage() {
sx={{ alignSelf: 'flex-start' }} sx={{ alignSelf: 'flex-start' }}
> >
Titelbild hochladen Titelbild hochladen
<input type="file" hidden accept="image/*" onChange={handleTitleImageChange} /> <input type="file" hidden accept="image/jpeg,image/png,image/webp" onChange={handleTitleImageChange} />
</Button> </Button>
)} )}
</Box> </Box>
@@ -320,7 +320,7 @@ export default function EditCompanyPage() {
sx={{ alignSelf: 'flex-start' }} sx={{ alignSelf: 'flex-start' }}
> >
Bild hinzufügen Bild hinzufügen
<input type="file" hidden accept="image/*" multiple onChange={handleOtherFilesChange} /> <input type="file" hidden accept="image/jpeg,image/png,image/webp" multiple onChange={handleOtherFilesChange} />
</Button> </Button>
</Stack> </Stack>
</Box> </Box>

View File

@@ -11,7 +11,7 @@ import AddPhotoAlternateOutlinedIcon from '@mui/icons-material/AddPhotoAlternate
import NotificationsActiveIcon from '@mui/icons-material/NotificationsActive'; import NotificationsActiveIcon from '@mui/icons-material/NotificationsActive';
import NotificationsOffOutlinedIcon from '@mui/icons-material/NotificationsOffOutlined'; import NotificationsOffOutlinedIcon from '@mui/icons-material/NotificationsOffOutlined';
import StarIcon from '@mui/icons-material/Star'; import StarIcon from '@mui/icons-material/Star';
import axiosInstance from '../api/axiosInstance'; import axiosInstance from '../../api/axiosInstance.js';
const EMPTY_FORM = { const EMPTY_FORM = {
title: '', title: '',
@@ -156,7 +156,7 @@ export default function CreateNewsPage() {
sx={{ alignSelf: 'flex-start' }} sx={{ alignSelf: 'flex-start' }}
> >
{files.length === 0 ? 'Vorschaubild hinzufügen' : 'Weiteres Bild hinzufügen'} {files.length === 0 ? 'Vorschaubild hinzufügen' : 'Weiteres Bild hinzufügen'}
<input type="file" hidden accept="image/*" multiple onChange={handleFileChange} /> <input type="file" hidden accept="image/jpeg,image/png,image/webp" multiple onChange={handleFileChange} />
</Button> </Button>
</Stack> </Stack>
</Box> </Box>

View File

@@ -8,7 +8,7 @@ import { DataGrid } from '@mui/x-data-grid';
import DeleteOutlineIcon from '@mui/icons-material/DeleteOutline'; import DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';
import AddIcon from '@mui/icons-material/Add'; import AddIcon from '@mui/icons-material/Add';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import axiosInstance from '../api/axiosInstance'; import axiosInstance from '../../api/axiosInstance.js';
export default function PostsPage() { export default function PostsPage() {
const [rows, setRows] = useState([]); const [rows, setRows] = useState([]);

View File

@@ -4,7 +4,7 @@ import {
Alert, CircularProgress, FormControl, InputLabel, Select, MenuItem, Alert, CircularProgress, FormControl, InputLabel, Select, MenuItem,
} from '@mui/material'; } from '@mui/material';
import SendIcon from '@mui/icons-material/Send'; import SendIcon from '@mui/icons-material/Send';
import axiosInstance from '../api/axiosInstance'; import axiosInstance from '../../api/axiosInstance.js';
export default function PushPage() { export default function PushPage() {
const [title, setTitle] = useState(''); const [title, setTitle] = useState('');

View File

@@ -18,7 +18,7 @@ import DeleteOutlineIcon from "@mui/icons-material/DeleteOutline";
import AddPhotoAlternateOutlinedIcon from "@mui/icons-material/AddPhotoAlternateOutlined"; import AddPhotoAlternateOutlinedIcon from "@mui/icons-material/AddPhotoAlternateOutlined";
import { useParams } from "react-router-dom"; import { useParams } from "react-router-dom";
import { useEffect } from "react"; import { useEffect } from "react";
import axiosInstance from "../api/axiosInstance.js"; import axiosInstance from "../../api/axiosInstance.js";
const EMPTY_FORM = { const EMPTY_FORM = {
description: '', description: '',
@@ -231,7 +231,7 @@ export default function EditOrganizationPage() {
sx={{ mt: 0.5, px: 0, minWidth: 0, fontSize: 12 }} sx={{ mt: 0.5, px: 0, minWidth: 0, fontSize: 12 }}
> >
Bild ersetzen Bild ersetzen
<input type="file" hidden accept="image/*" onChange={handleTitleImageChange} /> <input type="file" hidden accept="image/jpeg,image/png,image/webp" onChange={handleTitleImageChange} />
</Button> </Button>
</Box> </Box>
<IconButton size="small" color="error" onClick={handleRemoveTitleImage}> <IconButton size="small" color="error" onClick={handleRemoveTitleImage}>
@@ -247,7 +247,7 @@ export default function EditOrganizationPage() {
sx={{ alignSelf: 'flex-start' }} sx={{ alignSelf: 'flex-start' }}
> >
Titelbild hochladen Titelbild hochladen
<input type="file" hidden accept="image/*" onChange={handleTitleImageChange} /> <input type="file" hidden accept="image/jpeg,image/png,image/webp" onChange={handleTitleImageChange} />
</Button> </Button>
)} )}
</Box> </Box>

View File

@@ -8,7 +8,7 @@ import { DataGrid } from '@mui/x-data-grid';
import DeleteOutlineIcon from '@mui/icons-material/DeleteOutline'; import DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';
import AddIcon from '@mui/icons-material/Add'; import AddIcon from '@mui/icons-material/Add';
import { Chip } from '@mui/material'; import { Chip } from '@mui/material';
import axiosInstance from '../api/axiosInstance'; import axiosInstance from '../../api/axiosInstance.js';
import EditOutlinedIcon from "@mui/icons-material/EditOutlined"; import EditOutlinedIcon from "@mui/icons-material/EditOutlined";
import {useNavigate} from "react-router-dom"; import {useNavigate} from "react-router-dom";