403Webshell
Server IP : 54.37.205.81  /  Your IP : 216.73.216.76
Web Server : nginx/1.22.1
System : Linux vps-249481fa 6.1.0-50-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.176-1 (2026-07-02) x86_64
User : debian ( 1000)
PHP Version : 8.2.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/app.copyrightchain.it/copyrightchain_app/context/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/app.copyrightchain.it/copyrightchain_app/context/AuthContext.tsx.bak_roles_fix_20260422
import React, { createContext, useContext, useMemo, useState } from 'react';
import { apiFetch, setAuthToken } from '../services/apiClient';

type AuthUser = {
  id: number;
  username: string;
  roles: string[];
};

type AuthContextType = {
  token: string | null;
  user: AuthUser | null;
  isAdmin: boolean;
  login: (username: string, password: string) => Promise<void>;
  logout: () => void;
};

const AuthContext = createContext<AuthContextType | undefined>(undefined);

export function useAuth() {
  const ctx = useContext(AuthContext);
  if (!ctx) throw new Error('useAuth must be used within AuthProvider');
  return ctx;
}

export const AuthProvider: React.FC<{ children: React.ReactNode }>
  = ({ children }) => {
  const [token, setToken] = useState<string | null>(null);
  const [user, setUser] = useState<AuthUser | null>(null);

  const isAdmin = useMemo(() => {
    if (!user) return false;
    return user.roles.includes('administrator') || user.roles.includes('admin');
  }, [user]);

  const login = async (username: string, password: string) => {
    const res = await apiFetch<{ token: string; user: AuthUser }>(`/auth/login`, {
      method: 'POST',
      body: JSON.stringify({ username, password }),
    });
    setToken(res.token);
    setAuthToken(res.token);
    setUser(res.user);
  };

  const logout = () => {
    setToken(null);
    setAuthToken(null);
    setUser(null);
  };

  const value: AuthContextType = { token, user, isAdmin, login, logout };

  return <AuthContext.Provider value={value}>{children}</AuthContext.Provider>;
};

Youez - 2016 - github.com/yon3zu
LinuXploit