rights system
This commit is contained in:
@@ -34,6 +34,7 @@ import { useNavigate } from 'react-router-dom';
|
||||
import DashboardLayout from '../components/dashboard/DashboardLayout';
|
||||
import ChatAwareFab from '../components/shared/ChatAwareFab';
|
||||
import { useAuth } from '../contexts/AuthContext';
|
||||
import { usePermissionContext } from '../contexts/PermissionContext';
|
||||
import { membersService } from '../services/members';
|
||||
import {
|
||||
MemberListItem,
|
||||
@@ -51,9 +52,8 @@ import {
|
||||
// Helper: determine whether the current user can write member data
|
||||
// ----------------------------------------------------------------
|
||||
function useCanWrite(): boolean {
|
||||
const { user } = useAuth();
|
||||
const groups: string[] = (user as any)?.groups ?? [];
|
||||
return groups.includes('dashboard_admin') || groups.includes('dashboard_kommando');
|
||||
const { hasPermission } = usePermissionContext();
|
||||
return hasPermission('mitglieder:edit');
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
@@ -73,17 +73,17 @@ function useDebounce<T>(value: T, delay: number): T {
|
||||
// ----------------------------------------------------------------
|
||||
function Mitglieder() {
|
||||
const navigate = useNavigate();
|
||||
const { user } = useAuth(); const canWrite = useCanWrite();
|
||||
const { user } = useAuth();
|
||||
const canWrite = useCanWrite();
|
||||
const { hasPermission } = usePermissionContext();
|
||||
|
||||
// --- redirect non-admin/non-kommando users to their own profile ---
|
||||
// --- redirect non-privileged users to their own profile ---
|
||||
useEffect(() => {
|
||||
if (!user) return;
|
||||
const groups: string[] = (user as any)?.groups ?? [];
|
||||
const isAdmin = groups.includes('dashboard_admin') || groups.includes('dashboard_kommando');
|
||||
if (!isAdmin) {
|
||||
if (!hasPermission('mitglieder:edit')) {
|
||||
navigate(`/mitglieder/${(user as any).id}`, { replace: true });
|
||||
}
|
||||
}, [user, navigate]);
|
||||
}, [user, navigate, hasPermission]);
|
||||
|
||||
// --- data state ---
|
||||
const [members, setMembers] = useState<MemberListItem[]>([]);
|
||||
|
||||
Reference in New Issue
Block a user