Path : /home/vishqocm/pcib.in/debug/database/
File Upload :
Current File : /home/vishqocm//pcib.in/debug/database/add_user_roles.php

<?php
session_start();
require_once '../../admin/database/db_config.php';

// Check if user is logged in and is admin or developer
if (!isset($_SESSION['user_id']) || ($_SESSION['role'] !== 'admin' && $_SESSION['role'] !== 'developer')) {
    header('Location: ../admin/login.php');
    exit();
}

// Add header
include_once '../header.php';

$success = false;
$error = '';

// Check current role enum values
$check_enum_query = "SHOW COLUMNS FROM users WHERE Field = 'role'";
$result = $conn->query($check_enum_query);

if ($result && $row = $result->fetch_assoc()) {
    $current_enum = $row['Type'];
    
    // Check if the roles already exist
    if (strpos($current_enum, 'director') !== false && strpos($current_enum, 'developer') !== false) {
        $error = 'The roles "director" and "developer" already exist in the ENUM.';
    } else {
        // Extract current enum values
        preg_match("/^enum\(\'(.*)\'\)$/", $current_enum, $matches);
        if (isset($matches[1])) {
            $enum_values = explode("','", $matches[1]);
            
            // Check if individual roles exist
            $director_exists = in_array('director', $enum_values);
            $developer_exists = in_array('developer', $enum_values);
            
            // Add missing roles
            if (!$director_exists) {
                $enum_values[] = 'director';
            }
            
            if (!$developer_exists) {
                $enum_values[] = 'developer';
            }
            
            // Create new enum string
            $new_enum_values = "'" . implode("','", $enum_values) . "'";
            
            // Alter table to update enum
            $alter_query = "ALTER TABLE users MODIFY COLUMN role ENUM($new_enum_values) NOT NULL DEFAULT 'student'";
            
            if ($conn->query($alter_query)) {
                $success = true;
            } else {
                $error = "Failed to update role ENUM: " . $conn->error;
            }
        } else {
            $error = "Could not parse current ENUM values.";
        }
    }
} else {
    $error = "Failed to get role column information: " . $conn->error;
}

?>

<!-- Breadcrumb -->
<nav aria-label="breadcrumb" class="mb-4">
    <ol class="breadcrumb">
        <li class="breadcrumb-item"><a href="../index.php">Debug Tools</a></li>
        <li class="breadcrumb-item active">Add User Roles</li>
    </ol>
</nav>

<div class="container">
    <div class="card shadow-sm">
        <div class="card-header">
            <h5 class="mb-0">Add User Roles: Director and Developer</h5>
        </div>
        <div class="card-body">
            <?php if ($success): ?>
                <div class="alert alert-success">
                    <i class="fas fa-check-circle me-2"></i> Successfully added "director" and "developer" roles to user role options.
                </div>
                
                <h6 class="mt-4">Updated Role Options:</h6>
                <div class="table-responsive mt-3">
                    <table class="table table-bordered">
                        <thead>
                            <tr>
                                <th>Available User Roles</th>
                            </tr>
                        </thead>
                        <tbody>
                            <?php foreach ($enum_values as $role): ?>
                                <tr>
                                    <td><?php echo ucfirst($role); ?></td>
                                </tr>
                            <?php endforeach; ?>
                        </tbody>
                    </table>
                </div>
                
                <div class="mt-4">
                    <p><strong>Next Steps:</strong></p>
                    <ul>
                        <li>You can now assign the "Director" or "Developer" role to users</li>
                        <li>Update any role-based access control in your application if needed</li>
                        <li>Check admin user management screens to ensure they display the new roles</li>
                    </ul>
                </div>
            <?php elseif ($error): ?>
                <div class="alert alert-danger">
                    <i class="fas fa-exclamation-triangle me-2"></i> <?php echo $error; ?>
                </div>
            <?php endif; ?>
        </div>
        <div class="card-footer">
            <a href="../index.php" class="btn btn-primary">
                <i class="fas fa-arrow-left me-2"></i> Back to Debug Tools
            </a>
            <?php if ($success): ?>
                <a href="../../admin/users.php" class="btn btn-success ms-2">
                    <i class="fas fa-users me-2"></i> Go to User Management
                </a>
            <?php endif; ?>
        </div>
    </div>
</div>

<?php
// Add footer
include_once '../footer.php';
?>