// Đăng ký kích hoạt Role Quản lý hợp đồng trong WordPress function vibhome_register_contract_manager_role() { if (!get_role('contract_manager')) { add_role( 'contract_manager', 'Quản lý hợp đồng', array( 'read' => true, 'edit_posts' => false, ) ); } } add_action('init', 'vibhome_register_contract_manager_role'); //chặn vào crm add_action('template_redirect', 'vibhome_unified_pages_router_v49'); function vibhome_unified_pages_router_v49() { $request_uri = strtok($_SERVER['REQUEST_URI'], '?'); $path = rtrim($request_uri, '/'); // Kiểm soát chặt chẽ đường dẫn /quan-ly-crm if ($path === '/quan-ly-crm') { if (is_user_logged_in()) { $current_user = wp_get_current_user(); $roles = (array)$current_user->roles; $login_lower = strtolower($current_user->user_login); $db_role = isset($current_user->role) ? strtolower(trim($current_user->role)) : ''; // Kiểm tra xem user có phải là Kế toán, Kiến trúc sư hoặc Quản lý hợp đồng hay không $is_restricted = ( in_array('accountant', $roles) || in_array('architect', $roles) || in_array('contract_manager', $roles) || $db_role === 'accountant' || $db_role === 'architect' || $db_role === 'contract_manager' || strpos($login_lower, 'ketoan') !== false || strpos($login_lower, 'kientrucsu') !== false || strpos($login_lower, 'kts') !== false ); // Nếu thuộc nhóm bị hạn chế, lập tức chặn và đá văng về trang quản lý hợp đồng hoặc trang chủ if ($is_restricted) { wp_safe_redirect(home_url('/quan-ly-hop-dong/')); exit; } } else { // Nếu chưa đăng nhập mà vào /quan-ly-crm thì chuyển về trang hợp đồng/đăng nhập wp_safe_redirect(home_url('/quan-ly-hop-dong/')); exit; } } } // Tự động gán đúng role khi tạo tài khoản mới add_action('user_register', 'vibhome_auto_assign_user_role_on_create'); // Tự động cập nhật lại role nếu tên đăng nhập thay đổi hoặc chỉnh sửa profile add_action('profile_update', 'vibhome_auto_assign_user_role_on_create'); function vibhome_auto_assign_user_role_on_create($user_id) { // Không chạy nếu là AJAX / cron / background job không liên quan để tránh lỗi if (defined('DOING_AJAX') && DOING_AJAX) { // Vẫn cho phép chạy qua AJAX nếu đang tạo user từ trang quản trị } $user = get_userdata($user_id); if (!$user) { return; } $login_lower = strtolower($user->user_login); $target_role = 'sale'; // Mặc định là sale // Kiểm tra tên đăng nhập để phân quyền chuẩn if (strpos($login_lower, 'ketoan') !== false) { $target_role = 'accountant'; } elseif (strpos($login_lower, 'kientrucsu') !== false || strpos($login_lower, 'kts') !== false) { $target_role = 'architect'; } elseif (strpos($login_lower, 'quanly') !== false || strpos($login_lower, 'contract') !== false || $login_lower === 'trunggdtc') { $target_role = 'contract_manager'; // Gán chuẩn role Quản lý hợp đồng } elseif ($login_lower === 'admin' || $login_lower === 'adminvibhome') { $target_role = 'administrator'; // Giữ quyền admin tối cao nếu là tài khoản quản trị } // Gán trực tiếp role vào WordPress user object $user->set_role($target_role); } // 1. NHẬN DIỆN VAI TRÒ CRM MANAGER & ADMINISTRATOR LÀ ADMIN TRANG HỢP ĐỒNG function vibhome_is_contract_admin_v49($user) { if (!$user || !is_user_logged_in()) return false; $roles = (array)$user->roles; $db_role = isset($user->role) ? strtolower(trim($user->role)) : ''; return current_user_can('manage_options') || in_array('administrator', $roles) || in_array('crm_manager', $roles) || in_array('contract_manager', $roles) || $db_role === 'crm_manager' || $db_role === 'contract_manager' || $db_role === 'administrator'; } // 2. TỰ ĐỘNG GHI 'crm_manager' VÀO CỘT role BẢNG wp_users KHI LƯU USER // TỰ ĐỘNG BẢO VỆ VÀ GHI ĐÚNG ROLE VÀO CỘT `role` BẢNG WP_USERS add_action('user_register', 'vibhome_sync_custom_db_role', 20); add_action('profile_update', 'vibhome_sync_custom_db_role', 20); function vibhome_sync_custom_db_role($user_id) { $user = get_userdata($user_id); if (!$user) return; $roles = (array)$user->roles; $login_lower = strtolower($user->user_login); // Mặc định là sale $db_role_value = 'sale'; // Ưu tiên nhận diện đúng các vai trò quản lý / admin if (in_array('contract_manager', $roles)) { $db_role_value = 'contract_manager'; } elseif (in_array('crm_manager', $roles)) { $db_role_value = 'crm_manager'; } elseif (in_array('administrator', $roles) || strpos($login_lower, 'admin') !== false) { $db_role_value = 'administrator'; } elseif (in_array('accountant', $roles) || strpos($login_lower, 'ketoan') !== false) { $db_role_value = 'accountant'; } elseif (in_array('architect', $roles) || strpos($login_lower, 'kientrucsu') !== false || strpos($login_lower, 'kts') !== false) { $db_role_value = 'architect'; } // Cập nhật chuẩn xác vào cột role của bảng wp_users global $wpdb; $wpdb->update( $wpdb->users, array('role' => $db_role_value), array('ID' => $user_id) ); } // Thêm bộ lọc hiển thị tên tiếng Việt cho role contract_manager nếu WordPress không tự nhận add_filter('editable_roles', function($roles) { if (isset($roles['contract_manager'])) { $roles['contract_manager']['name'] = 'Quản lý hợp đồng'; } else { $roles['contract_manager'] = array( 'name' => 'Quản lý hợp đồng', 'capabilities' => array('read' => true) ); } return $roles; }); add_action('template_redirect', 'vibhome_block_crm_page_native'); function vibhome_block_crm_page_native() { // Kiểm tra chính xác xem có phải đang truy cập trang có slug là 'quan-ly-crm' không if ( is_page('quan-ly-crm') ) { if ( is_user_logged_in() ) { $current_user = wp_get_current_user(); // 🛑 DANH SÁCH TÀI KHOẢN CỤ THỂ BỊ CHẶN (Điền user_login vào đây) $blocked_usernames = array('kientrucsu2','ketoan1'); // Nếu muốn chặn thêm tài khoản khác: array('kientrucsu2', 'user_khac') // Nếu tài khoản đăng nhập nằm trong danh sách chặn if ( in_array($current_user->user_login, $blocked_usernames) ) { // Lập tức chuyển hướng ra trang quản lý hợp đồng wp_redirect( home_url('/quan-ly-hop-dong/') ); exit; } } } } Page Not Found - VIBHOME - THIẾT KẾ THI CÔNG TRỌN GÓI
404

Rất tiếc! Không tìm thấy trang.

Dường như không có gì được tìm thấy tại vị trí này. Có thể thử một trong các liên kết bên dưới hoặc tìm kiếm?

📊 CÔNG CỤ DỰ TOÁN 2026

BÓC TÁCH DỰ TOÁN CHUẨN
TRÁNH PHÁT SINH HÀNG TRĂM TRIỆU

90% chủ nhà bị đội vốn do không bóc tách kỹ từ đầu. Bạn có thể kiểm tra ngay ngân sách chính xác cho đất của bạn ngay tại đây.

Nhập thông tin khuôn đất và tùy chọn mái/sảnh để bóc tách chính xác.

TÍNH DỰ TOÁN THIẾT KẾ NỘI THẤT VIBHOME

Nhập diện tích & Chọn phong cách để nhận báo giá chi phí thiết kế tức thì

Phong thủy
0986 863 666
Hotline
0986 863 666
Zalo
Messenger
Messenger
AI Chat
Trợ lý ảo
Trợ lý VIBHOME
×

Kết nối trợ lý Vibhome

Anh/chị vui lòng cho em xin thông tin để tiện hỗ trợ tư vấn tốt nhất ạ!

✨ LẤY DỰ TOÁN Miễn phí ngay ➔