WebLoader a problémy s nonce

netteAmater
Člen | 9
+
0
-

Zdravím,

mám jeden takový dotaz s věci, na které jsem se zasekl. Používám webloader ve verzi s commitem pro nonce viz. https://github.com/…39f3d68a7b81.

Problém na webu mám v tom, že v kódu jsou i javascripty, co nejsou v souborech a zároveň mají nastavené nonce. A já jsem zatím nepřišel na to, jak dostat do nonce od souborů z webloaderu stejnou hodnotu, co mají ty tagy nebo případně i něco dalšího, co není produkt webloaderu. Setkal se někdo s tímto problémem? Díky za případné rady.

Michalek
Člen | 211
+
0
-

Ale jo, setkal. Řešení nevím jestli je dobré, ale funguje :)

{control jsFrontend|cspNonce:$this->global->uiNonce}
public static function cspNonce($text, $nonce) {
    return str_replace('<script', '<script nonce="' . $nonce . '"', $text);
}

Editoval Michalek (1. 12. 2022 18:28)

netteAmater
Člen | 9
+
0
-

Díky za radu

Gappa
Nette Blogger | 208
+
0
-

Pak lze ještě použít fork v této verzi:

Je tam ale víc změn, které nemusí být žádoucí (oproti té klasické původní verzi).

Nebo jen vyzobat úpravy:

d@rkWolf
Člen | 167
+
0
-

@Gappa Zdar, dá se ten tvůj fork nějak requirovat Composerem? Nedaří se mi na to přijít.

Gappa
Nette Blogger | 208
+
0
-

d@rkWolf napsal(a):

@Gappa Zdar, dá se ten tvůj fork nějak requirovat Composerem? Nedaří se mi na to přijít.

Takto:

composer.json

"repositories": [
	{
		"type": "vcs",
		"url": "https://github.com/Gappa/WebLoader"
	},
}

Nějak jsem se nikdy nedostal k tomu, aby se z toho stal samostatný balíček :)

d@rkWolf
Člen | 167
+
0
-

@Gappa asi se mi to povedlo, nainstaloval jsem v5.1, protože to mám teď na php7.4, akorát v adminu mi to háže error u externího js scriptu:

Argument 1 passed to WebLoader\Nette\JavaScriptLoader::getElement() must be an instance of WebLoader\File, string given, called in D:\Data\web\3_ostatni\admin-v2\vendor\janmarek\webloader\src\Nette\WebLoader.php on line 90

Ten je zadaný normálně takto, v readme je to taky tak:

remoteFiles:
	- https://cdn.ckeditor.com/4.21.0/full-all/ckeditor.js

Extension je nutné registovat takto? Protože u commitu verze 3.0.3 bylo napsáno, že už se ručně posílat wwwDir a debugMode nemusejí a v readme to taky není, ale bez toho mi registrování extension hlásí, že dostává 0 parametrů a chce přesně 3.

extensions:
    webloader: WebLoader\Nette\Extension(%appDir%,%wwwDir%,%debugMode%)

Jsou tam nějaké nové funkce? Nedá se to třeba nastavit, aby to na dev propisovalo JS soubory bez spojování a přejmenování? Prostě jen vzít tak jak jsou a vložit-líp se v tom hledají chyby, než v jednom obřím sloučeném souboru.

Gappa
Nette Blogger | 208
+
0
-

Podpora pro remoteFiles byla odstraněna – nepoužívalo se to (snaha mít vše lokálně), při úpravách kódu se to odstranilo. Řešením je nalinkovat ručně.

Parametry je v této verzi nutné předat, jsou přiznané v konstruktoru, je to čistší:

Popisy jedině asi tady, nikdy nebyl důvod/motivace/čas psát cokoliv lepšího:

d@rkWolf
Člen | 167
+
0
-

@Gappa aha, infa o odstranění těch remoteFiles jsem si tam nikde nevšiml, no to asi neva, já sem si tím linkoval akorát ten CKeditor, protože mi asi přišlo jednodušší upgradovat verzi přepsáním čísla v configu než v šabloně :-)

No aspoň zlehka updatovat ten Readme na úvodu, ta registrace extension, remoteFiles apod. :-)

d@rkWolf
Člen | 167
+
0
-

@Gappa čau, prosímtě, dá se nějak obejít neustále rekompilování scss když se nic nezměnilo? nějaká kontrola změněných souborů nebo tak něco? když to mám na localhostu v dev módu a mám tam hodně scss kódu, je každé obnovení stránky strašně pomalé (tracy měří třeba 9–10 000 ms na reload).

Gappa
Nette Blogger | 208
+
0
-

@darkWolf Nevím, používám LESS a tam tenhle problém není 🤷‍♂️. S interní logikou na zjišťování změn jsem tuším nic nedělal, ta by měla být původní.

d@rkWolf
Člen | 167
+
0
-

@Gappa no tam je nějaké watch files, ale já to nikdy nepoužil, už nevím proč, mám dojem, že sem někde viděl někoho psát, že to hrozně zpomaluje – toto – nevím, proč je tam jednou from a podruhé in:

watchFiles: # only watch modify file
- {files: [„.css“, „.less“], from: css}
- {files: [„.css“, „.less“], in: css}

Jak je myšleno tohle v 5.0.0 release?

Removed: joinFiles, they are always joined. This can be substituted by adding batches as needed.

Samostatné JS soubory na dev mi přijdou lepší, lépe se v tom hledají chyby. U SCSS to samozřejmě bez spojení nejde, to je jasný.

Taky jsem dřív používal LESS, ale potom, co od něj po 3.verzi odešel Bootstrap sem přešel na SCSS.