@@ -44,22 +44,18 @@ export default function PackageList({ packages, onEdit, onDelete, isLoading }: P
/>
)}
-
+
{pkg.title || 'بدون عنوان'}
-
+
{pkg.name || 'بدون نام'}
-
- شناسه: {pkg.uuid?.substring(0, 8)}...
-
-
- تلاشها: {pkg.tries || 0}
-
+
+
آخرین بهروزرسانی: {formatDate(pkg.updated_at)}
diff --git a/components/admin/products/ProductForm.tsx b/components/admin/products/ProductForm.tsx
index f1354fc..a220ef3 100644
--- a/components/admin/products/ProductForm.tsx
+++ b/components/admin/products/ProductForm.tsx
@@ -84,7 +84,7 @@ export default function ProductForm({ product, packageName, onSubmit, onCancel,
required
value={formData.title || ''}
onChange={handleInputChange}
- className="block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm"
+ className="block w-full px-3 py-2 text-slate-900 border border-gray-300 rounded-md shadow-sm focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm"
placeholder="مثال: اشتراک ماهانه"
/>
@@ -102,7 +102,7 @@ export default function ProductForm({ product, packageName, onSubmit, onCancel,
min="0"
value={formData.price || ''}
onChange={handleInputChange}
- className="block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm"
+ className="block w-full px-3 py-2 text-slate-900 border border-gray-300 rounded-md shadow-sm focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm"
placeholder="مثال: 60000"
/>
@@ -118,7 +118,7 @@ export default function ProductForm({ product, packageName, onSubmit, onCancel,
required
value={formData.type || 4}
onChange={handleInputChange}
- className="block w-full px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm"
+ className="block w-full px-3 py-2 text-slate-900 border border-gray-300 rounded-md shadow-sm focus:ring-indigo-500 focus:border-indigo-500 sm:text-sm"
>
{Object.entries(PRODUCT_TYPES).map(([value, label]) => (
diff --git a/components/admin/users/UserSearch.tsx b/components/admin/users/UserSearch.tsx
index 7aa4dd4..c8fce3c 100644
--- a/components/admin/users/UserSearch.tsx
+++ b/components/admin/users/UserSearch.tsx
@@ -32,7 +32,7 @@ export default function UserSearch({ onSearch, isLoading }: UserSearchProps) {
setSearchTerm(e.target.value)}
diff --git a/contexts/AuthContext.tsx b/contexts/AuthContext.tsx
index c3cdac0..8e3fa3e 100644
--- a/contexts/AuthContext.tsx
+++ b/contexts/AuthContext.tsx
@@ -98,9 +98,19 @@ export function AuthProvider({ children }: { children: React.ReactNode }) {
}
}
+ // Clear localStorage
localStorage.removeItem('auth_token');
localStorage.removeItem('auth_user');
+ // Clear cookie - multiple methods to ensure it's removed
+ document.cookie = 'auth_token=; path=/; expires=Thu, 01 Jan 1970 00:00:01 GMT; SameSite=Strict';
+ document.cookie = 'auth_token=; path=/admin; expires=Thu, 01 Jan 1970 00:00:01 GMT; SameSite=Strict';
+
+ // Alternative: Clear all cookies
+ document.cookie.split(";").forEach(function (c) {
+ document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=; path=/; expires=" + new Date().toUTCString() + ";");
+ });
+
setState({
user: null,
token: null,
@@ -108,7 +118,9 @@ export function AuthProvider({ children }: { children: React.ReactNode }) {
error: null,
});
- router.push('/admin/login');
+ // Force hard navigation instead of router.push
+ window.location.href = '/admin/login';
+ // router.push('/admin/login');
};
return (
diff --git a/lib/api/auth.ts b/lib/api/auth.ts
index 5f2cc6a..ee9f5eb 100644
--- a/lib/api/auth.ts
+++ b/lib/api/auth.ts
@@ -12,7 +12,7 @@ export const authApi = {
},
logout: async (token: string): Promise
=> {
- return apiClient.post('/auth/logout', {}, token);
+ return apiClient.put('/auth/logout', {}, token);
},
getProfile: async (token: string): Promise => {
diff --git a/lib/api/packages.ts b/lib/api/packages.ts
index 56e5567..1ce053f 100644
--- a/lib/api/packages.ts
+++ b/lib/api/packages.ts
@@ -37,7 +37,6 @@ export const packagesApi = {
const formData = new FormData();
// Add method spoofing for Laravel
- formData.append('_method', 'PUT');
// Append all fields to FormData
Object.entries(data).forEach(([key, value]) => {