# KKCP System Setup - Complete Guide

## Quick Setup Steps

### Step 1: Create Admin User
Run this once:
```
https://testkkcp.sheervantage.com/KKCP/php/setup_admin.php
```

This creates:
- Username: `admin`
- Password: `admin123`
- Role: `Admin`

### Step 2: Login
```
https://testkkcp.sheervantage.com/KKCP/php/auth/login.php
```

## User Roles & Permissions

### Admin Role
**Access:** Full system access - ALL pages and features

**Can:**
- View all data (no filtering)
- Access all menus
- Assign supervisors to districts
- Manage users and settings
- View all clubs, members, staff
- Access supervisor management page

### Supervisor Role
**Access:** Limited based on assigned area

**Can:**
- View dashboard
- Access mailbox (empty if no area assigned, filtered if area assigned)
- Compose messages
- View clubs (all if no area assigned, filtered if area assigned)
- View members (all if no area assigned, filtered if area assigned)
- View all staff
- Create/edit staff
- View notices
- View club notices
- Edit their own profile
- Access account management

**Cannot:**
- Access supervisor management page
- Access user management (users, roles)
- Access settings (divisions, districts, upazilas, unions)
- Access women entrepreneurs page
- Access trainings page
- Assign field officers
- View data outside assigned area (if area is assigned)

## How Area Assignment Works

### If Supervisor Has NO Assigned Area:
- ✅ Mailbox: Empty (no messages)
- ✅ Clubs: Shows ALL clubs
- ✅ Members: Shows ALL members
- ✅ Staff: Shows ALL staff

### If Supervisor Has Assigned Area (District):
- ✅ Mailbox: Shows messages from clubs in assigned district
- ✅ Clubs: Shows ONLY clubs in assigned district
- ✅ Members: Shows ONLY members from clubs in assigned district
- ✅ Staff: Shows ALL staff (no filtering)

## Assigning Supervisors to Areas

1. Login as admin
2. Go to: **User Management > Assign Field Officers**
3. Click "Assign" next to a supervisor
4. Select District
5. Optionally select specific Club
6. Click "Assign"

## Menu Structure

### Admin Menu:
- Dashboard
- Mailbox
- Club List
- Members (all batches)
- Staff & Trainers
- Trainings
- Notice Board
- **Supervisors** ← Admin only
- Women Entrepreneurs
- User Management
  - Users
  - Field Officers
  - Assign Field Officers
  - User Roles
- Settings
- Account Management

### Supervisor Menu:
- Dashboard
- Mailbox
- Club List
- Staff & Trainers
- Notices
- Account Management

## Testing

### Test Admin Access:
1. Login: `admin` / `admin123`
2. Verify you see all menus
3. Check you can access all pages
4. Try assigning a supervisor to a district

### Test Supervisor (No Area):
1. Login with supervisor credentials (see CREDENTIALS.txt)
2. Verify mailbox is empty
3. Check clubs list shows all clubs
4. Check members list shows all members
5. Verify "Supervisors" menu is hidden

### Test Supervisor (With Area):
1. As admin, assign supervisor to a district
2. Logout and login as that supervisor
3. Verify mailbox shows only district messages
4. Check clubs list shows only district clubs
5. Check members list shows only district members

## Database Tables

### users
- Stores login credentials
- Role: 'Admin' or 'Supervisor'
- SupervisorId: Links to clubsupervisors table

### clubsupervisors
- Stores supervisor information
- DistrictId: Assigned district (NULL = no assignment)
- ClubId: Assigned club (NULL = all clubs in district)

### mailboxes
- Stores messages
- ClubId: Associated club (NULL = general message)
- Filtered by district for supervisors

## URLs

- **Login:** https://testkkcp.sheervantage.com/KKCP/php/auth/login.php
- **Setup Admin:** https://testkkcp.sheervantage.com/KKCP/php/setup_admin.php
- **Test Login:** https://testkkcp.sheervantage.com/KKCP/php/test_login.php
- **Check Tables:** https://testkkcp.sheervantage.com/KKCP/php/check_tables.php

## Credentials

See `CREDENTIALS.txt` for full list of supervisor accounts.

**Admin:**
- Username: admin
- Password: admin123

**Sample Supervisors:**
- papia / papia@123
- akanda / akanda012
- salema / salema012

## Troubleshooting

### Can't login?
- Run test_login.php to check status
- Verify user exists in users table
- Check IsActive = 1

### Supervisor sees all data?
- Check if DistrictId is set in clubsupervisors table
- Verify session has district_id
- Check role is exactly 'Supervisor' (case-sensitive in DB)

### Admin can't access pages?
- Verify Role is exactly 'Admin' in users table
- Check session has user_role = 'admin' (lowercase)
- Clear browser cache and re-login

## Files Modified

- `php/includes/session.php` - Role-based access control
- `php/includes/navbar.php` - Menu visibility
- `php/clubs.php` - District filtering
- `php/models/Member.php` - District filtering
- `php/views/members/index.php` - Auto-filtering
- `php/mailbox.php` - Message filtering
- `php/setup_admin.php` - Admin creation script

## Summary

✅ Admin role has full access
✅ Supervisor role has limited access
✅ Area assignment controls data visibility
✅ No area = see all data
✅ With area = see only assigned area data
✅ Mailbox filtered by district
✅ Supervisors page hidden from supervisors
✅ All staff visible to supervisors
