Puncte:1

Faceți referire la utilizatorii cu dizabilități în timpul migrării

drapel in

Am o migrare care creează fișiere. Pentru proprietarii de fișiere, încerc să găsesc un utilizator existent prin e-mail și, dacă nu găsesc, creez unul din zbor. Problema este că acei utilizatori pe care îi creez trebuie să fie dezactivați (nu vreau să se autentifice pe site). Dar dacă le dezactivez și încerc să le folosesc ca proprietar de fișier, primesc mesajul:

„Această entitate (utilizator: 187) nu poate fi referită.”

Pot dezactiva validarea pentru acel fișier de migrare, dar se va dezactiva total, nu numai pentru această verificare de utilizator.

Am încercat să folosesc Account Switcher (de la abonatul evenimentului, reacționând la evenimentele pre_import și post_import) pentru a trece la utilizatorul 1 înainte de a începe migrarea și a reveni când se termină, dar nu m-a ajutat.

Aveți idee cum să faceți referire la utilizatorii cu dizabilități în timpul migrării, dar cu validarea menținută activată?

Actualizați:

Am făcut niște cercetări și această verificare se face la \Drupal\user\Plugin\EntityReferenceSelection\UserSelection::buildEntityQuery()

Există un cod:

// Adăugarea verificării permisiunii este, din păcate, insuficientă pentru utilizatori: core
// ne cere să știm și despre conceptul de „blocat” și „activ”.
dacă (!$this->currentUser->hasPermission('administrați utilizatori')) {
  $interogare->conditie('status', 1);
}

Și dacă comentez acele rânduri, nu se verifică dacă utilizatorul este dezactivat sau nu și validarea se încheie cu succes.

Lucru ciudat este că chiar și eu folosesc Account Switcher pentru a comuta la utilizatorul 1 și în interiorul meu plugin-ul de proces, utilizatorul este într-adevăr 1 când se execută acest cod, utilizatorul nu mai este 1, ci cel pe care l-am creat și l-am atribuit fișierului (dezactivat), așa că trebuie să fie că importul folosește și Account Switcher? Ai idee cum să rezolv asta? Pot forța migrarea să fie rulată ca utilizator (admin) specific?

usmanjutt84 avatar
drapel in
Migrarea dvs. se bazează pe propriul dvs. modul personalizat?
usmanjutt84 avatar
drapel in
Pe măsură ce migrez de la D7 la D9, funcționează perfect prin programare din partea mea. `$d9Node->setOwnerId($d9Uid);`
drapel in
Da, este. Am un plugin de proces personalizat care copiază fișierul S3 găleată în găleată și apoi înregistrez acele fișiere în sistemul de fișiere drupal cu File::create() unde trec id-ul de utilizator ca unul dintre parametri. Aceste fișiere sunt utilizate după migrarea următoare pentru a crea entități de imagine media prin referire la fișierele create.
drapel in
Dar aș prefera o soluție generală - cea mai mare parte a migrației nu va folosi plugin-urile mele personalizate.
Alireza Tabatabaeian avatar
drapel cn
vrei să spui că vrei ca toți utilizatorii site-ului să fie dezactivați? de ce nu le lași să fie activate și le dezactivează pe toate după ce migrarea este finalizată?
drapel in
@AlirezaTabatabaeian nu toate. Doar cele pe care le creez. Și vreau apoi să le pot referi ca proprietari de fișiere/entități, în timp ce validarea este activată pentru fișierul de migrare.
Alireza Tabatabaeian avatar
drapel cn
În acest caz, aș adăuga un câmp boolean, să-l numim `field_should_disabled` și, în cazul creării unui astfel de utilizator, le-aș da valoarea True și apoi aș putea continua migrarea cu acești utilizatori activați și să-i dezactivez când migrarea s-a terminat, câmpul chiar poate fi eliminat după aceea
drapel in
@AlirezaTabatabaeian scuze, nu te inteleg. Chiar dacă schimb utilizatorul la utilizatorul 1 în timpul migrării, la un moment dat revin la utilizatorul pe care l-am creat, care este dezactivat și referința nu reușește. Aceasta este problema.
Alireza Tabatabaeian avatar
drapel cn
Vă sugerez să lăsați utilizatorii să fie activați, astfel încât să puteți migra fără probleme, dar nu doriți ca aceștia să fie activați pe site-ul dvs., astfel încât soluția ar putea fi amânarea dezactivarii acestor utilizatori și pentru a urmări ce utilizatori ar trebui să fie dezactivat și care utilizatori nu ar trebui să le puteți seta o valoare în contul lor (folosind un câmp suplimentar), am fost mai clar acum? :)
drapel in
Da, clar acum. Poate fi un fel de soluție. Ar trebui să mă ocup de toți utilizatorii folosiți în migrare, nu doar de cei pe care îi creez, deoarece cei existenți pot fi și dezactivați, dar realizabili.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.