+
+
Reports
-
+
+
+
Configuration
@@ -2487,8 +1250,10 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
Company Profile
+
+
HR
@@ -2507,15 +1272,37 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
Payroll
+
+
+
+
+
+ Administration
+
+
+
+
-
+
+
+
['en' => 'Dashboard', 'ar' => 'لوحة القيادة'],
+ 'my_profile' => ['en' => 'My Profile', 'ar' => 'ملفي الشخصي'],
'pos' => ['en' => 'Point of Sale', 'ar' => 'نقطة البيع'],
'quotations' => ['en' => 'Quotations', 'ar' => 'العروض'],
'customers' => ['en' => 'Customers', 'ar' => 'العملاء'],
@@ -2539,23 +1326,54 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
'hr_payroll' => ['en' => 'HR Payroll', 'ar' => 'رواتب الموارد البشرية'],
'cashflow_report' => ['en' => 'Cashflow Statement', 'ar' => 'قائمة التدفقات النقدية'],
'loyalty_history' => ['en' => 'Loyalty History', 'ar' => 'سجل الولاء'],
+ 'users' => ['en' => 'User Management', 'ar' => 'إدارة المستخدمين'],
+ 'role_groups' => ['en' => 'Role Groups', 'ar' => 'مجموعات الأدوار'],
];
$currTitle = $titles[$page] ?? $titles['dashboard'];
?>
= $currTitle['en'] ?>
+
+
+
+
= htmlspecialchars((string)($_SESSION['user_role_name'] ?? '')) ?>
+
+
+
+
+
+
$_SESSION['profile_pic']) ?>?v=<?= time() ?>)
+
+
+
= htmlspecialchars($_SESSION['user_role_name']) ?>
+
+
@@ -2800,12 +1618,14 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
= $currTitle['en'] ?> Management
+
+
@@ -2862,11 +1682,15 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
OMR = number_format((float)$c['balance'], 3) ?> |
+
+
+
+
@@ -4394,9 +3218,11 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
= $currTitle['en'] ?>
+
+
@@ -6162,6 +4988,58 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
+
+
+
+
+ Profile Picture
+
+
+  ?>?v=<?= time() ?>)
+
+
+
+
+
+
+
+ = htmlspecialchars($data['user']['username']) ?>
+ = htmlspecialchars($_SESSION['user_role_name'] ?? 'User') ?>
+
+
+
+
+
+
Company Profile
@@ -6250,6 +5128,248 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
+
+
+
+
+
+
+
+ | Group Name |
+ Created Date |
+ Status |
+ Actions |
+
+
+
+
+
+
+
+
+
+
+ = htmlspecialchars((string)$group['name']) ?>
+
+ |
+ = date('M d, Y', strtotime((string)$group['created_at'])) ?> |
+ Active |
+
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | User Info |
+ Access Level |
+ Email |
+ Status |
+ Actions |
+
+
+
+
+
+
+
+
+ $u['profile_pic']) ?>?v=<?= time() ?>)
+
+
+ = strtoupper(substr((string)$u['username'], 0, 1)) ?>
+
+
+
+ = htmlspecialchars((string)$u['username']) ?>
+ ID: #= str_pad((string)$u['id'], 4, '0', STR_PAD_LEFT) ?>
+
+
+ |
+
+
+ = htmlspecialchars((string)($u['group_name'] ?? 'No Role Assigned')) ?>
+
+ |
+ = htmlspecialchars((string)($u['email'] ?? '')) ?> |
+
+
+ Active
+
+ Suspended
+
+ |
+
+
+
+
+
+ |
+
+
+
+
+
+
@@ -6336,6 +5456,94 @@ $projectDescription = $_SERVER['PROJECT_DESCRIPTION'] ?? 'Accounting System';
+
+
+
+
+
+
diff --git a/login_debug.log b/login_debug.log
new file mode 100644
index 0000000..4eb0033
--- /dev/null
+++ b/login_debug.log
@@ -0,0 +1,5 @@
+2026-02-18 06:51:36 - Failed login for 'admin'. Reason: Password mismatch
+2026-02-18 06:51:52 - Failed login for 'admin'. Reason: Password mismatch
+2026-02-18 07:32:35 - Failed login for 'admin'. Reason: Password mismatch
+2026-02-18 07:59:54 - Failed login for 'admin'. Reason: Password mismatch
+2026-02-18 07:59:58 - Failed login for 'admin'. Reason: Password mismatch
diff --git a/post_debug.log b/post_debug.log
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_2r7cqn03664638ajuuo1g5i1t4 b/sessions/sess_2r7cqn03664638ajuuo1g5i1t4
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_2sk3no9vf98s84qsushbdp683d b/sessions/sess_2sk3no9vf98s84qsushbdp683d
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_3gksq81jerpous0mpvef4nfreu b/sessions/sess_3gksq81jerpous0mpvef4nfreu
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_4hdvtq8pga3fgpg1cp7nl341vh b/sessions/sess_4hdvtq8pga3fgpg1cp7nl341vh
new file mode 100644
index 0000000..26c1a1e
--- /dev/null
+++ b/sessions/sess_4hdvtq8pga3fgpg1cp7nl341vh
@@ -0,0 +1 @@
+user_id|i:1;username|s:5:"admin";user_role_name|s:13:"Administrator";user_permissions|s:3:"all";
\ No newline at end of file
diff --git a/sessions/sess_5ln6g0r5tr6bv6rg8a0a1kfh7m b/sessions/sess_5ln6g0r5tr6bv6rg8a0a1kfh7m
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_5oeo9731ab41036gq00sc0fo53 b/sessions/sess_5oeo9731ab41036gq00sc0fo53
new file mode 100644
index 0000000..26c1a1e
--- /dev/null
+++ b/sessions/sess_5oeo9731ab41036gq00sc0fo53
@@ -0,0 +1 @@
+user_id|i:1;username|s:5:"admin";user_role_name|s:13:"Administrator";user_permissions|s:3:"all";
\ No newline at end of file
diff --git a/sessions/sess_9cgpmgcis3b2tpt38r8482la9l b/sessions/sess_9cgpmgcis3b2tpt38r8482la9l
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_9g2qddiq96hedfik2ob5fdu49e b/sessions/sess_9g2qddiq96hedfik2ob5fdu49e
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_9gau8vtagj710om5qkei6e5h2g b/sessions/sess_9gau8vtagj710om5qkei6e5h2g
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_9mjjgjfd6qaqigd9o7c2o5ondj b/sessions/sess_9mjjgjfd6qaqigd9o7c2o5ondj
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_9ql2aeof3n93bhlbf7lddle9o4 b/sessions/sess_9ql2aeof3n93bhlbf7lddle9o4
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_alr64jfatkbn1mnhbt0e4vu0cb b/sessions/sess_alr64jfatkbn1mnhbt0e4vu0cb
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_ar40q3ed15n7t3fknui8doboaq b/sessions/sess_ar40q3ed15n7t3fknui8doboaq
new file mode 100644
index 0000000..26c1a1e
--- /dev/null
+++ b/sessions/sess_ar40q3ed15n7t3fknui8doboaq
@@ -0,0 +1 @@
+user_id|i:1;username|s:5:"admin";user_role_name|s:13:"Administrator";user_permissions|s:3:"all";
\ No newline at end of file
diff --git a/sessions/sess_bkd2narf71iianiml6drrbmhep b/sessions/sess_bkd2narf71iianiml6drrbmhep
new file mode 100644
index 0000000..26c1a1e
--- /dev/null
+++ b/sessions/sess_bkd2narf71iianiml6drrbmhep
@@ -0,0 +1 @@
+user_id|i:1;username|s:5:"admin";user_role_name|s:13:"Administrator";user_permissions|s:3:"all";
\ No newline at end of file
diff --git a/sessions/sess_boimhas8ok1ceqqnq6958p3c60 b/sessions/sess_boimhas8ok1ceqqnq6958p3c60
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_cp1p5r9vdoapsn2dgr3po5jien b/sessions/sess_cp1p5r9vdoapsn2dgr3po5jien
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_d64jotcj8di6qorof2svdkuaml b/sessions/sess_d64jotcj8di6qorof2svdkuaml
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_e17nfb92o4fhbsqqg16ktrg7vd b/sessions/sess_e17nfb92o4fhbsqqg16ktrg7vd
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_eovb4dasvjkasl6g2vad0m9kul b/sessions/sess_eovb4dasvjkasl6g2vad0m9kul
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_fj924c5m3413s8klk9turvpd98 b/sessions/sess_fj924c5m3413s8klk9turvpd98
new file mode 100644
index 0000000..26c1a1e
--- /dev/null
+++ b/sessions/sess_fj924c5m3413s8klk9turvpd98
@@ -0,0 +1 @@
+user_id|i:1;username|s:5:"admin";user_role_name|s:13:"Administrator";user_permissions|s:3:"all";
\ No newline at end of file
diff --git a/sessions/sess_fs5vqlnuvuapss0e5kllkf6flo b/sessions/sess_fs5vqlnuvuapss0e5kllkf6flo
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_fulkofqovs96hmlioiql0de0vo b/sessions/sess_fulkofqovs96hmlioiql0de0vo
new file mode 100644
index 0000000..26c1a1e
--- /dev/null
+++ b/sessions/sess_fulkofqovs96hmlioiql0de0vo
@@ -0,0 +1 @@
+user_id|i:1;username|s:5:"admin";user_role_name|s:13:"Administrator";user_permissions|s:3:"all";
\ No newline at end of file
diff --git a/sessions/sess_g5a91uor6bo73aasj68vl61ljf b/sessions/sess_g5a91uor6bo73aasj68vl61ljf
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_g5stcs2oe3qgrk50583ofrgai1 b/sessions/sess_g5stcs2oe3qgrk50583ofrgai1
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_h1pf9jo8fpkia1d1ul34i1jagr b/sessions/sess_h1pf9jo8fpkia1d1ul34i1jagr
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_h9ferekp3k9e236nrq47j0d4oc b/sessions/sess_h9ferekp3k9e236nrq47j0d4oc
new file mode 100644
index 0000000..26c1a1e
--- /dev/null
+++ b/sessions/sess_h9ferekp3k9e236nrq47j0d4oc
@@ -0,0 +1 @@
+user_id|i:1;username|s:5:"admin";user_role_name|s:13:"Administrator";user_permissions|s:3:"all";
\ No newline at end of file
diff --git a/sessions/sess_hsscuughl1m8p35j1jisjukv46 b/sessions/sess_hsscuughl1m8p35j1jisjukv46
new file mode 100644
index 0000000..26c1a1e
--- /dev/null
+++ b/sessions/sess_hsscuughl1m8p35j1jisjukv46
@@ -0,0 +1 @@
+user_id|i:1;username|s:5:"admin";user_role_name|s:13:"Administrator";user_permissions|s:3:"all";
\ No newline at end of file
diff --git a/sessions/sess_jftcadudc43e75des2cvksvakn b/sessions/sess_jftcadudc43e75des2cvksvakn
new file mode 100644
index 0000000..26c1a1e
--- /dev/null
+++ b/sessions/sess_jftcadudc43e75des2cvksvakn
@@ -0,0 +1 @@
+user_id|i:1;username|s:5:"admin";user_role_name|s:13:"Administrator";user_permissions|s:3:"all";
\ No newline at end of file
diff --git a/sessions/sess_jg9cr61qkma0j0d4qu0vhqd79s b/sessions/sess_jg9cr61qkma0j0d4qu0vhqd79s
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_juaq2jd8btnjraq103ecr59pp0 b/sessions/sess_juaq2jd8btnjraq103ecr59pp0
new file mode 100644
index 0000000..26c1a1e
--- /dev/null
+++ b/sessions/sess_juaq2jd8btnjraq103ecr59pp0
@@ -0,0 +1 @@
+user_id|i:1;username|s:5:"admin";user_role_name|s:13:"Administrator";user_permissions|s:3:"all";
\ No newline at end of file
diff --git a/sessions/sess_km5843fkj2c7hk7brlp844ug2l b/sessions/sess_km5843fkj2c7hk7brlp844ug2l
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_lh4s3lumt56kb211pk5mdvh66s b/sessions/sess_lh4s3lumt56kb211pk5mdvh66s
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_lh615g4etelsak5v2rj9mcn1eb b/sessions/sess_lh615g4etelsak5v2rj9mcn1eb
new file mode 100644
index 0000000..a7e827f
--- /dev/null
+++ b/sessions/sess_lh615g4etelsak5v2rj9mcn1eb
@@ -0,0 +1 @@
+user_id|i:1;username|s:5:"admin";user_role_name|s:13:"Administrator";user_permissions|s:3:"all";profile_pic|s:32:"uploads/profile_1_1771401598.png";
\ No newline at end of file
diff --git a/sessions/sess_lhtneso80magc54vcdfnps8m4i b/sessions/sess_lhtneso80magc54vcdfnps8m4i
new file mode 100644
index 0000000..26c1a1e
--- /dev/null
+++ b/sessions/sess_lhtneso80magc54vcdfnps8m4i
@@ -0,0 +1 @@
+user_id|i:1;username|s:5:"admin";user_role_name|s:13:"Administrator";user_permissions|s:3:"all";
\ No newline at end of file
diff --git a/sessions/sess_m4rt7eafgsnukcetmabk7etf1m b/sessions/sess_m4rt7eafgsnukcetmabk7etf1m
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_nddl82u7e5hag45tcqclis8a4e b/sessions/sess_nddl82u7e5hag45tcqclis8a4e
new file mode 100644
index 0000000..26c1a1e
--- /dev/null
+++ b/sessions/sess_nddl82u7e5hag45tcqclis8a4e
@@ -0,0 +1 @@
+user_id|i:1;username|s:5:"admin";user_role_name|s:13:"Administrator";user_permissions|s:3:"all";
\ No newline at end of file
diff --git a/sessions/sess_nge96jv0r8eqh37voq2jco6pia b/sessions/sess_nge96jv0r8eqh37voq2jco6pia
new file mode 100644
index 0000000..26c1a1e
--- /dev/null
+++ b/sessions/sess_nge96jv0r8eqh37voq2jco6pia
@@ -0,0 +1 @@
+user_id|i:1;username|s:5:"admin";user_role_name|s:13:"Administrator";user_permissions|s:3:"all";
\ No newline at end of file
diff --git a/sessions/sess_nqei3mm533611incvppl5u2s6e b/sessions/sess_nqei3mm533611incvppl5u2s6e
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_o58brgggnc0s9ildbve378s0q9 b/sessions/sess_o58brgggnc0s9ildbve378s0q9
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_oqj7mfj1271709jjti4okidppk b/sessions/sess_oqj7mfj1271709jjti4okidppk
new file mode 100644
index 0000000..26c1a1e
--- /dev/null
+++ b/sessions/sess_oqj7mfj1271709jjti4okidppk
@@ -0,0 +1 @@
+user_id|i:1;username|s:5:"admin";user_role_name|s:13:"Administrator";user_permissions|s:3:"all";
\ No newline at end of file
diff --git a/sessions/sess_pdf5le1sffbhrgg39jal4gr1n1 b/sessions/sess_pdf5le1sffbhrgg39jal4gr1n1
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_pfle3r0rfv8ejk8pnu2l4c13d1 b/sessions/sess_pfle3r0rfv8ejk8pnu2l4c13d1
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_s6otv2s6gk1h8vct4i4e7d9j1e b/sessions/sess_s6otv2s6gk1h8vct4i4e7d9j1e
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_sja8q1nfr0o5o7pjlsk05n9nv2 b/sessions/sess_sja8q1nfr0o5o7pjlsk05n9nv2
new file mode 100644
index 0000000..e69de29
diff --git a/sessions/sess_uljjktfd4v1rafu9sppaqits8l b/sessions/sess_uljjktfd4v1rafu9sppaqits8l
new file mode 100644
index 0000000..e69de29
diff --git a/test_db.php b/test_db.php
new file mode 100644
index 0000000..9f9242a
--- /dev/null
+++ b/test_db.php
@@ -0,0 +1,22 @@
+prepare("INSERT INTO role_groups (name, permissions) VALUES (?, ?)");
+ $stmt->execute(['Test Group', json_encode(['dashboard_view'])]);
+ $groupId = $db->lastInsertId();
+ echo "Inserted Group ID: $groupId\n";
+
+ echo "Testing users insert...\n";
+ $stmt = $db->prepare("INSERT INTO users (username, password, email, group_id) VALUES (?, ?, ?, ?)");
+ $stmt->execute(['testuser_' . time(), password_hash('password', PASSWORD_DEFAULT), 'test@example.com', $groupId]);
+ echo "Inserted User ID: " . $db->lastInsertId() . "\n";
+
+ echo "Cleanup...\n";
+ $db->prepare("DELETE FROM users WHERE username LIKE 'testuser_%'")->execute();
+ $db->prepare("DELETE FROM role_groups WHERE name = 'Test Group'")->execute();
+ echo "Done.\n";
+} catch (Exception $e) {
+ echo "Error: " . $e->getMessage() . "\n";
+}
diff --git a/uploads/profile_1_1771401594.png b/uploads/profile_1_1771401594.png
new file mode 100644
index 0000000..2ae8817
Binary files /dev/null and b/uploads/profile_1_1771401594.png differ
diff --git a/uploads/profile_1_1771401598.png b/uploads/profile_1_1771401598.png
new file mode 100644
index 0000000..2ae8817
Binary files /dev/null and b/uploads/profile_1_1771401598.png differ
|