Điểm:1

Tham chiếu người dùng bị vô hiệu hóa trong quá trình di chuyển

lá cờ in

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?

usmanjutt84 avatar
lá cờ in
Quá trình di chuyển của bạn có dựa trên mô-đun tùy chỉnh của riêng bạn không?
usmanjutt84 avatar
lá cờ in
Khi tôi di chuyển từ D7 sang D9, nó hoạt động hoàn hảo thông qua lập trình từ phía tôi. `$d9Node->setOwnerId($d9Uid);`
lá cờ in
Vâng, đúng vậy. Tôi có plugin quy trình tùy chỉnh sao chép tệp S3 bucket sang bucket và sau đó tôi đăng ký các tệp đó vào hệ thống tệp của drupal với File::create() nơi tôi chuyển id người dùng làm một trong các tham số. Các tệp đó được sử dụng bằng cách di chuyển sau để tạo các thực thể hình ảnh phương tiện bằng cách tham chiếu các tệp đã tạo.
lá cờ in
Nhưng tôi thích một số giải pháp chung hơn - hầu hết quá trình di chuyển sẽ không sử dụng (các) plugin tùy chỉnh của tôi.
Alireza Tabatabaeian avatar
lá cờ cn
bạn có nghĩa là bạn muốn tất cả người dùng trang web bị vô hiệu hóa? tại sao bạn không để chúng được bật và tắt tất cả chúng sau khi quá trình di chuyển hoàn tất?
lá cờ in
@AlirezaTabatabaeian không phải tất cả. Chỉ những thứ tôi đang tạo ra. Và sau đó tôi muốn có thể tham chiếu họ với tư cách là chủ sở hữu tệp/thực thể, trong khi xác thực được bật cho tệp di chuyển.
Alireza Tabatabaeian avatar
lá cờ cn
Trong trường hợp này, tôi sẽ thêm trường Boolean, hãy gọi nó là `field_nên_disabled` và trong trường hợp tạo loại người dùng đó, tôi sẽ cung cấp cho họ giá trị True và sau đó tôi có thể tiếp tục di chuyển với những người dùng này được bật và tắt chúng khi quá trình di chuyển kết thúc, trường chẵn có thể bị xóa sau đó
lá cờ in
@AlirezaTabatabaeian xin lỗi, tôi không hiểu bạn. Ngay cả khi tôi chuyển người dùng sang người dùng 1 trong quá trình di chuyển, thì tại một thời điểm nào đó, nó sẽ được chuyển trở lại người dùng mà tôi đã tạo, tài khoản này bị vô hiệu hóa và việc tham chiếu không thành công. Đó là vấn đề.
Alireza Tabatabaeian avatar
lá cờ cn
Tôi khuyên bạn nên để người dùng được bật để bạn có thể di chuyển mà không gặp vấn đề gì, nhưng bạn không muốn họ được bật trên trang web của mình, vì vậy giải pháp có thể là vô hiệu hóa những người dùng này và để theo dõi những người dùng nào nên được bật bị vô hiệu hóa và người dùng nào không nên đặt giá trị trên tài khoản của họ (sử dụng trường bổ sung), bây giờ tôi đã hiểu rõ hơn chưa? :)
lá cờ in
Vâng, rõ ràng bây giờ. Có lẽ có thể là một số loại giải pháp thay thế. Tôi sẽ phải quan tâm đến tất cả người dùng được sử dụng trong quá trình di chuyển, không chỉ những người dùng tôi tạo vì những người dùng hiện có cũng có thể bị vô hiệu hóa, nhưng có thể thực hiện được.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.