rename benutzer to users
add role management to media page
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import React, { useState, useRef } from 'react';
|
||||
import React, { useState, useRef, useMemo } from 'react';
|
||||
import CustomMediaInfoPanel from './components/CustomMediaInfoPanel';
|
||||
import {
|
||||
FileManagerComponent,
|
||||
@@ -7,10 +7,13 @@ import {
|
||||
DetailsView,
|
||||
Toolbar,
|
||||
} from '@syncfusion/ej2-react-filemanager';
|
||||
import { useAuth } from './useAuth';
|
||||
|
||||
const hostUrl = '/api/eventmedia/filemanager/'; // Dein Backend-Endpunkt für FileManager
|
||||
|
||||
const Media: React.FC = () => {
|
||||
const { user } = useAuth();
|
||||
const isSuperadmin = useMemo(() => user?.role === 'superadmin', [user]);
|
||||
// State für die angezeigten Dateidetails
|
||||
const [fileDetails] = useState<null | {
|
||||
name: string;
|
||||
@@ -43,6 +46,25 @@ const Media: React.FC = () => {
|
||||
}
|
||||
}, [viewMode]);
|
||||
|
||||
type FileItem = { name: string; isFile: boolean };
|
||||
type ReadSuccessArgs = { action: string; result?: { files?: FileItem[] } };
|
||||
type FileOpenArgs = { fileDetails?: FileItem; cancel?: boolean };
|
||||
|
||||
// Hide "converted" for non-superadmins after data load
|
||||
const handleSuccess = (args: ReadSuccessArgs) => {
|
||||
if (isSuperadmin) return;
|
||||
if (args && args.action === 'read' && args.result && Array.isArray(args.result.files)) {
|
||||
args.result.files = args.result.files.filter((f: FileItem) => !(f.name === 'converted' && !f.isFile));
|
||||
}
|
||||
};
|
||||
|
||||
// Prevent opening the "converted" folder for non-superadmins
|
||||
const handleFileOpen = (args: FileOpenArgs) => {
|
||||
if (!isSuperadmin && args && args.fileDetails && args.fileDetails.name === 'converted' && !args.fileDetails.isFile) {
|
||||
args.cancel = true;
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<div>
|
||||
<h2 className="text-xl font-bold mb-4">Medien</h2>
|
||||
@@ -65,6 +87,9 @@ const Media: React.FC = () => {
|
||||
{/* Debug-Ausgabe entfernt, da ReactNode erwartet wird */}
|
||||
<FileManagerComponent
|
||||
ref={fileManagerRef}
|
||||
cssClass="e-bigger media-icons-xl"
|
||||
success={handleSuccess}
|
||||
fileOpen={handleFileOpen}
|
||||
ajaxSettings={{
|
||||
url: hostUrl + 'operations',
|
||||
getImageUrl: hostUrl + 'get-image',
|
||||
|
||||
Reference in New Issue
Block a user