Tôi có quá trình di chuyển để tạo tệp. Đối với chủ sở hữu tệp, tôi đang cố gắng tìm người dùng hiện có qua email và nếu không tìm thấy, tôi sẽ nhanh chóng tạo một người dùng. Vấn đề là những người dùng tôi đang tạo phải bị vô hiệu hóa (tôi không muốn họ đăng nhập vào trang web). Nhưng nếu tôi vô hiệu hóa chúng và cố gắng sử dụng chúng làm chủ sở hữu tệp thì tôi nhận được thông báo:
"Không thể tham chiếu thực thể này (người dùng: 187)."
Tôi có thể vô hiệu hóa xác thực cho tệp di chuyển đó, nhưng nó sẽ vô hiệu hóa hoàn toàn, không chỉ đối với kiểm tra người dùng này.
Tôi đã thử sử dụng Trình chuyển đổi tài khoản (từ người đăng ký sự kiện, phản ứng trên các sự kiện pre_import và post_import) để chuyển sang người dùng 1 trước khi quá trình di chuyển bắt đầu và chuyển trở lại khi kết thúc, nhưng không hiệu quả.
Bất kỳ ý tưởng nào về cách tham chiếu người dùng bị vô hiệu hóa trong quá trình di chuyển nhưng vẫn bật xác thực?
Cập nhật:
Đã thực hiện một số nghiên cứu và việc kiểm tra này được thực hiện tại
\Drupal\user\Plugin\EntityReferenceSelection\UserSelection::buildEntityQuery()
Có một mã:
// Thêm kiểm tra quyền là không đủ cho người dùng: core
// yêu cầu chúng ta cũng phải biết về khái niệm 'blocked' và 'active'.
if (!$this->currentUser->hasPermission('quản lý người dùng')) {
$truy vấn->điều kiện('trạng thái', 1);
}
Và nếu tôi nhận xét những dòng đó, nó sẽ không được kiểm tra xem người dùng có bị vô hiệu hóa hay không và quá trình xác thực kết thúc thành công.
Điều kỳ lạ là ngay cả khi tôi sử dụng Trình chuyển đổi tài khoản để chuyển sang người dùng 1 và bên trong quy trình của tôi, người dùng plugin thực sự là 1 khi mã này được thực thi, người dùng không còn là 1 nữa, mà là người tôi đã tạo và gán cho tệp (người bị vô hiệu hóa), vì vậy phải là quá trình nhập đó cũng đang sử dụng Trình chuyển đổi tài khoản?
Bất kỳ ý tưởng làm thế nào để giải quyết điều này? Tôi có thể buộc chạy di chuyển với tư cách người dùng (quản trị viên) cụ thể không?