[LEGADO] Orion Access Controller — Referência (AUD-028)

/* Plugin Name: Orion Access Controller — Test Mode Description: Módulo de identificação, mapeamento de vínculos e proteção de acesso do Representante (OS-035C). Version: 0.2.0 Author: Orion Project */if ( ! defined( ‘ABSPATH’ ) ) { exit; }/** * 1. Identificação do usuário logado */ function orion_get_current_user_data() { if ( ! is_user_logged_in() ) { return null; } $user = wp_get_current_user(); return array( ‘id’ => $user->ID, ‘login’ => $user->user_login, ‘roles’ => (array) $user->roles, ); }/** * 2. Validação de Role: Representante */ function orion_is_representante() { $user_data = orion_get_current_user_data(); if ( ! $user_data ) { return false; } return in_array( ‘representante’, $user_data[‘roles’] ); }/** * 3. Identificação do vínculo com o CPT Representantes */ function orion_get_rep_id() { $user_data = orion_get_current_user_data(); if ( ! $user_data ) { return null; }$args = array( ‘post_type’ => ‘representantes’, ‘posts_per_page’ => 1, ‘meta_query’ => array( array( ‘key’ => ‘wfix_rep_user_id’, ‘value’ => $user_data[‘id’], ‘compare’ => ‘=’, ), ), ‘fields’ => ‘ids’, );$query = new WP_Query( $args );if ( $query->have_posts() ) { return $query->posts[0]; }return null; }/** * 4. Proteção de Acesso (OS-035C) * Bloqueia acesso à Página 183 para usuários não autorizados. */ add_action( ‘template_redirect’, ‘orion_protect_representative_area’ ); function orion_protect_representative_area() { // ID da Página Oficial Orion if ( is_page( 183 ) ) { // FASE 02.1 – Usuário não autenticado if ( ! is_user_logged_in() ) { wp_redirect( site_url( ‘/login-representante/’ ) ); exit; }// FASE 02.2 – Usuário autenticado mas sem role representante if ( ! orion_is_representante() && ! current_user_can( ‘manage_options’ ) ) { wp_die( ‘Acesso negado. Esta área é restrita a representantes autorizados.’, ‘Acesso Restrito’, array( ‘response’ => 403 ) ); exit; } // FASE 02.3 – Role válida: Permite carregamento normal. } }/** * 5. Registro de Diagnóstico (Log Interno) */ add_action( ‘init’, ‘orion_oac_diagnose_log’ ); function orion_oac_diagnose_log() { if ( is_user_logged_in() ) { $is_rep = orion_is_representante() ? ‘SIM’ : ‘NÃO’; $rep_id = orion_get_rep_id(); $has_link = $rep_id ? ‘SIM (ID: ‘ . $rep_id . ‘)’ : ‘NÃO’; error_log( “ORION DIAGNOSTIC – Usuário representante identificado: $is_rep | ID representante encontrado: $has_link” ); } }

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima