diff --git a/README.md b/README.md
index c97b225f..4c0ed1c3 100644
--- a/README.md
+++ b/README.md
@@ -56,7 +56,7 @@ Part-DB is also used by small companies and universities for managing their inve
## Requirements
* A **web server** (like Apache2 or nginx) that is capable of running [Symfony 5](https://symfony.com/doc/current/reference/requirements.html),
this includes a minimum PHP version of **PHP 7.4**
- * A **MySQL** (at least 5.6.5) /**MariaDB** (at least 10.0.1) database server if you do not want to use SQLite.
+ * A **MySQL** (at least 5.7) /**MariaDB** (at least 10.2.2) database server if you do not want to use SQLite.
* Shell access to your server is highly suggested!
* For building the client side assets **yarn** and **nodejs** is needed.
diff --git a/assets/ckeditor/html_label.js b/assets/ckeditor/html_label.js
index 0a16ec4b..b5ca5c3e 100644
--- a/assets/ckeditor/html_label.js
+++ b/assets/ckeditor/html_label.js
@@ -187,16 +187,47 @@ Editor.defaultConfig = {
},
'fontSize': {
options: [
- 8,
- 11,
- 13,
'default',
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
17,
+ 18,
19,
+ 20,
21,
],
supportAllValues: true
},
+ // Allow all HTML features for our labels
+ htmlSupport: {
+ allow: [
+ {
+ name: /.*/,
+ attributes: true,
+ classes: true,
+ styles: true
+ }
+ ],
+ disallow: [
+ //Some rudimentary protection against XSS, even if it is not really needed as this is only parsed by DOMHTML which does not support any kind of script execution.
+ {
+ name: /^(head|body|html|script)$/i,
+ },
+ {
+ name: /.*/,
+ attributes: /^on.*/i
+ }
+ ]
+ },
image: {
toolbar: [
'imageTextAlternative',
@@ -214,7 +245,7 @@ Editor.defaultConfig = {
'tableCellProperties',
'tableProperties'
]
- }
+ },
};
export default { Editor, EditorWatchdog };
diff --git a/assets/ckeditor/plugins/PartDBLabel/PartDBLabel.css b/assets/ckeditor/plugins/PartDBLabel/PartDBLabel.css
index 9171c357..62d066a0 100644
--- a/assets/ckeditor/plugins/PartDBLabel/PartDBLabel.css
+++ b/assets/ckeditor/plugins/PartDBLabel/PartDBLabel.css
@@ -1,9 +1,10 @@
.cke_placeholder {
background: #ffff00;
- padding: 4px 2px;
+ padding: 1px 2px;
outline-offset: -2px;
line-height: 1em;
margin: 0 1px;
+ display: inline-block;
}
.cke_placeholder::selection {
diff --git a/assets/ckeditor/plugins/PartDBLabel/PartDBLabelUI.js b/assets/ckeditor/plugins/PartDBLabel/PartDBLabelUI.js
index b33f7f39..b9f40439 100644
--- a/assets/ckeditor/plugins/PartDBLabel/PartDBLabelUI.js
+++ b/assets/ckeditor/plugins/PartDBLabel/PartDBLabelUI.js
@@ -93,6 +93,16 @@ const PLACEHOLDERS = [
['[[CREATION_DATE]]', 'Creation datetime'],
]
},
+ {
+ label: 'Barcodes',
+ entries: [
+ ['[[1D_CONTENT]]', 'Content of the 1D barcodes (like Code 39)'],
+ ['[[2D_CONTENT]]', 'Content of the 2D barcodes (QR codes)'],
+ ['[[BARCODE_QR]]', 'QR code linking to this element'],
+ ['[[BARCODE_C128]]', 'Code 128 barcode linking to this element'],
+ ['[[BARCODE_C39]]', 'Code 39 barcode linking to this element'],
+ ]
+ },
{
label: 'Globals',
entries: [
@@ -102,7 +112,8 @@ const PLACEHOLDERS = [
['[[DATE]]', 'Current date'],
['[[TIME]]', 'Current time'],
['[[INSTALL_NAME]]', 'Instance name'],
- ['[[TYPE]]', 'Target type']
+ ['[[TYPE]]', 'Target type'],
+ ['[[INSTANCE_URL]]', 'URL of this Part-DB instance']
],
},
];
@@ -136,6 +147,7 @@ function getDropdownItemsDefinitions(t) {
model: new Model( {
commandParam: entry[0],
label: t(entry[1]),
+ tooltip: entry[0],
withText: true
} ),
};
diff --git a/assets/ckeditor/plugins/PartDBLabel/lang/de.js b/assets/ckeditor/plugins/PartDBLabel/lang/de.js
index e96df8c5..663058f4 100644
--- a/assets/ckeditor/plugins/PartDBLabel/lang/de.js
+++ b/assets/ckeditor/plugins/PartDBLabel/lang/de.js
@@ -37,6 +37,14 @@ Object.assign( window.CKEDITOR_TRANSLATIONS[ 'de' ].dictionary, {
'Storage location': 'Lagerort',
'Storage location (Full path)': 'Lagerort (Vollständiger Pfad)',
+
+ 'Barcodes': 'Barcodes',
+ 'Content of the 1D barcodes (like Code 39)': 'Inhalt der 1D Barcodes (z.B. Code 39)',
+ 'Content of the 2D barcodes (QR codes)': 'Inhalt der 2D Barcodes (QR Codes)',
+ 'QR code linking to this element': 'QR Code verknüpft mit diesem Element',
+ 'Code 128 barcode linking to this element': 'Code 128 Barcode verknüpft mit diesem Element',
+ 'Code 39 barcode linking to this element': 'Code 39 Barcode verknüpft mit diesem Element',
+
'Location ID': 'Lagerort ID',
'Name': 'Name',
'Full path': 'Vollständiger Pfad',
@@ -50,5 +58,6 @@ Object.assign( window.CKEDITOR_TRANSLATIONS[ 'de' ].dictionary, {
'Current time': 'Aktuelle Zeit',
'Instance name': 'Instanzname',
'Target type': 'Zieltyp',
+ 'URL of this Part-DB instance': 'URL dieser Part-DB Instanz',
} );
\ No newline at end of file
diff --git a/assets/controllers/elements/ckeditor_controller.js b/assets/controllers/elements/ckeditor_controller.js
index 87607709..2df84f47 100644
--- a/assets/controllers/elements/ckeditor_controller.js
+++ b/assets/controllers/elements/ckeditor_controller.js
@@ -6,6 +6,7 @@ import { default as HTMLLabelEditor } from "../../ckeditor/html_label";
import EditorWatchdog from '@ckeditor/ckeditor5-watchdog/src/editorwatchdog';
+import "../../css/ckeditor.css";
/* stimulusFetch: 'lazy' */
export default class extends Controller {
@@ -43,6 +44,13 @@ export default class extends Controller {
editor.enableReadOnlyMode("readonly");
}
+ //Apply additional styles
+ const editor_div = editor.ui.view.element;
+ const new_classes = this.element.dataset.ckClass;
+ if (editor_div && new_classes) {
+ editor_div.classList.add(...new_classes.split(","));
+ }
+
console.log(editor);
})
.catch(error => {
diff --git a/assets/controllers/elements/sidebar_tree_controller.js b/assets/controllers/elements/sidebar_tree_controller.js
index 228bbe40..1801b42a 100644
--- a/assets/controllers/elements/sidebar_tree_controller.js
+++ b/assets/controllers/elements/sidebar_tree_controller.js
@@ -6,6 +6,8 @@ export default class extends TreeController {
_storage_key;
+ _lastUpdate;
+
connect() {
//Check if the tree is already initialized, if so then skip initialization (useful when going back) to in history using Turbo
if(this._isInitialized()) {
@@ -31,6 +33,25 @@ export default class extends TreeController {
} else {
this.setMode(default_mode);
}
+
+ //Register an event listener which checks if the tree needs to be updated
+ document.addEventListener('turbo:render', this.doUpdateIfNeeded.bind(this));
+ }
+
+ doUpdateIfNeeded()
+ {
+ const info_element = document.getElementById('sidebar-last-time-updated');
+ const date_str = info_element.dataset.lastUpdate;
+ const server_last_update = new Date(date_str);
+
+ if(this._lastUpdate < server_last_update) {
+ console.log("Sidebar tree is outdated, reloading (last update: " + this._lastUpdate + ", server update: " + server_last_update + ")");
+ this._lastUpdate = new Date();
+
+
+
+ this.reinitTree();
+ }
}
setMode(mode) {
@@ -47,6 +68,9 @@ export default class extends TreeController {
this.sourceTextTarget.innerText = text;
this.setURL(url);
+
+ //Update the last update time
+ this._lastUpdate = new Date();
}
changeDataSource(event)
@@ -61,5 +85,7 @@ export default class extends TreeController {
//Save the mode in local storage
localStorage.setItem(this._storage_key, mode);
+
+ this._lastUpdate = new Date();
}
}
diff --git a/assets/controllers/elements/tree_controller.js b/assets/controllers/elements/tree_controller.js
index 9c19c3be..6d9aa2a8 100644
--- a/assets/controllers/elements/tree_controller.js
+++ b/assets/controllers/elements/tree_controller.js
@@ -70,14 +70,7 @@ export default class extends Controller {
onNodeSelected: (event) => {
const node = event.detail.node;
if (node.href) {
-
- //Simulate a click so we just change the inner frame
- let a = document.createElement('a');
- a.setAttribute('href', node.href);
- a.innerHTML = "";
- this.element.appendChild(a);
- a.click();
- a.remove();
+ window.Turbo.visit(node.href, {action: "advance"});
}
},
//onNodeContextmenu: contextmenu_handler,
diff --git a/assets/css/app.css b/assets/css/app.css
index 33891bc8..61b01f81 100644
--- a/assets/css/app.css
+++ b/assets/css/app.css
@@ -65,6 +65,7 @@ body {
/** Hide scrollbar in old Firefox and Edge **/
-ms-overflow-style: none;
+ /*noinspection CssInvalidPropertyValue*/
overflow: -moz-scrollbars-none;
/*noinspection CssUnknownProperty*/
scrollbar-width: none;
@@ -94,6 +95,7 @@ body {
/** Hide scrollbar in Firefox and Edge **/
-ms-overflow-style: none;
+ /*noinspection CssInvalidPropertyValue*/
overflow: -moz-scrollbars-none;
/* Use standard version for hiding the scrollbar */
scrollbar-width: none;
@@ -252,10 +254,10 @@ a.badge {
.bg-primary-striped {
background: repeating-linear-gradient(
-45deg,
- var(--primary),
- var(--primary) 10px,
- var(--info) 10px,
- var(--info) 20px
+ var(--bs-primary),
+ var(--bs-primary) 10px,
+ var(--bs-info) 10px,
+ var(--bs-info) 20px
)
}
@@ -377,7 +379,7 @@ btn-xs
margin-right: auto;
}
-.darkmode--activated .hoverpic:hover, {
+.darkmode--activated .hoverpic:hover {
background: black;
}
@@ -722,16 +724,20 @@ div.dataTables_wrapper div.dataTables_info {
white-space: normal;
}
+th.select-checkbox {
+ min-width: 10px;
+}
+
/*******************************
Parts datatable styling
******************************/
.attach-table-icon {
margin-right: 0.7em;
- color: var(--gray);
+ color: var(--bs-gray);
}
.attach-table-icon:hover {
- color: var(--gray-dark);
+ color: var(--bs-gray-dark);
}
.badge-table {
margin-right: 0.2em;
diff --git a/assets/css/ckeditor.css b/assets/css/ckeditor.css
new file mode 100644
index 00000000..fbd93b44
--- /dev/null
+++ b/assets/css/ckeditor.css
@@ -0,0 +1,19 @@
+/********************************************************************
+* HTML Label style override
+*********************************************************************/
+
+/** Should be the same settings, as in label_style.css */
+.ck-html-label .ck-content {
+ font-family: "DejaVu Sans Mono", monospace;
+ font-size: 12px;
+ line-height: 1.0;
+ font-size-adjust: 1.5;
+}
+
+.ck-html-label .ck-content p {
+ margin: 0;
+}
+
+.ck-html-label .ck-content hr {
+ margin: 2px;
+}
diff --git a/assets/css/selectpicker_extensions.css b/assets/css/selectpicker_extensions.css
index 925ab592..cda2278e 100644
--- a/assets/css/selectpicker_extensions.css
+++ b/assets/css/selectpicker_extensions.css
@@ -11,4 +11,12 @@
}
.dropdown-item .picker-hs {
display: inherit;
-}
\ No newline at end of file
+}
+
+/** Bootstrap-select Unhide on selected element */
+.picker-us {
+ display: inherit;
+}
+.dropdown-item .picker-us {
+ display: none;
+}
diff --git a/assets/js/u2f_auth.js b/assets/js/u2f_auth.js
deleted file mode 100644
index 9ab9a256..00000000
--- a/assets/js/u2f_auth.js
+++ /dev/null
@@ -1,134 +0,0 @@
-import u2fApi from 'u2f-api'
-
-'use strict'
-
-window.u2fauth = window.u2fauth || {}
-
-u2fauth.formId = 'u2fForm'
-u2fauth.authCodeId = '_auth_code'
-u2fauth.keynameId = 'u2fkeyname'
-u2fauth.pressButtonId = 'u2fpressbutton'
-u2fauth.errorId = 'u2fError'
-u2fauth.timeout = 30
-u2fauth.errorTranslation = {
- 1: 'Unknown Error',
- 2: 'Bad Request',
- 3: 'Client configuration not supported',
- 4: 'Device already registered or ineligible',
- 5: 'Timeout. Click to retry'
-}
-
-u2fauth.ready = function (fn) {
- if (document.readyState !== 'loading') {
- fn()
- } else if (document.addEventListener) {
- document.addEventListener('DOMContentLoaded', fn)
- } else {
- document.attachEvent('onreadystatechange', function () {
- if (document.readyState !== 'loading') { fn() }
- })
- }
-}
-
-u2fauth.authenticate = function () {
- u2fauth.clearError()
- u2fauth.showPressButton()
-
- var form = document.getElementById(u2fauth.formId)
- var request = JSON.parse(form.dataset.request)
-
- u2fApi.isSupported()
- .then(function (supported) {
- if (supported) {
- return u2fApi.sign(request, u2fauth.timeout)
- .then(response => {
- u2fauth.hidePressButton()
- u2fauth.submit(form, response)
- })
- } else {
- alert('Browser not supported')
- }
- })
- .catch(data => {
- u2fauth.hidePressButton()
- u2fauth.showError(data.metaData.code, u2fauth.authenticate)
- })
-}
-
-u2fauth.register = function () {
- u2fauth.clearError()
- u2fauth.hideKeyname()
- u2fauth.showPressButton()
-
- var form = document.getElementById(u2fauth.formId)
- var request = JSON.parse(form.dataset.request)
-
- u2fApi.isSupported()
- .then(function (supported) {
- if (supported) {
- return u2fApi.register(request[0], request[1], u2fauth.timeout)
- .then(response => {
- u2fauth.hidePressButton()
- u2fauth.submit(form, response)
- })
- } else {
- alert('Browser not supported')
- }
- })
- .catch(data => {
- console.info(data)
- u2fauth.hidePressButton()
- u2fauth.showError(data.metaData.code, u2fauth.register)
- })
-}
-
-u2fauth.submit = function (form, data) {
- var codeField = document.getElementById(u2fauth.authCodeId)
- codeField.value = JSON.stringify(data)
- form.submit()
-}
-
-u2fauth.hideKeyname = function () {
- var keyname = document.getElementById(u2fauth.keynameId)
- keyname.style.display = 'none'
-}
-
-u2fauth.hidePressButton = function () {
- var pressButton = document.getElementById(u2fauth.pressButtonId)
- pressButton.style.display = 'none'
-}
-
-u2fauth.showPressButton = function () {
- var pressButton = document.getElementById(u2fauth.pressButtonId)
- pressButton.style.display = 'block'
-}
-
-u2fauth.clearError = function () {
- var errorDisplay = document.getElementById(u2fauth.errorId)
- errorDisplay.style.display = 'none'
- errorDisplay.innerText = ''
-}
-
-u2fauth.showError = function (error, callback) {
- var errorDisplay = document.getElementById(u2fauth.errorId)
- errorDisplay.style.display = 'block'
- errorDisplay.innerText = u2fauth.errorTranslation[error]
- errorDisplay.onclick = callback
-}
-
-u2fauth.ready(function () {
- const form = document.getElementById('u2fForm')
- if (!form) {
- return
- }
- const type = form.dataset.action
-
- if (type === 'auth') {
- u2fauth.authenticate()
- } else if (type === 'reg' && form.addEventListener) {
- form.addEventListener('submit', function (event) {
- event.preventDefault()
- u2fauth.register()
- }, false)
- }
-})
diff --git a/assets/js/webauthn_tfa.js b/assets/js/webauthn_tfa.js
new file mode 100644
index 00000000..fda5a066
--- /dev/null
+++ b/assets/js/webauthn_tfa.js
@@ -0,0 +1,208 @@
+'use strict'
+
+class WebauthnTFA {
+
+// Decodes a Base64Url string
+ _base64UrlDecode = (input) => {
+ input = input
+ .replace(/-/g, '+')
+ .replace(/_/g, '/');
+
+ const pad = input.length % 4;
+ if (pad) {
+ if (pad === 1) {
+ throw new Error('InvalidLengthError: Input base64url string is the wrong length to determine padding');
+ }
+ input += new Array(5-pad).join('=');
+ }
+
+ return window.atob(input);
+ };
+
+ // Converts an array of bytes into a Base64Url string
+ _arrayToBase64String = (a) => btoa(String.fromCharCode(...a));
+
+ // Prepares the public key options object returned by the Webauthn Framework
+ _preparePublicKeyOptions = publicKey => {
+ //Convert challenge from Base64Url string to Uint8Array
+ publicKey.challenge = Uint8Array.from(
+ this._base64UrlDecode(publicKey.challenge),
+ c => c.charCodeAt(0)
+ );
+
+ //Convert the user ID from Base64 string to Uint8Array
+ if (publicKey.user !== undefined) {
+ publicKey.user = {
+ ...publicKey.user,
+ id: Uint8Array.from(
+ window.atob(publicKey.user.id),
+ c => c.charCodeAt(0)
+ ),
+ };
+ }
+
+ //If excludeCredentials is defined, we convert all IDs to Uint8Array
+ if (publicKey.excludeCredentials !== undefined) {
+ publicKey.excludeCredentials = publicKey.excludeCredentials.map(
+ data => {
+ return {
+ ...data,
+ id: Uint8Array.from(
+ this._base64UrlDecode(data.id),
+ c => c.charCodeAt(0)
+ ),
+ };
+ }
+ );
+ }
+
+ if (publicKey.allowCredentials !== undefined) {
+ publicKey.allowCredentials = publicKey.allowCredentials.map(
+ data => {
+ return {
+ ...data,
+ id: Uint8Array.from(
+ this._base64UrlDecode(data.id),
+ c => c.charCodeAt(0)
+ ),
+ };
+ }
+ );
+ }
+
+ return publicKey;
+ };
+
+// Prepares the public key credentials object returned by the authenticator
+ _preparePublicKeyCredentials = data => {
+ const publicKeyCredential = {
+ id: data.id,
+ type: data.type,
+ rawId: this._arrayToBase64String(new Uint8Array(data.rawId)),
+ response: {
+ clientDataJSON: this._arrayToBase64String(
+ new Uint8Array(data.response.clientDataJSON)
+ ),
+ },
+ };
+
+ if (data.response.attestationObject !== undefined) {
+ publicKeyCredential.response.attestationObject = this._arrayToBase64String(
+ new Uint8Array(data.response.attestationObject)
+ );
+ }
+
+ if (data.response.authenticatorData !== undefined) {
+ publicKeyCredential.response.authenticatorData = this._arrayToBase64String(
+ new Uint8Array(data.response.authenticatorData)
+ );
+ }
+
+ if (data.response.signature !== undefined) {
+ publicKeyCredential.response.signature = this._arrayToBase64String(
+ new Uint8Array(data.response.signature)
+ );
+ }
+
+ if (data.response.userHandle !== undefined) {
+ publicKeyCredential.response.userHandle = this._arrayToBase64String(
+ new Uint8Array(data.response.userHandle)
+ );
+ }
+
+ return publicKeyCredential;
+ };
+
+
+ constructor()
+ {
+ const register_dom_ready = (fn) => {
+ document.addEventListener('turbo:load', fn)
+ }
+
+ register_dom_ready(() => {
+ this.registerForms();
+ });
+ }
+
+ registerForms()
+ {
+ //Find all forms which have an data-webauthn-tfa-action attribute
+ const forms = document.querySelectorAll('form[data-webauthn-tfa-action]');
+
+ forms.forEach((form) => {
+ console.debug('Found webauthn TFA form with action: ' + form.getAttribute('data-webauthn-tfa-action'), form);
+ //Ensure that the form has webauthn data
+
+ const dataString = form.getAttribute('data-webauthn-tfa-data')
+ const action = form.getAttribute('data-webauthn-tfa-action');
+
+ if (!dataString) {
+ console.error('Form does not have webauthn data, can not continue!', form);
+ return;
+ }
+
+ //Convert dataString to the needed dataObject
+ const dataObject = JSON.parse(dataString);
+ const options = this._preparePublicKeyOptions(dataObject);
+
+
+ if(action === 'authenticate'){
+ this.authenticate(form, {publicKey: options});
+ }
+
+ if(action === 'register'){
+ //Register submit action, so we can do the registration on submit
+ form.addEventListener('submit', (e) => {
+ e.preventDefault();
+ this.register(form, {publicKey: options});
+ });
+ }
+ });
+ }
+
+ /**
+ * Submit the form with the given result data
+ * @param form
+ * @param data
+ * @private
+ */
+ _submit(form, data)
+ {
+ const resultField = document.getElementById('_auth_code');
+ resultField.value = JSON.stringify(data)
+ form.submit();
+ }
+
+ authenticate(form, authData)
+ {
+ navigator.credentials.get(authData)
+ .then((credential) => {
+ //Convert our credential to a form which can be JSON encoded
+ let data = this._preparePublicKeyCredentials(credential);
+
+ this._submit(form, data)
+ })
+ .catch((error) => {
+ console.error("WebAuthn Authentication error: ", error);
+ alert("Error: " + error)
+ });
+ }
+
+ register(form, authData)
+ {
+ navigator.credentials.create(authData)
+ .then((credential) => {
+ //Convert our credential to a form which can be JSON encoded
+ let data = this._preparePublicKeyCredentials(credential);
+
+ this._submit(form, data)
+ })
+ .catch((error) => {
+ console.error("WebAuthn Registration error: ", error);
+ alert("Error: " + error)
+ });
+ }
+}
+
+window.webauthnTFA = new WebauthnTFA();
\ No newline at end of file
diff --git a/composer.json b/composer.json
index 484f367c..3d88bc8e 100644
--- a/composer.json
+++ b/composer.json
@@ -10,17 +10,19 @@
"ext-json": "*",
"ext-mbstring": "*",
"beberlei/doctrineextensions": "^1.2",
- "brick/math": "^0.10.2",
+ "brick/math": "^0.8.15",
"composer/package-versions-deprecated": "1.11.99.4",
"doctrine/annotations": "^1.6",
"doctrine/doctrine-bundle": "^2.0",
"doctrine/doctrine-migrations-bundle": "^3.0",
"doctrine/orm": "^2.9",
+ "doctrine/dbal": "3.4.*",
"dompdf/dompdf": "^2.0.0",
"erusev/parsedown": "^1.7",
"florianv/swap": "^4.0",
"florianv/swap-bundle": "dev-master",
"gregwar/captcha-bundle": "^2.1.0",
+ "jbtronics/2fa-webauthn": "^1.0.0",
"league/html-to-markdown": "^5.0.1",
"liip/imagine-bundle": "^2.2",
"nelmio/security-bundle": "^3.0",
@@ -69,8 +71,8 @@
"twig/inky-extra": "^3.0",
"twig/intl-extra": "^3.0",
"twig/markdown-extra": "^3.0",
- "webmozart/assert": "^1.4",
- "r/u2f-two-factor-bundle": "dev-scheb/2fa-support"
+ "web-auth/webauthn-symfony-bundle": "^3.3",
+ "webmozart/assert": "^1.4"
},
"require-dev": {
"dama/doctrine-test-bundle": "^7.0",
@@ -144,9 +146,5 @@
}
},
"repositories": [
- {
- "type": "vcs",
- "url": "https://github.com/jbtronics/u2f-two-factor-bundle.git"
- }
]
}
diff --git a/composer.lock b/composer.lock
index 03e0aa59..1ad97cae 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "8993207c8622a9f3b421a65bbf4072a1",
+ "content-hash": "1a99d5342c4613115a0616035374005b",
"packages": [
{
"name": "beberlei/assert",
@@ -132,26 +132,26 @@
},
{
"name": "brick/math",
- "version": "0.10.2",
+ "version": "0.8.17",
"source": {
"type": "git",
"url": "https://github.com/brick/math.git",
- "reference": "459f2781e1a08d52ee56b0b1444086e038561e3f"
+ "reference": "e6f8e7d04346a95be89580f8c2c22d6c3fa65556"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/brick/math/zipball/459f2781e1a08d52ee56b0b1444086e038561e3f",
- "reference": "459f2781e1a08d52ee56b0b1444086e038561e3f",
+ "url": "https://api.github.com/repos/brick/math/zipball/e6f8e7d04346a95be89580f8c2c22d6c3fa65556",
+ "reference": "e6f8e7d04346a95be89580f8c2c22d6c3fa65556",
"shasum": ""
},
"require": {
"ext-json": "*",
- "php": "^7.4 || ^8.0"
+ "php": "^7.1|^8.0"
},
"require-dev": {
"php-coveralls/php-coveralls": "^2.2",
- "phpunit/phpunit": "^9.0",
- "vimeo/psalm": "4.25.0"
+ "phpunit/phpunit": "^7.5.15|^8.5",
+ "vimeo/psalm": "^3.5"
},
"type": "library",
"autoload": {
@@ -176,28 +176,28 @@
],
"support": {
"issues": "https://github.com/brick/math/issues",
- "source": "https://github.com/brick/math/tree/0.10.2"
+ "source": "https://github.com/brick/math/tree/v0.8"
},
"funding": [
{
- "url": "https://github.com/BenMorel",
- "type": "github"
+ "url": "https://tidelift.com/funding/github/packagist/brick/math",
+ "type": "tidelift"
}
],
- "time": "2022-08-10T22:54:19+00:00"
+ "time": "2020-08-18T23:41:20+00:00"
},
{
"name": "composer/ca-bundle",
- "version": "1.3.3",
+ "version": "1.3.4",
"source": {
"type": "git",
"url": "https://github.com/composer/ca-bundle.git",
- "reference": "30897edbfb15e784fe55587b4f73ceefd3c4d98c"
+ "reference": "69098eca243998b53eed7a48d82dedd28b447cd5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/ca-bundle/zipball/30897edbfb15e784fe55587b4f73ceefd3c4d98c",
- "reference": "30897edbfb15e784fe55587b4f73ceefd3c4d98c",
+ "url": "https://api.github.com/repos/composer/ca-bundle/zipball/69098eca243998b53eed7a48d82dedd28b447cd5",
+ "reference": "69098eca243998b53eed7a48d82dedd28b447cd5",
"shasum": ""
},
"require": {
@@ -244,7 +244,7 @@
"support": {
"irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/ca-bundle/issues",
- "source": "https://github.com/composer/ca-bundle/tree/1.3.3"
+ "source": "https://github.com/composer/ca-bundle/tree/1.3.4"
},
"funding": [
{
@@ -260,7 +260,7 @@
"type": "tidelift"
}
],
- "time": "2022-07-20T07:14:26+00:00"
+ "time": "2022-10-12T12:08:29+00:00"
},
{
"name": "composer/package-versions-deprecated",
@@ -503,16 +503,16 @@
},
{
"name": "doctrine/collections",
- "version": "1.7.3",
+ "version": "1.8.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/collections.git",
- "reference": "09dde3eb237756190f2de738d3c97cff10a8407b"
+ "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/collections/zipball/09dde3eb237756190f2de738d3c97cff10a8407b",
- "reference": "09dde3eb237756190f2de738d3c97cff10a8407b",
+ "url": "https://api.github.com/repos/doctrine/collections/zipball/2b44dd4cbca8b5744327de78bafef5945c7e7b5e",
+ "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e",
"shasum": ""
},
"require": {
@@ -567,22 +567,22 @@
],
"support": {
"issues": "https://github.com/doctrine/collections/issues",
- "source": "https://github.com/doctrine/collections/tree/1.7.3"
+ "source": "https://github.com/doctrine/collections/tree/1.8.0"
},
- "time": "2022-09-01T19:34:23+00:00"
+ "time": "2022-09-01T20:12:10+00:00"
},
{
"name": "doctrine/common",
- "version": "3.4.0",
+ "version": "3.4.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/common.git",
- "reference": "e09556bbdf95b8420e649162b19ae9da2d1a80f3"
+ "reference": "8b5e5650391f851ed58910b3e3d48a71062eeced"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/common/zipball/e09556bbdf95b8420e649162b19ae9da2d1a80f3",
- "reference": "e09556bbdf95b8420e649162b19ae9da2d1a80f3",
+ "url": "https://api.github.com/repos/doctrine/common/zipball/8b5e5650391f851ed58910b3e3d48a71062eeced",
+ "reference": "8b5e5650391f851ed58910b3e3d48a71062eeced",
"shasum": ""
},
"require": {
@@ -590,13 +590,13 @@
"php": "^7.1 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^9.0",
+ "doctrine/coding-standard": "^9.0 || ^10.0",
"doctrine/collections": "^1",
"phpstan/phpstan": "^1.4.1",
"phpstan/phpstan-phpunit": "^1",
"phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0",
"squizlabs/php_codesniffer": "^3.0",
- "symfony/phpunit-bridge": "^4.0.5",
+ "symfony/phpunit-bridge": "^6.1",
"vimeo/psalm": "^4.4"
},
"type": "library",
@@ -644,7 +644,7 @@
],
"support": {
"issues": "https://github.com/doctrine/common/issues",
- "source": "https://github.com/doctrine/common/tree/3.4.0"
+ "source": "https://github.com/doctrine/common/tree/3.4.3"
},
"funding": [
{
@@ -660,20 +660,20 @@
"type": "tidelift"
}
],
- "time": "2022-08-23T19:46:56+00:00"
+ "time": "2022-10-09T11:47:59+00:00"
},
{
"name": "doctrine/dbal",
- "version": "3.4.4",
+ "version": "3.4.6",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
- "reference": "4cbbe6e4b9ef6c69d5f4c968c637476f47bb54f5"
+ "reference": "3ce132f7c0b83d33b26ab6ed308e9e9260699bc4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/4cbbe6e4b9ef6c69d5f4c968c637476f47bb54f5",
- "reference": "4cbbe6e4b9ef6c69d5f4c968c637476f47bb54f5",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/3ce132f7c0b83d33b26ab6ed308e9e9260699bc4",
+ "reference": "3ce132f7c0b83d33b26ab6ed308e9e9260699bc4",
"shasum": ""
},
"require": {
@@ -688,14 +688,14 @@
"require-dev": {
"doctrine/coding-standard": "10.0.0",
"jetbrains/phpstorm-stubs": "2022.2",
- "phpstan/phpstan": "1.8.3",
- "phpstan/phpstan-strict-rules": "^1.3",
- "phpunit/phpunit": "9.5.24",
+ "phpstan/phpstan": "1.8.10",
+ "phpstan/phpstan-strict-rules": "^1.4",
+ "phpunit/phpunit": "9.5.25",
"psalm/plugin-phpunit": "0.17.0",
"squizlabs/php_codesniffer": "3.7.1",
"symfony/cache": "^5.4|^6.0",
"symfony/console": "^4.4|^5.4|^6.0",
- "vimeo/psalm": "4.27.0"
+ "vimeo/psalm": "4.29.0"
},
"suggest": {
"symfony/console": "For helpful console commands such as SQL execution and import of files."
@@ -755,7 +755,7 @@
],
"support": {
"issues": "https://github.com/doctrine/dbal/issues",
- "source": "https://github.com/doctrine/dbal/tree/3.4.4"
+ "source": "https://github.com/doctrine/dbal/tree/3.4.6"
},
"funding": [
{
@@ -771,7 +771,7 @@
"type": "tidelift"
}
],
- "time": "2022-09-01T21:26:42+00:00"
+ "time": "2022-10-21T14:38:43+00:00"
},
{
"name": "doctrine/deprecations",
@@ -1017,34 +1017,35 @@
},
{
"name": "doctrine/event-manager",
- "version": "1.1.2",
+ "version": "1.2.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/event-manager.git",
- "reference": "eb2ecf80e3093e8f3c2769ac838e27d8ede8e683"
+ "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/event-manager/zipball/eb2ecf80e3093e8f3c2769ac838e27d8ede8e683",
- "reference": "eb2ecf80e3093e8f3c2769ac838e27d8ede8e683",
+ "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520",
+ "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520",
"shasum": ""
},
"require": {
+ "doctrine/deprecations": "^0.5.3 || ^1",
"php": "^7.1 || ^8.0"
},
"conflict": {
"doctrine/common": "<2.9"
},
"require-dev": {
- "doctrine/coding-standard": "^9",
- "phpstan/phpstan": "~1.4.10 || ^1.5.4",
+ "doctrine/coding-standard": "^9 || ^10",
+ "phpstan/phpstan": "~1.4.10 || ^1.8.8",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
- "vimeo/psalm": "^4.22"
+ "vimeo/psalm": "^4.24"
},
"type": "library",
"autoload": {
"psr-4": {
- "Doctrine\\Common\\": "lib/Doctrine/Common"
+ "Doctrine\\Common\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1088,7 +1089,7 @@
],
"support": {
"issues": "https://github.com/doctrine/event-manager/issues",
- "source": "https://github.com/doctrine/event-manager/tree/1.1.2"
+ "source": "https://github.com/doctrine/event-manager/tree/1.2.0"
},
"funding": [
{
@@ -1104,27 +1105,27 @@
"type": "tidelift"
}
],
- "time": "2022-07-27T22:18:11+00:00"
+ "time": "2022-10-12T20:51:15+00:00"
},
{
"name": "doctrine/inflector",
- "version": "2.0.5",
+ "version": "2.0.6",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
- "reference": "ade2b3bbfb776f27f0558e26eed43b5d9fe1b392"
+ "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/inflector/zipball/ade2b3bbfb776f27f0558e26eed43b5d9fe1b392",
- "reference": "ade2b3bbfb776f27f0558e26eed43b5d9fe1b392",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/d9d313a36c872fd6ee06d9a6cbcf713eaa40f024",
+ "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^9",
+ "doctrine/coding-standard": "^10",
"phpstan/phpstan": "^1.8",
"phpstan/phpstan-phpunit": "^1.1",
"phpstan/phpstan-strict-rules": "^1.3",
@@ -1179,7 +1180,7 @@
],
"support": {
"issues": "https://github.com/doctrine/inflector/issues",
- "source": "https://github.com/doctrine/inflector/tree/2.0.5"
+ "source": "https://github.com/doctrine/inflector/tree/2.0.6"
},
"funding": [
{
@@ -1195,7 +1196,7 @@
"type": "tidelift"
}
],
- "time": "2022-09-07T09:01:28+00:00"
+ "time": "2022-10-20T09:10:12+00:00"
},
{
"name": "doctrine/instantiator",
@@ -1454,16 +1455,16 @@
},
{
"name": "doctrine/orm",
- "version": "2.13.1",
+ "version": "2.13.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/orm.git",
- "reference": "35c44a56677adb3ce796138b6e4934ce93ec6811"
+ "reference": "e750360bd52b080c4cbaaee1b48b80f7dc873b36"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/orm/zipball/35c44a56677adb3ce796138b6e4934ce93ec6811",
- "reference": "35c44a56677adb3ce796138b6e4934ce93ec6811",
+ "url": "https://api.github.com/repos/doctrine/orm/zipball/e750360bd52b080c4cbaaee1b48b80f7dc873b36",
+ "reference": "e750360bd52b080c4cbaaee1b48b80f7dc873b36",
"shasum": ""
},
"require": {
@@ -1490,15 +1491,15 @@
},
"require-dev": {
"doctrine/annotations": "^1.13",
- "doctrine/coding-standard": "^9.0",
+ "doctrine/coding-standard": "^9.0.2 || ^10.0",
"phpbench/phpbench": "^0.16.10 || ^1.0",
- "phpstan/phpstan": "~1.4.10 || 1.8.2",
+ "phpstan/phpstan": "~1.4.10 || 1.8.5",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"psr/log": "^1 || ^2 || ^3",
"squizlabs/php_codesniffer": "3.7.1",
"symfony/cache": "^4.4 || ^5.4 || ^6.0",
"symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0",
- "vimeo/psalm": "4.26.0"
+ "vimeo/psalm": "4.27.0"
},
"suggest": {
"ext-dom": "Provides support for XSD validation for XML mapping files",
@@ -1548,26 +1549,26 @@
],
"support": {
"issues": "https://github.com/doctrine/orm/issues",
- "source": "https://github.com/doctrine/orm/tree/2.13.1"
+ "source": "https://github.com/doctrine/orm/tree/2.13.3"
},
- "time": "2022-08-08T09:00:16+00:00"
+ "time": "2022-10-07T06:37:17+00:00"
},
{
"name": "doctrine/persistence",
- "version": "3.0.3",
+ "version": "3.0.4",
"source": {
"type": "git",
"url": "https://github.com/doctrine/persistence.git",
- "reference": "ac6fce61f037d7e54dbb2435f5b5648d86548e23"
+ "reference": "05612da375f8a3931161f435f91d6704926e6ec5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/persistence/zipball/ac6fce61f037d7e54dbb2435f5b5648d86548e23",
- "reference": "ac6fce61f037d7e54dbb2435f5b5648d86548e23",
+ "url": "https://api.github.com/repos/doctrine/persistence/zipball/05612da375f8a3931161f435f91d6704926e6ec5",
+ "reference": "05612da375f8a3931161f435f91d6704926e6ec5",
"shasum": ""
},
"require": {
- "doctrine/event-manager": "^1.0",
+ "doctrine/event-manager": "^1 || ^2",
"php": "^7.2 || ^8.0",
"psr/cache": "^1.0 || ^2.0 || ^3.0"
},
@@ -1578,14 +1579,14 @@
"require-dev": {
"composer/package-versions-deprecated": "^1.11",
"doctrine/annotations": "^1.7",
- "doctrine/coding-standard": "^9.0",
+ "doctrine/coding-standard": "^10",
"doctrine/common": "^3.0",
- "phpstan/phpstan": "1.5.0",
+ "phpstan/phpstan": "1.8.8",
"phpstan/phpstan-phpunit": "^1",
"phpstan/phpstan-strict-rules": "^1.1",
"phpunit/phpunit": "^8.5 || ^9.5",
"symfony/cache": "^4.4 || ^5.4 || ^6.0",
- "vimeo/psalm": "4.22.0"
+ "vimeo/psalm": "4.29.0"
},
"type": "library",
"autoload": {
@@ -1634,7 +1635,7 @@
],
"support": {
"issues": "https://github.com/doctrine/persistence/issues",
- "source": "https://github.com/doctrine/persistence/tree/3.0.3"
+ "source": "https://github.com/doctrine/persistence/tree/3.0.4"
},
"funding": [
{
@@ -1650,7 +1651,7 @@
"type": "tidelift"
}
],
- "time": "2022-08-04T21:14:21+00:00"
+ "time": "2022-10-13T07:34:14+00:00"
},
{
"name": "doctrine/sql-formatter",
@@ -1706,24 +1707,24 @@
},
{
"name": "dompdf/dompdf",
- "version": "v2.0.0",
+ "version": "v2.0.1",
"source": {
"type": "git",
"url": "https://github.com/dompdf/dompdf.git",
- "reference": "79573d8b8a141ec8a17312515de8740eed014fa9"
+ "reference": "c5310df0e22c758c85ea5288175fc6cd777bc085"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/dompdf/dompdf/zipball/79573d8b8a141ec8a17312515de8740eed014fa9",
- "reference": "79573d8b8a141ec8a17312515de8740eed014fa9",
+ "url": "https://api.github.com/repos/dompdf/dompdf/zipball/c5310df0e22c758c85ea5288175fc6cd777bc085",
+ "reference": "c5310df0e22c758c85ea5288175fc6cd777bc085",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-mbstring": "*",
"masterminds/html5": "^2.0",
- "phenx/php-font-lib": "^0.5.4",
- "phenx/php-svg-lib": "^0.3.3 || ^0.4.0",
+ "phenx/php-font-lib": ">=0.5.4 <1.0.0",
+ "phenx/php-svg-lib": ">=0.3.3 <1.0.0",
"php": "^7.1 || ^8.0"
},
"require-dev": {
@@ -1754,25 +1755,17 @@
],
"authors": [
{
- "name": "Fabien Ménager",
- "email": "fabien.menager@gmail.com"
- },
- {
- "name": "Brian Sweeney",
- "email": "eclecticgeek@gmail.com"
- },
- {
- "name": "Gabriel Bull",
- "email": "me@gabrielbull.com"
+ "name": "The Dompdf Community",
+ "homepage": "https://github.com/dompdf/dompdf/blob/master/AUTHORS.md"
}
],
"description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
"homepage": "https://github.com/dompdf/dompdf",
"support": {
"issues": "https://github.com/dompdf/dompdf/issues",
- "source": "https://github.com/dompdf/dompdf/tree/v2.0.0"
+ "source": "https://github.com/dompdf/dompdf/tree/v2.0.1"
},
- "time": "2022-06-21T21:14:57+00:00"
+ "time": "2022-09-22T13:43:41+00:00"
},
{
"name": "egulias/email-validator",
@@ -1892,6 +1885,81 @@
},
"time": "2019-12-30T22:54:17+00:00"
},
+ {
+ "name": "fgrosse/phpasn1",
+ "version": "v2.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/fgrosse/PHPASN1.git",
+ "reference": "eef488991d53e58e60c9554b09b1201ca5ba9296"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/fgrosse/PHPASN1/zipball/eef488991d53e58e60c9554b09b1201ca5ba9296",
+ "reference": "eef488991d53e58e60c9554b09b1201ca5ba9296",
+ "shasum": ""
+ },
+ "require": {
+ "php": "~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0"
+ },
+ "require-dev": {
+ "php-coveralls/php-coveralls": "~2.0",
+ "phpunit/phpunit": "^6.3 || ^7.0 || ^8.0"
+ },
+ "suggest": {
+ "ext-bcmath": "BCmath is the fallback extension for big integer calculations",
+ "ext-curl": "For loading OID information from the web if they have not bee defined statically",
+ "ext-gmp": "GMP is the preferred extension for big integer calculations",
+ "phpseclib/bcmath_compat": "BCmath polyfill for servers where neither GMP nor BCmath is available"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "FG\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Friedrich Große",
+ "email": "friedrich.grosse@gmail.com",
+ "homepage": "https://github.com/FGrosse",
+ "role": "Author"
+ },
+ {
+ "name": "All contributors",
+ "homepage": "https://github.com/FGrosse/PHPASN1/contributors"
+ }
+ ],
+ "description": "A PHP Framework that allows you to encode and decode arbitrary ASN.1 structures using the ITU-T X.690 Encoding Rules.",
+ "homepage": "https://github.com/FGrosse/PHPASN1",
+ "keywords": [
+ "DER",
+ "asn.1",
+ "asn1",
+ "ber",
+ "binary",
+ "decoding",
+ "encoding",
+ "x.509",
+ "x.690",
+ "x509",
+ "x690"
+ ],
+ "support": {
+ "issues": "https://github.com/fgrosse/PHPASN1/issues",
+ "source": "https://github.com/fgrosse/PHPASN1/tree/v2.4.0"
+ },
+ "time": "2021-12-11T12:41:06+00:00"
+ },
{
"name": "florianv/exchanger",
"version": "2.7.2",
@@ -2093,16 +2161,16 @@
},
{
"name": "friendsofphp/proxy-manager-lts",
- "version": "v1.0.12",
+ "version": "v1.0.13",
"source": {
"type": "git",
"url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git",
- "reference": "8419f0158715b30d4b99a5bd37c6a39671994ad7"
+ "reference": "88354616f4cf4f6620910fd035e282173ba453e8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/8419f0158715b30d4b99a5bd37c6a39671994ad7",
- "reference": "8419f0158715b30d4b99a5bd37c6a39671994ad7",
+ "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/88354616f4cf4f6620910fd035e282173ba453e8",
+ "reference": "88354616f4cf4f6620910fd035e282173ba453e8",
"shasum": ""
},
"require": {
@@ -2159,7 +2227,7 @@
],
"support": {
"issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues",
- "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.12"
+ "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.13"
},
"funding": [
{
@@ -2171,7 +2239,7 @@
"type": "tidelift"
}
],
- "time": "2022-05-05T09:31:05+00:00"
+ "time": "2022-10-17T19:48:16+00:00"
},
{
"name": "gregwar/captcha",
@@ -2358,6 +2426,63 @@
},
"time": "2022-04-01T11:58:30+00:00"
},
+ {
+ "name": "jbtronics/2fa-webauthn",
+ "version": "v1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/jbtronics/2fa-webauthn.git",
+ "reference": "c4108d16ba7a3061d977fc92f577c69067e1d003"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/jbtronics/2fa-webauthn/zipball/c4108d16ba7a3061d977fc92f577c69067e1d003",
+ "reference": "c4108d16ba7a3061d977fc92f577c69067e1d003",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "nyholm/psr7": "^1.5",
+ "php": "^7.4.0|^8.0",
+ "scheb/2fa-bundle": "^5.0.0|^6.0.0",
+ "symfony/framework-bundle": "^5.0|^6.0",
+ "symfony/psr-http-message-bridge": "^2.1",
+ "web-auth/webauthn-lib": "^3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.5"
+ },
+ "type": "symfony-bundle",
+ "autoload": {
+ "psr-4": {
+ "Jbtronics\\TFAWebauthn\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jan Böhmer",
+ "email": "mail@jan-boehmer.de"
+ }
+ ],
+ "description": "Webauthn Two-Factor-Authentictication Plugin for scheb/2fa",
+ "keywords": [
+ "2fa",
+ "scheb-2fa",
+ "symfony",
+ "symfony-bundle",
+ "two-factor-authentication",
+ "webauthn"
+ ],
+ "support": {
+ "issues": "https://github.com/jbtronics/2fa-webauthn/issues",
+ "source": "https://github.com/jbtronics/2fa-webauthn/tree/v1.0.0"
+ },
+ "time": "2022-10-03T22:29:32+00:00"
+ },
{
"name": "laminas/laminas-code",
"version": "4.7.0",
@@ -2649,17 +2774,187 @@
"time": "2022-03-02T17:24:08+00:00"
},
{
- "name": "liip/imagine-bundle",
- "version": "2.8.0",
+ "name": "league/uri",
+ "version": "6.7.2",
"source": {
"type": "git",
- "url": "https://github.com/liip/LiipImagineBundle.git",
- "reference": "6063279c79f0c119475bad8a0066bf2513a6cfca"
+ "url": "https://github.com/thephpleague/uri.git",
+ "reference": "d3b50812dd51f3fbf176344cc2981db03d10fe06"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/liip/LiipImagineBundle/zipball/6063279c79f0c119475bad8a0066bf2513a6cfca",
- "reference": "6063279c79f0c119475bad8a0066bf2513a6cfca",
+ "url": "https://api.github.com/repos/thephpleague/uri/zipball/d3b50812dd51f3fbf176344cc2981db03d10fe06",
+ "reference": "d3b50812dd51f3fbf176344cc2981db03d10fe06",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "league/uri-interfaces": "^2.3",
+ "php": "^7.4 || ^8.0",
+ "psr/http-message": "^1.0"
+ },
+ "conflict": {
+ "league/uri-schemes": "^1.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^v3.3.2",
+ "nyholm/psr7": "^1.5",
+ "php-http/psr7-integration-tests": "^1.1",
+ "phpstan/phpstan": "^1.2.0",
+ "phpstan/phpstan-deprecation-rules": "^1.0",
+ "phpstan/phpstan-phpunit": "^1.0.0",
+ "phpstan/phpstan-strict-rules": "^1.1.0",
+ "phpunit/phpunit": "^9.5.10",
+ "psr/http-factory": "^1.0"
+ },
+ "suggest": {
+ "ext-fileinfo": "Needed to create Data URI from a filepath",
+ "ext-intl": "Needed to improve host validation",
+ "league/uri-components": "Needed to easily manipulate URI objects",
+ "psr/http-factory": "Needed to use the URI factory"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "6.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "League\\Uri\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ignace Nyamagana Butera",
+ "email": "nyamsprod@gmail.com",
+ "homepage": "https://nyamsprod.com"
+ }
+ ],
+ "description": "URI manipulation library",
+ "homepage": "https://uri.thephpleague.com",
+ "keywords": [
+ "data-uri",
+ "file-uri",
+ "ftp",
+ "hostname",
+ "http",
+ "https",
+ "middleware",
+ "parse_str",
+ "parse_url",
+ "psr-7",
+ "query-string",
+ "querystring",
+ "rfc3986",
+ "rfc3987",
+ "rfc6570",
+ "uri",
+ "uri-template",
+ "url",
+ "ws"
+ ],
+ "support": {
+ "docs": "https://uri.thephpleague.com",
+ "forum": "https://thephpleague.slack.com",
+ "issues": "https://github.com/thephpleague/uri/issues",
+ "source": "https://github.com/thephpleague/uri/tree/6.7.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/nyamsprod",
+ "type": "github"
+ }
+ ],
+ "time": "2022-09-13T19:50:42+00:00"
+ },
+ {
+ "name": "league/uri-interfaces",
+ "version": "2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/uri-interfaces.git",
+ "reference": "00e7e2943f76d8cb50c7dfdc2f6dee356e15e383"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/00e7e2943f76d8cb50c7dfdc2f6dee356e15e383",
+ "reference": "00e7e2943f76d8cb50c7dfdc2f6dee356e15e383",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^2.19",
+ "phpstan/phpstan": "^0.12.90",
+ "phpstan/phpstan-phpunit": "^0.12.19",
+ "phpstan/phpstan-strict-rules": "^0.12.9",
+ "phpunit/phpunit": "^8.5.15 || ^9.5"
+ },
+ "suggest": {
+ "ext-intl": "to use the IDNA feature",
+ "symfony/intl": "to use the IDNA feature via Symfony Polyfill"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "League\\Uri\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ignace Nyamagana Butera",
+ "email": "nyamsprod@gmail.com",
+ "homepage": "https://nyamsprod.com"
+ }
+ ],
+ "description": "Common interface for URI representation",
+ "homepage": "http://github.com/thephpleague/uri-interfaces",
+ "keywords": [
+ "rfc3986",
+ "rfc3987",
+ "uri",
+ "url"
+ ],
+ "support": {
+ "issues": "https://github.com/thephpleague/uri-interfaces/issues",
+ "source": "https://github.com/thephpleague/uri-interfaces/tree/2.3.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/nyamsprod",
+ "type": "github"
+ }
+ ],
+ "time": "2021-06-28T04:27:21+00:00"
+ },
+ {
+ "name": "liip/imagine-bundle",
+ "version": "2.9.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/liip/LiipImagineBundle.git",
+ "reference": "ba164fef7be638f28d298f9c89b5a8364c3e0a4d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/liip/LiipImagineBundle/zipball/ba164fef7be638f28d298f9c89b5a8364c3e0a4d",
+ "reference": "ba164fef7be638f28d298f9c89b5a8364c3e0a4d",
"shasum": ""
},
"require": {
@@ -2746,22 +3041,22 @@
],
"support": {
"issues": "https://github.com/liip/LiipImagineBundle/issues",
- "source": "https://github.com/liip/LiipImagineBundle/tree/2.8.0"
+ "source": "https://github.com/liip/LiipImagineBundle/tree/2.9.0"
},
- "time": "2022-05-30T13:06:31+00:00"
+ "time": "2022-10-06T06:33:35+00:00"
},
{
"name": "lorenzo/pinky",
- "version": "1.0.6",
+ "version": "1.0.7",
"source": {
"type": "git",
"url": "https://github.com/lorenzo/pinky.git",
- "reference": "61de35ec6a17badea8b0922e65a979472c886d01"
+ "reference": "60afc9f8c2b8fb6a2f77050b485ce93143dd8dcf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/lorenzo/pinky/zipball/61de35ec6a17badea8b0922e65a979472c886d01",
- "reference": "61de35ec6a17badea8b0922e65a979472c886d01",
+ "url": "https://api.github.com/repos/lorenzo/pinky/zipball/60afc9f8c2b8fb6a2f77050b485ce93143dd8dcf",
+ "reference": "60afc9f8c2b8fb6a2f77050b485ce93143dd8dcf",
"shasum": ""
},
"require": {
@@ -2799,9 +3094,9 @@
],
"support": {
"issues": "https://github.com/lorenzo/pinky/issues",
- "source": "https://github.com/lorenzo/pinky/tree/1.0.6"
+ "source": "https://github.com/lorenzo/pinky/tree/1.0.7"
},
- "time": "2022-03-17T12:11:56+00:00"
+ "time": "2022-10-02T12:15:42+00:00"
},
{
"name": "masterminds/html5",
@@ -3464,56 +3759,6 @@
},
"time": "2022-06-14T06:56:20+00:00"
},
- {
- "name": "paragonie/random_compat",
- "version": "v9.99.100",
- "source": {
- "type": "git",
- "url": "https://github.com/paragonie/random_compat.git",
- "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
- "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
- "shasum": ""
- },
- "require": {
- "php": ">= 7"
- },
- "require-dev": {
- "phpunit/phpunit": "4.*|5.*",
- "vimeo/psalm": "^1"
- },
- "suggest": {
- "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
- },
- "type": "library",
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Paragon Initiative Enterprises",
- "email": "security@paragonie.com",
- "homepage": "https://paragonie.com"
- }
- ],
- "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
- "keywords": [
- "csprng",
- "polyfill",
- "pseudorandom",
- "random"
- ],
- "support": {
- "email": "info@paragonie.com",
- "issues": "https://github.com/paragonie/random_compat/issues",
- "source": "https://github.com/paragonie/random_compat"
- },
- "time": "2020-10-15T08:29:30+00:00"
- },
{
"name": "phenx/php-font-lib",
"version": "0.5.4",
@@ -3560,21 +3805,21 @@
},
{
"name": "phenx/php-svg-lib",
- "version": "0.4.1",
+ "version": "0.5.0",
"source": {
"type": "git",
"url": "https://github.com/dompdf/php-svg-lib.git",
- "reference": "4498b5df7b08e8469f0f8279651ea5de9626ed02"
+ "reference": "76876c6cf3080bcb6f249d7d59705108166a6685"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/4498b5df7b08e8469f0f8279651ea5de9626ed02",
- "reference": "4498b5df7b08e8469f0f8279651ea5de9626ed02",
+ "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/76876c6cf3080bcb6f249d7d59705108166a6685",
+ "reference": "76876c6cf3080bcb6f249d7d59705108166a6685",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
- "php": "^7.1 || ^7.2 || ^7.3 || ^7.4 || ^8.0",
+ "php": "^7.1 || ^8.0",
"sabberworm/php-css-parser": "^8.4"
},
"require-dev": {
@@ -3600,9 +3845,9 @@
"homepage": "https://github.com/PhenX/php-svg-lib",
"support": {
"issues": "https://github.com/dompdf/php-svg-lib/issues",
- "source": "https://github.com/dompdf/php-svg-lib/tree/0.4.1"
+ "source": "https://github.com/dompdf/php-svg-lib/tree/0.5.0"
},
- "time": "2022-03-07T12:52:04+00:00"
+ "time": "2022-09-06T12:16:56+00:00"
},
{
"name": "php-http/discovery",
@@ -4185,25 +4430,30 @@
},
{
"name": "phpdocumentor/type-resolver",
- "version": "1.6.1",
+ "version": "1.6.2",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "77a32518733312af16a44300404e945338981de3"
+ "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3",
- "reference": "77a32518733312af16a44300404e945338981de3",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d",
+ "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0",
+ "php": "^7.4 || ^8.0",
"phpdocumentor/reflection-common": "^2.0"
},
"require-dev": {
"ext-tokenizer": "*",
- "psalm/phar": "^4.8"
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpunit/phpunit": "^9.5",
+ "rector/rector": "^0.13.9",
+ "vimeo/psalm": "^4.25"
},
"type": "library",
"extra": {
@@ -4229,9 +4479,9 @@
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"support": {
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
- "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1"
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.2"
},
- "time": "2022-03-15T21:29:03+00:00"
+ "time": "2022-10-14T12:47:21+00:00"
},
{
"name": "psr/cache",
@@ -4694,70 +4944,181 @@
"time": "2017-10-23T01:57:42+00:00"
},
{
- "name": "r/u2f-two-factor-bundle",
- "version": "dev-scheb/2fa-support",
+ "name": "ramsey/collection",
+ "version": "1.2.2",
"source": {
"type": "git",
- "url": "https://github.com/jbtronics/u2f-two-factor-bundle.git",
- "reference": "3ba2d95de56a8ded97c841bbfac159f4350dbfdf"
+ "url": "https://github.com/ramsey/collection.git",
+ "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/jbtronics/u2f-two-factor-bundle/zipball/3ba2d95de56a8ded97c841bbfac159f4350dbfdf",
- "reference": "3ba2d95de56a8ded97c841bbfac159f4350dbfdf",
+ "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a",
+ "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a",
"shasum": ""
},
"require": {
- "doctrine/collections": "^1.6",
- "doctrine/common": "*",
- "ext-json": "*",
- "php": "^7.1.3|^8.0",
- "scheb/2fa-bundle": "^5.0.0|^6.0.0",
- "symfony/event-dispatcher-contracts": "^2.0",
- "symfony/framework-bundle": "^5.0|^6.0",
- "symfony/templating": "^5.0|^6.0",
- "yubico/u2flib-server": "^1.0.0"
- },
- "conflict": {
- "godzillante/u2f-two-factor-bundle": "*",
- "tubssz/u2f-two-factor-bundle": "*"
+ "php": "^7.3 || ^8",
+ "symfony/polyfill-php81": "^1.23"
},
"require-dev": {
- "phpstan/phpstan": "^1.8.2"
+ "captainhook/captainhook": "^5.3",
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
+ "ergebnis/composer-normalize": "^2.6",
+ "fakerphp/faker": "^1.5",
+ "hamcrest/hamcrest-php": "^2",
+ "jangregor/phpstan-prophecy": "^0.8",
+ "mockery/mockery": "^1.3",
+ "phpspec/prophecy-phpunit": "^2.0",
+ "phpstan/extension-installer": "^1",
+ "phpstan/phpstan": "^0.12.32",
+ "phpstan/phpstan-mockery": "^0.12.5",
+ "phpstan/phpstan-phpunit": "^0.12.11",
+ "phpunit/phpunit": "^8.5 || ^9",
+ "psy/psysh": "^0.10.4",
+ "slevomat/coding-standard": "^6.3",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^4.4"
},
- "type": "symfony-bundle",
+ "type": "library",
"autoload": {
"psr-4": {
- "R\\U2FTwoFactorBundle\\": ""
+ "Ramsey\\Collection\\": "src/"
}
},
+ "notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
- "name": "Nils Uliczka",
- "email": "nils.uliczka@darookee.net"
- },
- {
- "name": "Francesco De Francesco",
- "email": "francesco.defrancesco@gmail.com"
+ "name": "Ben Ramsey",
+ "email": "ben@benramsey.com",
+ "homepage": "https://benramsey.com"
}
],
- "description": "Use U2F-Keys as 2FA for Symfony2, using scheb/two-factor-bundle",
- "homepage": "https://github.com/darookee/u2f-two-factor-bundle",
+ "description": "A PHP library for representing and manipulating collections.",
"keywords": [
- "authentication",
- "fido",
- "symfony2",
- "two-factor",
- "two-step",
- "yubikey"
+ "array",
+ "collection",
+ "hash",
+ "map",
+ "queue",
+ "set"
],
"support": {
- "source": "https://github.com/jbtronics/u2f-two-factor-bundle/tree/scheb/2fa-support"
+ "issues": "https://github.com/ramsey/collection/issues",
+ "source": "https://github.com/ramsey/collection/tree/1.2.2"
},
- "time": "2022-08-13T22:31:11+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/ramsey",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/ramsey/collection",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-10T03:01:02+00:00"
+ },
+ {
+ "name": "ramsey/uuid",
+ "version": "4.2.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ramsey/uuid.git",
+ "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df",
+ "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df",
+ "shasum": ""
+ },
+ "require": {
+ "brick/math": "^0.8 || ^0.9",
+ "ext-json": "*",
+ "php": "^7.2 || ^8.0",
+ "ramsey/collection": "^1.0",
+ "symfony/polyfill-ctype": "^1.8",
+ "symfony/polyfill-php80": "^1.14"
+ },
+ "replace": {
+ "rhumsaa/uuid": "self.version"
+ },
+ "require-dev": {
+ "captainhook/captainhook": "^5.10",
+ "captainhook/plugin-composer": "^5.3",
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
+ "doctrine/annotations": "^1.8",
+ "ergebnis/composer-normalize": "^2.15",
+ "mockery/mockery": "^1.3",
+ "moontoast/math": "^1.1",
+ "paragonie/random-lib": "^2",
+ "php-mock/php-mock": "^2.2",
+ "php-mock/php-mock-mockery": "^1.3",
+ "php-parallel-lint/php-parallel-lint": "^1.1",
+ "phpbench/phpbench": "^1.0",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-mockery": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpunit/phpunit": "^8.5 || ^9",
+ "slevomat/coding-standard": "^7.0",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^4.9"
+ },
+ "suggest": {
+ "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.",
+ "ext-ctype": "Enables faster processing of character classification using ctype functions.",
+ "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.",
+ "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.",
+ "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
+ "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "4.x-dev"
+ },
+ "captainhook": {
+ "force-install": true
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "Ramsey\\Uuid\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).",
+ "keywords": [
+ "guid",
+ "identifier",
+ "uuid"
+ ],
+ "support": {
+ "issues": "https://github.com/ramsey/uuid/issues",
+ "source": "https://github.com/ramsey/uuid/tree/4.2.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/ramsey",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-09-25T23:10:38+00:00"
},
{
"name": "s9e/regexp-builder",
@@ -4847,23 +5208,23 @@
},
{
"name": "s9e/text-formatter",
- "version": "2.11.4",
+ "version": "2.12.1",
"source": {
"type": "git",
"url": "https://github.com/s9e/TextFormatter.git",
- "reference": "a7f31582f97abe17ae6b7c95a198dc0d48e7d1a1"
+ "reference": "7f07e259b626d8c8910eb15ff4ed6d78af951de1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/s9e/TextFormatter/zipball/a7f31582f97abe17ae6b7c95a198dc0d48e7d1a1",
- "reference": "a7f31582f97abe17ae6b7c95a198dc0d48e7d1a1",
+ "url": "https://api.github.com/repos/s9e/TextFormatter/zipball/7f07e259b626d8c8910eb15ff4ed6d78af951de1",
+ "reference": "7f07e259b626d8c8910eb15ff4ed6d78af951de1",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-filter": "*",
"lib-pcre": ">=8.13",
- "php": ">=7.1",
+ "php": ">=7.4",
"s9e/regexp-builder": "^1.4",
"s9e/sweetdom": "^2.0"
},
@@ -4883,7 +5244,7 @@
},
"type": "library",
"extra": {
- "version": "2.11.4"
+ "version": "2.12.1"
},
"autoload": {
"psr-4": {
@@ -4915,9 +5276,9 @@
],
"support": {
"issues": "https://github.com/s9e/TextFormatter/issues",
- "source": "https://github.com/s9e/TextFormatter/tree/2.11.4"
+ "source": "https://github.com/s9e/TextFormatter/tree/2.12.1"
},
- "time": "2022-08-17T21:44:18+00:00"
+ "time": "2022-10-23T19:22:51+00:00"
},
{
"name": "sabberworm/php-css-parser",
@@ -5325,6 +5686,219 @@
},
"time": "2022-02-17T07:56:41+00:00"
},
+ {
+ "name": "spomky-labs/base64url",
+ "version": "v2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Spomky-Labs/base64url.git",
+ "reference": "7752ce931ec285da4ed1f4c5aa27e45e097be61d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Spomky-Labs/base64url/zipball/7752ce931ec285da4ed1f4c5aa27e45e097be61d",
+ "reference": "7752ce931ec285da4ed1f4c5aa27e45e097be61d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^0.11|^0.12",
+ "phpstan/phpstan-beberlei-assert": "^0.11|^0.12",
+ "phpstan/phpstan-deprecation-rules": "^0.11|^0.12",
+ "phpstan/phpstan-phpunit": "^0.11|^0.12",
+ "phpstan/phpstan-strict-rules": "^0.11|^0.12"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Base64Url\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florent Morselli",
+ "homepage": "https://github.com/Spomky-Labs/base64url/contributors"
+ }
+ ],
+ "description": "Base 64 URL Safe Encoding/Decoding PHP Library",
+ "homepage": "https://github.com/Spomky-Labs/base64url",
+ "keywords": [
+ "base64",
+ "rfc4648",
+ "safe",
+ "url"
+ ],
+ "support": {
+ "issues": "https://github.com/Spomky-Labs/base64url/issues",
+ "source": "https://github.com/Spomky-Labs/base64url/tree/v2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Spomky",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/FlorentMorselli",
+ "type": "patreon"
+ }
+ ],
+ "time": "2020-11-03T09:10:25+00:00"
+ },
+ {
+ "name": "spomky-labs/cbor-bundle",
+ "version": "v2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Spomky-Labs/cbor-bundle.git",
+ "reference": "65a5a65e7fc20eca383a0be8f3ed287a4fe80b1f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Spomky-Labs/cbor-bundle/zipball/65a5a65e7fc20eca383a0be8f3ed287a4fe80b1f",
+ "reference": "65a5a65e7fc20eca383a0be8f3ed287a4fe80b1f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1",
+ "spomky-labs/cbor-php": "^1.0|^2.0",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/http-kernel": "^4.4|^5.0"
+ },
+ "require-dev": {
+ "php-coveralls/php-coveralls": "^2.0",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-beberlei-assert": "^0.12",
+ "phpstan/phpstan-deprecation-rules": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpstan/phpstan-strict-rules": "^0.12",
+ "phpunit/phpunit": "^9.0",
+ "symfony/framework-bundle": "^4.4|^5.0",
+ "symfony/phpunit-bridge": "^4.4|^5.0",
+ "thecodingmachine/phpstan-safe-rule": "^1.0@beta"
+ },
+ "type": "symfony-bundle",
+ "autoload": {
+ "psr-4": {
+ "SpomkyLabs\\CborBundle\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florent Morselli",
+ "homepage": "https://github.com/Spomky"
+ },
+ {
+ "name": "All contributors",
+ "homepage": "https://github.com/spomky-labs/cbor-bundle/contributors"
+ }
+ ],
+ "description": "CBOR Encoder/Decoder Bundle for Symfony.",
+ "homepage": "https://github.com/spomky-labs",
+ "keywords": [
+ "Concise Binary Object Representation",
+ "RFC7049",
+ "bundle",
+ "cbor",
+ "symfony"
+ ],
+ "support": {
+ "issues": "https://github.com/Spomky-Labs/cbor-bundle/issues",
+ "source": "https://github.com/Spomky-Labs/cbor-bundle/tree/v2.0.3"
+ },
+ "time": "2020-07-12T22:47:45+00:00"
+ },
+ {
+ "name": "spomky-labs/cbor-php",
+ "version": "v2.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Spomky-Labs/cbor-php.git",
+ "reference": "28e2712cfc0b48fae661a48ffc6896d7abe83684"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Spomky-Labs/cbor-php/zipball/28e2712cfc0b48fae661a48ffc6896d7abe83684",
+ "reference": "28e2712cfc0b48fae661a48ffc6896d7abe83684",
+ "shasum": ""
+ },
+ "require": {
+ "brick/math": "^0.8.15|^0.9.0",
+ "ext-mbstring": "*",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "ekino/phpstan-banned-code": "^1.0",
+ "ext-json": "*",
+ "infection/infection": "^0.18|^0.25",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.0",
+ "phpstan/phpstan-beberlei-assert": "^1.0",
+ "phpstan/phpstan-deprecation-rules": "^1.0",
+ "phpstan/phpstan-phpunit": "^1.0",
+ "phpstan/phpstan-strict-rules": "^1.0",
+ "phpunit/phpunit": "^9.5",
+ "rector/rector": "^0.12",
+ "roave/security-advisories": "dev-latest",
+ "symplify/easy-coding-standard": "^10.0"
+ },
+ "suggest": {
+ "ext-bcmath": "GMP or BCMath extensions will drastically improve the library performance. BCMath extension needed to handle the Big Float and Decimal Fraction Tags",
+ "ext-gmp": "GMP or BCMath extensions will drastically improve the library performance"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "CBOR\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florent Morselli",
+ "homepage": "https://github.com/Spomky"
+ },
+ {
+ "name": "All contributors",
+ "homepage": "https://github.com/Spomky-Labs/cbor-php/contributors"
+ }
+ ],
+ "description": "CBOR Encoder/Decoder for PHP",
+ "keywords": [
+ "Concise Binary Object Representation",
+ "RFC7049",
+ "cbor"
+ ],
+ "support": {
+ "issues": "https://github.com/Spomky-Labs/cbor-php/issues",
+ "source": "https://github.com/Spomky-Labs/cbor-php/tree/v2.1.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Spomky",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/FlorentMorselli",
+ "type": "patreon"
+ }
+ ],
+ "time": "2021-12-13T12:46:26+00:00"
+ },
{
"name": "spomky-labs/otphp",
"version": "v10.0.3",
@@ -5428,16 +6002,16 @@
},
{
"name": "symfony/asset",
- "version": "v5.4.7",
+ "version": "v5.4.13",
"source": {
"type": "git",
"url": "https://github.com/symfony/asset.git",
- "reference": "4affdca3da5f380caa27a338269b36ac288b3981"
+ "reference": "9aa867206711cb6fcca51ef127ba52a018170be9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/asset/zipball/4affdca3da5f380caa27a338269b36ac288b3981",
- "reference": "4affdca3da5f380caa27a338269b36ac288b3981",
+ "url": "https://api.github.com/repos/symfony/asset/zipball/9aa867206711cb6fcca51ef127ba52a018170be9",
+ "reference": "9aa867206711cb6fcca51ef127ba52a018170be9",
"shasum": ""
},
"require": {
@@ -5482,7 +6056,7 @@
"description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/asset/tree/v5.4.7"
+ "source": "https://github.com/symfony/asset/tree/v5.4.13"
},
"funding": [
{
@@ -5498,20 +6072,20 @@
"type": "tidelift"
}
],
- "time": "2022-03-18T16:00:30+00:00"
+ "time": "2022-08-31T08:17:19+00:00"
},
{
"name": "symfony/cache",
- "version": "v5.4.11",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache.git",
- "reference": "5a0fff46df349f0db3fe242263451fddf5277362"
+ "reference": "60e87188abbacd29ccde44d69c5392a33e888e98"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache/zipball/5a0fff46df349f0db3fe242263451fddf5277362",
- "reference": "5a0fff46df349f0db3fe242263451fddf5277362",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/60e87188abbacd29ccde44d69c5392a33e888e98",
+ "reference": "60e87188abbacd29ccde44d69c5392a33e888e98",
"shasum": ""
},
"require": {
@@ -5572,14 +6146,14 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Provides an extended PSR-6, PSR-16 (and tags) implementation",
+ "description": "Provides extended PSR-6, PSR-16 (and tags) implementations",
"homepage": "https://symfony.com",
"keywords": [
"caching",
"psr6"
],
"support": {
- "source": "https://github.com/symfony/cache/tree/v5.4.11"
+ "source": "https://github.com/symfony/cache/tree/v5.4.15"
},
"funding": [
{
@@ -5595,7 +6169,7 @@
"type": "tidelift"
}
],
- "time": "2022-07-28T15:25:17+00:00"
+ "time": "2022-10-27T07:55:40+00:00"
},
{
"name": "symfony/cache-contracts",
@@ -5757,16 +6331,16 @@
},
{
"name": "symfony/console",
- "version": "v5.4.12",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "c072aa8f724c3af64e2c7a96b796a4863d24dba1"
+ "reference": "ea59bb0edfaf9f28d18d8791410ee0355f317669"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/c072aa8f724c3af64e2c7a96b796a4863d24dba1",
- "reference": "c072aa8f724c3af64e2c7a96b796a4863d24dba1",
+ "url": "https://api.github.com/repos/symfony/console/zipball/ea59bb0edfaf9f28d18d8791410ee0355f317669",
+ "reference": "ea59bb0edfaf9f28d18d8791410ee0355f317669",
"shasum": ""
},
"require": {
@@ -5836,7 +6410,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v5.4.12"
+ "source": "https://github.com/symfony/console/tree/v5.4.15"
},
"funding": [
{
@@ -5852,7 +6426,7 @@
"type": "tidelift"
}
],
- "time": "2022-08-17T13:18:05+00:00"
+ "time": "2022-10-26T21:41:52+00:00"
},
{
"name": "symfony/css-selector",
@@ -5922,16 +6496,16 @@
},
{
"name": "symfony/dependency-injection",
- "version": "v5.4.11",
+ "version": "v5.4.13",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "a8b9251016e9476db73e25fa836904bc0bf74c62"
+ "reference": "24cf522668845391c0542bc1de496366072a6d0e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/a8b9251016e9476db73e25fa836904bc0bf74c62",
- "reference": "a8b9251016e9476db73e25fa836904bc0bf74c62",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/24cf522668845391c0542bc1de496366072a6d0e",
+ "reference": "24cf522668845391c0542bc1de496366072a6d0e",
"shasum": ""
},
"require": {
@@ -5991,7 +6565,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dependency-injection/tree/v5.4.11"
+ "source": "https://github.com/symfony/dependency-injection/tree/v5.4.13"
},
"funding": [
{
@@ -6007,7 +6581,7 @@
"type": "tidelift"
}
],
- "time": "2022-07-20T13:00:38+00:00"
+ "time": "2022-08-30T19:10:13+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -6078,16 +6652,16 @@
},
{
"name": "symfony/doctrine-bridge",
- "version": "v5.4.11",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/doctrine-bridge.git",
- "reference": "e0250f61a450518dd5b0b7847ec63d26665241dd"
+ "reference": "d25538867d961bb0ce8a71a1b6ff92758cf01d25"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/e0250f61a450518dd5b0b7847ec63d26665241dd",
- "reference": "e0250f61a450518dd5b0b7847ec63d26665241dd",
+ "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/d25538867d961bb0ce8a71a1b6ff92758cf01d25",
+ "reference": "d25538867d961bb0ce8a71a1b6ff92758cf01d25",
"shasum": ""
},
"require": {
@@ -6175,7 +6749,7 @@
"description": "Provides integration for Doctrine with various Symfony components",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.11"
+ "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.15"
},
"funding": [
{
@@ -6191,7 +6765,7 @@
"type": "tidelift"
}
],
- "time": "2022-07-28T14:12:24+00:00"
+ "time": "2022-10-14T11:25:13+00:00"
},
{
"name": "symfony/dotenv",
@@ -6266,16 +6840,16 @@
},
{
"name": "symfony/error-handler",
- "version": "v5.4.11",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "f75d17cb4769eb38cd5fccbda95cd80a054d35c8"
+ "reference": "539cf1428b8442303c6e876ad7bf5a7babd91091"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/f75d17cb4769eb38cd5fccbda95cd80a054d35c8",
- "reference": "f75d17cb4769eb38cd5fccbda95cd80a054d35c8",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/539cf1428b8442303c6e876ad7bf5a7babd91091",
+ "reference": "539cf1428b8442303c6e876ad7bf5a7babd91091",
"shasum": ""
},
"require": {
@@ -6317,7 +6891,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/error-handler/tree/v5.4.11"
+ "source": "https://github.com/symfony/error-handler/tree/v5.4.15"
},
"funding": [
{
@@ -6333,7 +6907,7 @@
"type": "tidelift"
}
],
- "time": "2022-07-29T07:37:50+00:00"
+ "time": "2022-10-27T06:32:25+00:00"
},
{
"name": "symfony/event-dispatcher",
@@ -6501,16 +7075,16 @@
},
{
"name": "symfony/expression-language",
- "version": "v5.4.11",
+ "version": "v5.4.14",
"source": {
"type": "git",
"url": "https://github.com/symfony/expression-language.git",
- "reference": "eb59000eb72c9681502cb501af3c666be42d215e"
+ "reference": "2f27d5b1e7926bba18e87719af75f696977cd58b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/expression-language/zipball/eb59000eb72c9681502cb501af3c666be42d215e",
- "reference": "eb59000eb72c9681502cb501af3c666be42d215e",
+ "url": "https://api.github.com/repos/symfony/expression-language/zipball/2f27d5b1e7926bba18e87719af75f696977cd58b",
+ "reference": "2f27d5b1e7926bba18e87719af75f696977cd58b",
"shasum": ""
},
"require": {
@@ -6544,7 +7118,7 @@
"description": "Provides an engine that can compile and evaluate expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/expression-language/tree/v5.4.11"
+ "source": "https://github.com/symfony/expression-language/tree/v5.4.14"
},
"funding": [
{
@@ -6560,20 +7134,20 @@
"type": "tidelift"
}
],
- "time": "2022-07-20T11:34:24+00:00"
+ "time": "2022-10-07T08:01:20+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v5.4.12",
+ "version": "v5.4.13",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "2d67c1f9a1937406a9be3171b4b22250c0a11447"
+ "reference": "ac09569844a9109a5966b9438fc29113ce77cf51"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/2d67c1f9a1937406a9be3171b4b22250c0a11447",
- "reference": "2d67c1f9a1937406a9be3171b4b22250c0a11447",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/ac09569844a9109a5966b9438fc29113ce77cf51",
+ "reference": "ac09569844a9109a5966b9438fc29113ce77cf51",
"shasum": ""
},
"require": {
@@ -6608,7 +7182,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v5.4.12"
+ "source": "https://github.com/symfony/filesystem/tree/v5.4.13"
},
"funding": [
{
@@ -6624,7 +7198,7 @@
"type": "tidelift"
}
],
- "time": "2022-08-02T13:48:16+00:00"
+ "time": "2022-09-21T19:53:16+00:00"
},
{
"name": "symfony/finder",
@@ -6756,16 +7330,16 @@
},
{
"name": "symfony/form",
- "version": "v5.4.12",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/form.git",
- "reference": "d8c5cc929f8dc7a58b710c9474dd7a0173006017"
+ "reference": "e6a97a09c7672b3b3d26335ca66f366734f6df56"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/form/zipball/d8c5cc929f8dc7a58b710c9474dd7a0173006017",
- "reference": "d8c5cc929f8dc7a58b710c9474dd7a0173006017",
+ "url": "https://api.github.com/repos/symfony/form/zipball/e6a97a09c7672b3b3d26335ca66f366734f6df56",
+ "reference": "e6a97a09c7672b3b3d26335ca66f366734f6df56",
"shasum": ""
},
"require": {
@@ -6839,7 +7413,7 @@
"description": "Allows to easily create, process and reuse HTML forms",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/form/tree/v5.4.12"
+ "source": "https://github.com/symfony/form/tree/v5.4.15"
},
"funding": [
{
@@ -6855,20 +7429,20 @@
"type": "tidelift"
}
],
- "time": "2022-08-05T13:13:10+00:00"
+ "time": "2022-10-23T10:30:41+00:00"
},
{
"name": "symfony/framework-bundle",
- "version": "v5.4.12",
+ "version": "v5.4.14",
"source": {
"type": "git",
"url": "https://github.com/symfony/framework-bundle.git",
- "reference": "49f8fe5d39b7513a3f26898788885dbe66b0d910"
+ "reference": "00ac4d7e31597f6a49759bd925d83fc87d4ade68"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/49f8fe5d39b7513a3f26898788885dbe66b0d910",
- "reference": "49f8fe5d39b7513a3f26898788885dbe66b0d910",
+ "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/00ac4d7e31597f6a49759bd925d83fc87d4ade68",
+ "reference": "00ac4d7e31597f6a49759bd925d83fc87d4ade68",
"shasum": ""
},
"require": {
@@ -6990,7 +7564,7 @@
"description": "Provides a tight integration between Symfony components and the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/framework-bundle/tree/v5.4.12"
+ "source": "https://github.com/symfony/framework-bundle/tree/v5.4.14"
},
"funding": [
{
@@ -7006,20 +7580,20 @@
"type": "tidelift"
}
],
- "time": "2022-08-26T10:32:10+00:00"
+ "time": "2022-10-07T08:01:20+00:00"
},
{
"name": "symfony/http-client",
- "version": "v5.4.12",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client.git",
- "reference": "6a057be154824487fd5e6b65ab83899e0c5ac550"
+ "reference": "8f29b0f06c9ff48c8431e78eb90c8bd6f82cb12b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client/zipball/6a057be154824487fd5e6b65ab83899e0c5ac550",
- "reference": "6a057be154824487fd5e6b65ab83899e0c5ac550",
+ "url": "https://api.github.com/repos/symfony/http-client/zipball/8f29b0f06c9ff48c8431e78eb90c8bd6f82cb12b",
+ "reference": "8f29b0f06c9ff48c8431e78eb90c8bd6f82cb12b",
"shasum": ""
},
"require": {
@@ -7077,7 +7651,7 @@
"description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-client/tree/v5.4.12"
+ "source": "https://github.com/symfony/http-client/tree/v5.4.15"
},
"funding": [
{
@@ -7093,7 +7667,7 @@
"type": "tidelift"
}
],
- "time": "2022-08-02T15:52:22+00:00"
+ "time": "2022-10-25T16:22:13+00:00"
},
{
"name": "symfony/http-client-contracts",
@@ -7175,16 +7749,16 @@
},
{
"name": "symfony/http-foundation",
- "version": "v5.4.12",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "f4bfe9611b113b15d98a43da68ec9b5a00d56791"
+ "reference": "75bd663ff2db90141bfb733682459d5bbe9e29c3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f4bfe9611b113b15d98a43da68ec9b5a00d56791",
- "reference": "f4bfe9611b113b15d98a43da68ec9b5a00d56791",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/75bd663ff2db90141bfb733682459d5bbe9e29c3",
+ "reference": "75bd663ff2db90141bfb733682459d5bbe9e29c3",
"shasum": ""
},
"require": {
@@ -7231,7 +7805,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v5.4.12"
+ "source": "https://github.com/symfony/http-foundation/tree/v5.4.15"
},
"funding": [
{
@@ -7247,20 +7821,20 @@
"type": "tidelift"
}
],
- "time": "2022-08-19T07:33:17+00:00"
+ "time": "2022-10-12T09:43:19+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v5.4.12",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "37f660fa3bcd78fe4893ce23ebe934618ec099be"
+ "reference": "fc63c8c3e1036d424820cc993a4ea163778dc5c7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/37f660fa3bcd78fe4893ce23ebe934618ec099be",
- "reference": "37f660fa3bcd78fe4893ce23ebe934618ec099be",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/fc63c8c3e1036d424820cc993a4ea163778dc5c7",
+ "reference": "fc63c8c3e1036d424820cc993a4ea163778dc5c7",
"shasum": ""
},
"require": {
@@ -7343,7 +7917,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-kernel/tree/v5.4.12"
+ "source": "https://github.com/symfony/http-kernel/tree/v5.4.15"
},
"funding": [
{
@@ -7359,20 +7933,20 @@
"type": "tidelift"
}
],
- "time": "2022-08-26T14:40:40+00:00"
+ "time": "2022-10-28T17:52:18+00:00"
},
{
"name": "symfony/intl",
- "version": "v5.4.11",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/intl.git",
- "reference": "d305c0c1d31b30b3876e041804c35e49e5f8a96e"
+ "reference": "2cb39da7f6e7b7344d7d5317dbee8db9d12cc714"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/intl/zipball/d305c0c1d31b30b3876e041804c35e49e5f8a96e",
- "reference": "d305c0c1d31b30b3876e041804c35e49e5f8a96e",
+ "url": "https://api.github.com/repos/symfony/intl/zipball/2cb39da7f6e7b7344d7d5317dbee8db9d12cc714",
+ "reference": "2cb39da7f6e7b7344d7d5317dbee8db9d12cc714",
"shasum": ""
},
"require": {
@@ -7431,7 +8005,7 @@
"localization"
],
"support": {
- "source": "https://github.com/symfony/intl/tree/v5.4.11"
+ "source": "https://github.com/symfony/intl/tree/v5.4.15"
},
"funding": [
{
@@ -7447,20 +8021,20 @@
"type": "tidelift"
}
],
- "time": "2022-07-20T11:34:24+00:00"
+ "time": "2022-10-19T14:28:49+00:00"
},
{
"name": "symfony/mailer",
- "version": "v5.4.12",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/mailer.git",
- "reference": "076043af11e58b20a68d2fd93f59cdbc6e8fdd00"
+ "reference": "926f4deddb60d40024e6058fd8f94e70e4024930"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mailer/zipball/076043af11e58b20a68d2fd93f59cdbc6e8fdd00",
- "reference": "076043af11e58b20a68d2fd93f59cdbc6e8fdd00",
+ "url": "https://api.github.com/repos/symfony/mailer/zipball/926f4deddb60d40024e6058fd8f94e70e4024930",
+ "reference": "926f4deddb60d40024e6058fd8f94e70e4024930",
"shasum": ""
},
"require": {
@@ -7507,7 +8081,7 @@
"description": "Helps sending emails",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/mailer/tree/v5.4.12"
+ "source": "https://github.com/symfony/mailer/tree/v5.4.15"
},
"funding": [
{
@@ -7523,20 +8097,20 @@
"type": "tidelift"
}
],
- "time": "2022-08-03T05:17:26+00:00"
+ "time": "2022-10-27T07:55:40+00:00"
},
{
"name": "symfony/mime",
- "version": "v5.4.12",
+ "version": "v5.4.14",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
- "reference": "03876e9c5a36f5b45e7d9a381edda5421eff8a90"
+ "reference": "1c118b253bb3495d81e95a6e3ec6c2766a98a0c4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mime/zipball/03876e9c5a36f5b45e7d9a381edda5421eff8a90",
- "reference": "03876e9c5a36f5b45e7d9a381edda5421eff8a90",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/1c118b253bb3495d81e95a6e3ec6c2766a98a0c4",
+ "reference": "1c118b253bb3495d81e95a6e3ec6c2766a98a0c4",
"shasum": ""
},
"require": {
@@ -7550,7 +8124,8 @@
"egulias/email-validator": "~3.0.0",
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
- "symfony/mailer": "<4.4"
+ "symfony/mailer": "<4.4",
+ "symfony/serializer": "<5.4.14|>=6.0,<6.0.14|>=6.1,<6.1.6"
},
"require-dev": {
"egulias/email-validator": "^2.1.10|^3.1",
@@ -7558,7 +8133,7 @@
"symfony/dependency-injection": "^4.4|^5.0|^6.0",
"symfony/property-access": "^4.4|^5.1|^6.0",
"symfony/property-info": "^4.4|^5.1|^6.0",
- "symfony/serializer": "^5.2|^6.0"
+ "symfony/serializer": "^5.4.14|~6.0.14|^6.1.6"
},
"type": "library",
"autoload": {
@@ -7590,7 +8165,7 @@
"mime-type"
],
"support": {
- "source": "https://github.com/symfony/mime/tree/v5.4.12"
+ "source": "https://github.com/symfony/mime/tree/v5.4.14"
},
"funding": [
{
@@ -7606,7 +8181,7 @@
"type": "tidelift"
}
],
- "time": "2022-08-19T14:24:03+00:00"
+ "time": "2022-10-07T08:01:20+00:00"
},
{
"name": "symfony/monolog-bridge",
@@ -8800,16 +9375,16 @@
},
{
"name": "symfony/property-access",
- "version": "v5.4.11",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-access.git",
- "reference": "c641d63e943ed31981bad4b4dcf29fe7da2ffa8c"
+ "reference": "0f3e8f40a1d3da90f674b3dd772e4777ccde4273"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/property-access/zipball/c641d63e943ed31981bad4b4dcf29fe7da2ffa8c",
- "reference": "c641d63e943ed31981bad4b4dcf29fe7da2ffa8c",
+ "url": "https://api.github.com/repos/symfony/property-access/zipball/0f3e8f40a1d3da90f674b3dd772e4777ccde4273",
+ "reference": "0f3e8f40a1d3da90f674b3dd772e4777ccde4273",
"shasum": ""
},
"require": {
@@ -8861,7 +9436,7 @@
"reflection"
],
"support": {
- "source": "https://github.com/symfony/property-access/tree/v5.4.11"
+ "source": "https://github.com/symfony/property-access/tree/v5.4.15"
},
"funding": [
{
@@ -8877,20 +9452,20 @@
"type": "tidelift"
}
],
- "time": "2022-06-27T16:58:25+00:00"
+ "time": "2022-10-27T07:55:40+00:00"
},
{
"name": "symfony/property-info",
- "version": "v5.4.11",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-info.git",
- "reference": "8a9a2b638a808cc92a2fbce185b9318e76b0e20c"
+ "reference": "3ef5e026a71a39345da241292c153979893033c2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/property-info/zipball/8a9a2b638a808cc92a2fbce185b9318e76b0e20c",
- "reference": "8a9a2b638a808cc92a2fbce185b9318e76b0e20c",
+ "url": "https://api.github.com/repos/symfony/property-info/zipball/3ef5e026a71a39345da241292c153979893033c2",
+ "reference": "3ef5e026a71a39345da241292c153979893033c2",
"shasum": ""
},
"require": {
@@ -8952,7 +9527,7 @@
"validator"
],
"support": {
- "source": "https://github.com/symfony/property-info/tree/v5.4.11"
+ "source": "https://github.com/symfony/property-info/tree/v5.4.15"
},
"funding": [
{
@@ -8968,7 +9543,7 @@
"type": "tidelift"
}
],
- "time": "2022-07-19T08:07:51+00:00"
+ "time": "2022-10-27T07:55:40+00:00"
},
{
"name": "symfony/proxy-manager-bridge",
@@ -9038,17 +9613,105 @@
"time": "2022-03-02T12:42:23+00:00"
},
{
- "name": "symfony/routing",
- "version": "v5.4.11",
+ "name": "symfony/psr-http-message-bridge",
+ "version": "v2.1.3",
"source": {
"type": "git",
- "url": "https://github.com/symfony/routing.git",
- "reference": "3e01ccd9b2a3a4167ba2b3c53612762300300226"
+ "url": "https://github.com/symfony/psr-http-message-bridge.git",
+ "reference": "d444f85dddf65c7e57c58d8e5b3a4dbb593b1840"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/3e01ccd9b2a3a4167ba2b3c53612762300300226",
- "reference": "3e01ccd9b2a3a4167ba2b3c53612762300300226",
+ "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/d444f85dddf65c7e57c58d8e5b3a4dbb593b1840",
+ "reference": "d444f85dddf65c7e57c58d8e5b3a4dbb593b1840",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1",
+ "psr/http-message": "^1.0",
+ "symfony/http-foundation": "^4.4 || ^5.0 || ^6.0"
+ },
+ "require-dev": {
+ "nyholm/psr7": "^1.1",
+ "psr/log": "^1.1 || ^2 || ^3",
+ "symfony/browser-kit": "^4.4 || ^5.0 || ^6.0",
+ "symfony/config": "^4.4 || ^5.0 || ^6.0",
+ "symfony/event-dispatcher": "^4.4 || ^5.0 || ^6.0",
+ "symfony/framework-bundle": "^4.4 || ^5.0 || ^6.0",
+ "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0",
+ "symfony/phpunit-bridge": "^5.4@dev || ^6.0"
+ },
+ "suggest": {
+ "nyholm/psr7": "For a super lightweight PSR-7/17 implementation"
+ },
+ "type": "symfony-bridge",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Bridge\\PsrHttpMessage\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "http://symfony.com/contributors"
+ }
+ ],
+ "description": "PSR HTTP message bridge",
+ "homepage": "http://symfony.com",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr-17",
+ "psr-7"
+ ],
+ "support": {
+ "issues": "https://github.com/symfony/psr-http-message-bridge/issues",
+ "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.1.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-09-05T10:34:54+00:00"
+ },
+ {
+ "name": "symfony/routing",
+ "version": "v5.4.15",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/routing.git",
+ "reference": "5c9b129efe9abce9470e384bf65d8a7e262eee69"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/5c9b129efe9abce9470e384bf65d8a7e262eee69",
+ "reference": "5c9b129efe9abce9470e384bf65d8a7e262eee69",
"shasum": ""
},
"require": {
@@ -9109,7 +9772,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v5.4.11"
+ "source": "https://github.com/symfony/routing/tree/v5.4.15"
},
"funding": [
{
@@ -9125,7 +9788,7 @@
"type": "tidelift"
}
],
- "time": "2022-07-20T13:00:38+00:00"
+ "time": "2022-10-13T14:10:41+00:00"
},
{
"name": "symfony/runtime",
@@ -9308,16 +9971,16 @@
},
{
"name": "symfony/security-core",
- "version": "v5.4.11",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-core.git",
- "reference": "25d14fa47f9efa084d3c23d0ae3b2624d2ad9e92"
+ "reference": "4ef922cd626a43b570522cb1616e3d678664c9a0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-core/zipball/25d14fa47f9efa084d3c23d0ae3b2624d2ad9e92",
- "reference": "25d14fa47f9efa084d3c23d0ae3b2624d2ad9e92",
+ "url": "https://api.github.com/repos/symfony/security-core/zipball/4ef922cd626a43b570522cb1616e3d678664c9a0",
+ "reference": "4ef922cd626a43b570522cb1616e3d678664c9a0",
"shasum": ""
},
"require": {
@@ -9381,7 +10044,7 @@
"description": "Symfony Security Component - Core Library",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security-core/tree/v5.4.11"
+ "source": "https://github.com/symfony/security-core/tree/v5.4.15"
},
"funding": [
{
@@ -9397,7 +10060,7 @@
"type": "tidelift"
}
],
- "time": "2022-07-20T13:00:38+00:00"
+ "time": "2022-10-23T10:30:41+00:00"
},
{
"name": "symfony/security-csrf",
@@ -9473,16 +10136,16 @@
},
{
"name": "symfony/security-guard",
- "version": "v5.4.9",
+ "version": "v5.4.13",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-guard.git",
- "reference": "64c83d25b5b23fa07e77c861d19e46ce7929a789"
+ "reference": "83f647fcdc17aa14908f0e02a302d3d9d0f63fbc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-guard/zipball/64c83d25b5b23fa07e77c861d19e46ce7929a789",
- "reference": "64c83d25b5b23fa07e77c861d19e46ce7929a789",
+ "url": "https://api.github.com/repos/symfony/security-guard/zipball/83f647fcdc17aa14908f0e02a302d3d9d0f63fbc",
+ "reference": "83f647fcdc17aa14908f0e02a302d3d9d0f63fbc",
"shasum": ""
},
"require": {
@@ -9520,7 +10183,7 @@
"description": "Symfony Security Component - Guard",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security-guard/tree/v5.4.9"
+ "source": "https://github.com/symfony/security-guard/tree/v5.4.13"
},
"funding": [
{
@@ -9536,20 +10199,20 @@
"type": "tidelift"
}
],
- "time": "2022-05-06T14:25:18+00:00"
+ "time": "2022-09-28T13:19:49+00:00"
},
{
"name": "symfony/security-http",
- "version": "v5.4.12",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/security-http.git",
- "reference": "3ca3eb2a866a4a5adaf0a952d2d7db7208da378b"
+ "reference": "142d48153a453dbd49e880eef6bc77e4ba162dff"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/security-http/zipball/3ca3eb2a866a4a5adaf0a952d2d7db7208da378b",
- "reference": "3ca3eb2a866a4a5adaf0a952d2d7db7208da378b",
+ "url": "https://api.github.com/repos/symfony/security-http/zipball/142d48153a453dbd49e880eef6bc77e4ba162dff",
+ "reference": "142d48153a453dbd49e880eef6bc77e4ba162dff",
"shasum": ""
},
"require": {
@@ -9605,7 +10268,7 @@
"description": "Symfony Security Component - HTTP Integration",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/security-http/tree/v5.4.12"
+ "source": "https://github.com/symfony/security-http/tree/v5.4.15"
},
"funding": [
{
@@ -9621,20 +10284,20 @@
"type": "tidelift"
}
],
- "time": "2022-08-23T10:55:18+00:00"
+ "time": "2022-10-23T10:30:41+00:00"
},
{
"name": "symfony/serializer",
- "version": "v5.4.12",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/serializer.git",
- "reference": "776fa3010f62b97a7119757a66596a654cd244d4"
+ "reference": "e80871599f6f0929bb349afc3d9ecaba783e68bd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/serializer/zipball/776fa3010f62b97a7119757a66596a654cd244d4",
- "reference": "776fa3010f62b97a7119757a66596a654cd244d4",
+ "url": "https://api.github.com/repos/symfony/serializer/zipball/e80871599f6f0929bb349afc3d9ecaba783e68bd",
+ "reference": "e80871599f6f0929bb349afc3d9ecaba783e68bd",
"shasum": ""
},
"require": {
@@ -9708,7 +10371,7 @@
"description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/serializer/tree/v5.4.12"
+ "source": "https://github.com/symfony/serializer/tree/v5.4.15"
},
"funding": [
{
@@ -9724,7 +10387,7 @@
"type": "tidelift"
}
],
- "time": "2022-08-26T10:32:10+00:00"
+ "time": "2022-10-23T09:52:07+00:00"
},
{
"name": "symfony/service-contracts",
@@ -9811,16 +10474,16 @@
},
{
"name": "symfony/stopwatch",
- "version": "v5.4.5",
+ "version": "v5.4.13",
"source": {
"type": "git",
"url": "https://github.com/symfony/stopwatch.git",
- "reference": "4d04b5c24f3c9a1a168a131f6cbe297155bc0d30"
+ "reference": "6df7a3effde34d81717bbef4591e5ffe32226d69"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/stopwatch/zipball/4d04b5c24f3c9a1a168a131f6cbe297155bc0d30",
- "reference": "4d04b5c24f3c9a1a168a131f6cbe297155bc0d30",
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/6df7a3effde34d81717bbef4591e5ffe32226d69",
+ "reference": "6df7a3effde34d81717bbef4591e5ffe32226d69",
"shasum": ""
},
"require": {
@@ -9853,7 +10516,7 @@
"description": "Provides a way to profile code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/stopwatch/tree/v5.4.5"
+ "source": "https://github.com/symfony/stopwatch/tree/v5.4.13"
},
"funding": [
{
@@ -9869,20 +10532,20 @@
"type": "tidelift"
}
],
- "time": "2022-02-18T16:06:09+00:00"
+ "time": "2022-09-28T13:19:49+00:00"
},
{
"name": "symfony/string",
- "version": "v5.4.12",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "2fc515e512d721bf31ea76bd02fe23ada4640058"
+ "reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/2fc515e512d721bf31ea76bd02fe23ada4640058",
- "reference": "2fc515e512d721bf31ea76bd02fe23ada4640058",
+ "url": "https://api.github.com/repos/symfony/string/zipball/571334ce9f687e3e6af72db4d3b2a9431e4fd9ed",
+ "reference": "571334ce9f687e3e6af72db4d3b2a9431e4fd9ed",
"shasum": ""
},
"require": {
@@ -9939,7 +10602,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v5.4.12"
+ "source": "https://github.com/symfony/string/tree/v5.4.15"
},
"funding": [
{
@@ -9955,88 +10618,20 @@
"type": "tidelift"
}
],
- "time": "2022-08-12T17:03:11+00:00"
- },
- {
- "name": "symfony/templating",
- "version": "v5.4.11",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/templating.git",
- "reference": "3933eaad08c7f83672c53f635d7c3988252a658a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/templating/zipball/3933eaad08c7f83672c53f635d7c3988252a658a",
- "reference": "3933eaad08c7f83672c53f635d7c3988252a658a",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "symfony/polyfill-ctype": "~1.8"
- },
- "require-dev": {
- "psr/log": "^1|^2|^3"
- },
- "suggest": {
- "psr/log-implementation": "For using debug logging in loaders"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Templating\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Provides all the tools needed to build any kind of template system",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/templating/tree/v5.4.11"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2022-06-27T16:58:25+00:00"
+ "time": "2022-10-05T15:16:54+00:00"
},
{
"name": "symfony/translation",
- "version": "v5.4.12",
+ "version": "v5.4.14",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "42ecc77eb4f229ce2df702a648ec93b8478d76ae"
+ "reference": "f0ed07675863aa6e3939df8b1bc879450b585cab"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/42ecc77eb4f229ce2df702a648ec93b8478d76ae",
- "reference": "42ecc77eb4f229ce2df702a648ec93b8478d76ae",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/f0ed07675863aa6e3939df8b1bc879450b585cab",
+ "reference": "f0ed07675863aa6e3939df8b1bc879450b585cab",
"shasum": ""
},
"require": {
@@ -10104,7 +10699,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v5.4.12"
+ "source": "https://github.com/symfony/translation/tree/v5.4.14"
},
"funding": [
{
@@ -10120,7 +10715,7 @@
"type": "tidelift"
}
],
- "time": "2022-08-02T15:52:22+00:00"
+ "time": "2022-10-07T08:01:20+00:00"
},
{
"name": "symfony/translation-contracts",
@@ -10202,16 +10797,16 @@
},
{
"name": "symfony/twig-bridge",
- "version": "v5.4.12",
+ "version": "v5.4.14",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bridge.git",
- "reference": "94c3b38514c953e3e84719c96d4e578a01ca1819"
+ "reference": "60db1cc3f5b098eb194c00a10489148a03861371"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/94c3b38514c953e3e84719c96d4e578a01ca1819",
- "reference": "94c3b38514c953e3e84719c96d4e578a01ca1819",
+ "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/60db1cc3f5b098eb194c00a10489148a03861371",
+ "reference": "60db1cc3f5b098eb194c00a10489148a03861371",
"shasum": ""
},
"require": {
@@ -10303,7 +10898,7 @@
"description": "Provides integration for Twig with various Symfony components",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/twig-bridge/tree/v5.4.12"
+ "source": "https://github.com/symfony/twig-bridge/tree/v5.4.14"
},
"funding": [
{
@@ -10319,7 +10914,7 @@
"type": "tidelift"
}
],
- "time": "2022-08-03T13:09:21+00:00"
+ "time": "2022-10-11T12:49:22+00:00"
},
{
"name": "symfony/twig-bundle",
@@ -10510,16 +11105,16 @@
},
{
"name": "symfony/validator",
- "version": "v5.4.12",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/validator.git",
- "reference": "38bc4d83d01b800f1fa5acaceb5ff77490b8f768"
+ "reference": "0fb0c50f18f4517a8ea59d1cc87bff231402a7e3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/validator/zipball/38bc4d83d01b800f1fa5acaceb5ff77490b8f768",
- "reference": "38bc4d83d01b800f1fa5acaceb5ff77490b8f768",
+ "url": "https://api.github.com/repos/symfony/validator/zipball/0fb0c50f18f4517a8ea59d1cc87bff231402a7e3",
+ "reference": "0fb0c50f18f4517a8ea59d1cc87bff231402a7e3",
"shasum": ""
},
"require": {
@@ -10603,7 +11198,7 @@
"description": "Provides tools to validate values",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/validator/tree/v5.4.12"
+ "source": "https://github.com/symfony/validator/tree/v5.4.15"
},
"funding": [
{
@@ -10619,20 +11214,20 @@
"type": "tidelift"
}
],
- "time": "2022-08-09T11:54:29+00:00"
+ "time": "2022-10-27T08:04:35+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v5.4.11",
+ "version": "v5.4.14",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861"
+ "reference": "6894d06145fefebd9a4c7272baa026a1c394a430"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8f306d7b8ef34fb3db3305be97ba8e088fb4861",
- "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6894d06145fefebd9a4c7272baa026a1c394a430",
+ "reference": "6894d06145fefebd9a4c7272baa026a1c394a430",
"shasum": ""
},
"require": {
@@ -10692,7 +11287,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v5.4.11"
+ "source": "https://github.com/symfony/var-dumper/tree/v5.4.14"
},
"funding": [
{
@@ -10708,7 +11303,7 @@
"type": "tidelift"
}
],
- "time": "2022-07-20T13:00:38+00:00"
+ "time": "2022-10-07T08:01:20+00:00"
},
{
"name": "symfony/var-exporter",
@@ -10872,16 +11467,16 @@
},
{
"name": "symfony/webpack-encore-bundle",
- "version": "v1.15.1",
+ "version": "v1.16.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/webpack-encore-bundle.git",
- "reference": "718673b1e758533614190ae74d07305a72bc66a9"
+ "reference": "bb399930c0299866258b616a74a27b50b94c5d45"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/718673b1e758533614190ae74d07305a72bc66a9",
- "reference": "718673b1e758533614190ae74d07305a72bc66a9",
+ "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/bb399930c0299866258b616a74a27b50b94c5d45",
+ "reference": "bb399930c0299866258b616a74a27b50b94c5d45",
"shasum": ""
},
"require": {
@@ -10925,7 +11520,7 @@
"description": "Integration with your Symfony app & Webpack Encore!",
"support": {
"issues": "https://github.com/symfony/webpack-encore-bundle/issues",
- "source": "https://github.com/symfony/webpack-encore-bundle/tree/v1.15.1"
+ "source": "https://github.com/symfony/webpack-encore-bundle/tree/v1.16.0"
},
"funding": [
{
@@ -10941,20 +11536,20 @@
"type": "tidelift"
}
],
- "time": "2022-07-13T17:07:35+00:00"
+ "time": "2022-10-18T15:21:06+00:00"
},
{
"name": "symfony/yaml",
- "version": "v5.4.12",
+ "version": "v5.4.14",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "7a3aa21ac8ab1a96cc6de5bbcab4bc9fc943b18c"
+ "reference": "e83fe9a72011f07c662da46a05603d66deeeb487"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/7a3aa21ac8ab1a96cc6de5bbcab4bc9fc943b18c",
- "reference": "7a3aa21ac8ab1a96cc6de5bbcab4bc9fc943b18c",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/e83fe9a72011f07c662da46a05603d66deeeb487",
+ "reference": "e83fe9a72011f07c662da46a05603d66deeeb487",
"shasum": ""
},
"require": {
@@ -11000,7 +11595,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v5.4.12"
+ "source": "https://github.com/symfony/yaml/tree/v5.4.14"
},
"funding": [
{
@@ -11016,7 +11611,7 @@
"type": "tidelift"
}
],
- "time": "2022-08-02T15:52:22+00:00"
+ "time": "2022-10-03T15:15:50+00:00"
},
{
"name": "tecnickcom/tc-lib-barcode",
@@ -11812,16 +12407,16 @@
},
{
"name": "twig/twig",
- "version": "v3.4.2",
+ "version": "v3.4.3",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
- "reference": "e07cdd3d430cd7e453c31b36eb5ad6c0c5e43077"
+ "reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/e07cdd3d430cd7e453c31b36eb5ad6c0c5e43077",
- "reference": "e07cdd3d430cd7e453c31b36eb5ad6c0c5e43077",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/c38fd6b0b7f370c198db91ffd02e23b517426b58",
+ "reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58",
"shasum": ""
},
"require": {
@@ -11872,7 +12467,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
- "source": "https://github.com/twigphp/Twig/tree/v3.4.2"
+ "source": "https://github.com/twigphp/Twig/tree/v3.4.3"
},
"funding": [
{
@@ -11884,7 +12479,7 @@
"type": "tidelift"
}
],
- "time": "2022-08-12T06:47:24+00:00"
+ "time": "2022-09-28T08:42:51+00:00"
},
{
"name": "ua-parser/uap-php",
@@ -11949,6 +12544,436 @@
},
"time": "2020-10-02T23:36:20+00:00"
},
+ {
+ "name": "web-auth/cose-lib",
+ "version": "v3.3.12",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/web-auth/cose-lib.git",
+ "reference": "efa6ec2ba4e840bc1316a493973c9916028afeeb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/web-auth/cose-lib/zipball/efa6ec2ba4e840bc1316a493973c9916028afeeb",
+ "reference": "efa6ec2ba4e840bc1316a493973c9916028afeeb",
+ "shasum": ""
+ },
+ "require": {
+ "beberlei/assert": "^3.2",
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "ext-openssl": "*",
+ "fgrosse/phpasn1": "^2.1",
+ "php": ">=7.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Cose\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florent Morselli",
+ "homepage": "https://github.com/Spomky"
+ },
+ {
+ "name": "All contributors",
+ "homepage": "https://github.com/web-auth/cose/contributors"
+ }
+ ],
+ "description": "CBOR Object Signing and Encryption (COSE) For PHP",
+ "homepage": "https://github.com/web-auth",
+ "keywords": [
+ "COSE",
+ "RFC8152"
+ ],
+ "support": {
+ "source": "https://github.com/web-auth/cose-lib/tree/v3.3.12"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Spomky",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/FlorentMorselli",
+ "type": "patreon"
+ }
+ ],
+ "time": "2021-12-04T12:13:35+00:00"
+ },
+ {
+ "name": "web-auth/metadata-service",
+ "version": "v3.3.12",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/web-auth/webauthn-metadata-service.git",
+ "reference": "ef40d2b7b68c4964247d13fab52e2fa8dbd65246"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/web-auth/webauthn-metadata-service/zipball/ef40d2b7b68c4964247d13fab52e2fa8dbd65246",
+ "reference": "ef40d2b7b68c4964247d13fab52e2fa8dbd65246",
+ "shasum": ""
+ },
+ "require": {
+ "beberlei/assert": "^3.2",
+ "ext-json": "*",
+ "league/uri": "^6.0",
+ "php": ">=7.2",
+ "psr/http-client": "^1.0",
+ "psr/http-factory": "^1.0",
+ "psr/log": "^1.1"
+ },
+ "suggest": {
+ "web-token/jwt-key-mgmt": "Mandatory for fetching Metadata Statement from distant sources",
+ "web-token/jwt-signature-algorithm-ecdsa": "Mandatory for fetching Metadata Statement from distant sources"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Webauthn\\MetadataService\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florent Morselli",
+ "homepage": "https://github.com/Spomky"
+ },
+ {
+ "name": "All contributors",
+ "homepage": "https://github.com/web-auth/metadata-service/contributors"
+ }
+ ],
+ "description": "Metadata Service for FIDO2/Webauthn",
+ "homepage": "https://github.com/web-auth",
+ "keywords": [
+ "FIDO2",
+ "fido",
+ "webauthn"
+ ],
+ "support": {
+ "source": "https://github.com/web-auth/webauthn-metadata-service/tree/v3.3.12"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Spomky",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/FlorentMorselli",
+ "type": "patreon"
+ }
+ ],
+ "time": "2021-11-21T11:14:31+00:00"
+ },
+ {
+ "name": "web-auth/webauthn-lib",
+ "version": "v3.3.12",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/web-auth/webauthn-lib.git",
+ "reference": "5ef9b21c8e9f8a817e524ac93290d08a9f065b33"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/web-auth/webauthn-lib/zipball/5ef9b21c8e9f8a817e524ac93290d08a9f065b33",
+ "reference": "5ef9b21c8e9f8a817e524ac93290d08a9f065b33",
+ "shasum": ""
+ },
+ "require": {
+ "beberlei/assert": "^3.2",
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "ext-openssl": "*",
+ "fgrosse/phpasn1": "^2.1",
+ "php": ">=7.2",
+ "psr/http-client": "^1.0",
+ "psr/http-factory": "^1.0",
+ "psr/http-message": "^1.0",
+ "psr/log": "^1.1",
+ "ramsey/uuid": "^3.8|^4.0",
+ "spomky-labs/base64url": "^2.0",
+ "spomky-labs/cbor-php": "^1.0|^2.0",
+ "symfony/process": "^3.0|^4.0|^5.0",
+ "thecodingmachine/safe": "^1.1",
+ "web-auth/cose-lib": "self.version",
+ "web-auth/metadata-service": "self.version"
+ },
+ "suggest": {
+ "psr/log-implementation": "Recommended to receive logs from the library",
+ "web-token/jwt-key-mgmt": "Mandatory for the AndroidSafetyNet Attestation Statement support",
+ "web-token/jwt-signature-algorithm-ecdsa": "Recommended for the AndroidSafetyNet Attestation Statement support",
+ "web-token/jwt-signature-algorithm-eddsa": "Recommended for the AndroidSafetyNet Attestation Statement support",
+ "web-token/jwt-signature-algorithm-rsa": "Mandatory for the AndroidSafetyNet Attestation Statement support"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Webauthn\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florent Morselli",
+ "homepage": "https://github.com/Spomky"
+ },
+ {
+ "name": "All contributors",
+ "homepage": "https://github.com/web-auth/webauthn-library/contributors"
+ }
+ ],
+ "description": "FIDO2/Webauthn Support For PHP",
+ "homepage": "https://github.com/web-auth",
+ "keywords": [
+ "FIDO2",
+ "fido",
+ "webauthn"
+ ],
+ "support": {
+ "source": "https://github.com/web-auth/webauthn-lib/tree/v3.3.12"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Spomky",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/FlorentMorselli",
+ "type": "patreon"
+ }
+ ],
+ "time": "2022-02-18T07:13:44+00:00"
+ },
+ {
+ "name": "web-auth/webauthn-symfony-bundle",
+ "version": "v3.3.12",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/web-auth/webauthn-symfony-bundle.git",
+ "reference": "15f2091dc351f190d27a377a0dbbc117e6be5329"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/web-auth/webauthn-symfony-bundle/zipball/15f2091dc351f190d27a377a0dbbc117e6be5329",
+ "reference": "15f2091dc351f190d27a377a0dbbc117e6be5329",
+ "shasum": ""
+ },
+ "require": {
+ "spomky-labs/cbor-bundle": "^2.0",
+ "symfony/config": "^4.4|^5.0",
+ "symfony/dependency-injection": "^4.4|^5.0",
+ "symfony/framework-bundle": "^4.4|^5.0",
+ "web-auth/webauthn-lib": "self.version",
+ "web-token/jwt-signature": "^2.0.9"
+ },
+ "type": "symfony-bundle",
+ "autoload": {
+ "psr-4": {
+ "Webauthn\\Bundle\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florent Morselli",
+ "homepage": "https://github.com/Spomky"
+ },
+ {
+ "name": "All contributors",
+ "homepage": "https://github.com/web-auth/webauthn-symfony-bundle/contributors"
+ }
+ ],
+ "description": "FIDO2/Webauthn Security Bundle For Symfony",
+ "homepage": "https://github.com/web-auth",
+ "keywords": [
+ "FIDO2",
+ "fido",
+ "webauthn"
+ ],
+ "support": {
+ "source": "https://github.com/web-auth/webauthn-symfony-bundle/tree/v3.3.12"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Spomky",
+ "type": "github"
+ },
+ {
+ "url": "https://www.patreon.com/FlorentMorselli",
+ "type": "patreon"
+ }
+ ],
+ "time": "2021-11-21T11:14:31+00:00"
+ },
+ {
+ "name": "web-token/jwt-core",
+ "version": "v2.2.11",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/web-token/jwt-core.git",
+ "reference": "53beb6f6c1eec4fa93c1c3e5d9e5701e71fa1678"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/web-token/jwt-core/zipball/53beb6f6c1eec4fa93c1c3e5d9e5701e71fa1678",
+ "reference": "53beb6f6c1eec4fa93c1c3e5d9e5701e71fa1678",
+ "shasum": ""
+ },
+ "require": {
+ "brick/math": "^0.8.17|^0.9",
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "fgrosse/phpasn1": "^2.0",
+ "php": ">=7.2",
+ "spomky-labs/base64url": "^1.0|^2.0"
+ },
+ "conflict": {
+ "spomky-labs/jose": "*"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Jose\\Component\\Core\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florent Morselli",
+ "homepage": "https://github.com/Spomky"
+ },
+ {
+ "name": "All contributors",
+ "homepage": "https://github.com/web-token/jwt-framework/contributors"
+ }
+ ],
+ "description": "Core component of the JWT Framework.",
+ "homepage": "https://github.com/web-token",
+ "keywords": [
+ "JOSE",
+ "JWE",
+ "JWK",
+ "JWKSet",
+ "JWS",
+ "Jot",
+ "RFC7515",
+ "RFC7516",
+ "RFC7517",
+ "RFC7518",
+ "RFC7519",
+ "RFC7520",
+ "bundle",
+ "jwa",
+ "jwt",
+ "symfony"
+ ],
+ "support": {
+ "source": "https://github.com/web-token/jwt-core/tree/v2.2.11"
+ },
+ "funding": [
+ {
+ "url": "https://www.patreon.com/FlorentMorselli",
+ "type": "patreon"
+ }
+ ],
+ "time": "2021-03-17T14:55:52+00:00"
+ },
+ {
+ "name": "web-token/jwt-signature",
+ "version": "v2.2.11",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/web-token/jwt-signature.git",
+ "reference": "015b59aaf3b6e8fb9f5bd1338845b7464c7d8103"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/web-token/jwt-signature/zipball/015b59aaf3b6e8fb9f5bd1338845b7464c7d8103",
+ "reference": "015b59aaf3b6e8fb9f5bd1338845b7464c7d8103",
+ "shasum": ""
+ },
+ "require": {
+ "web-token/jwt-core": "^2.1"
+ },
+ "suggest": {
+ "web-token/jwt-signature-algorithm-ecdsa": "ECDSA Based Signature Algorithms",
+ "web-token/jwt-signature-algorithm-eddsa": "EdDSA Based Signature Algorithms",
+ "web-token/jwt-signature-algorithm-experimental": "Experimental Signature Algorithms",
+ "web-token/jwt-signature-algorithm-hmac": "HMAC Based Signature Algorithms",
+ "web-token/jwt-signature-algorithm-none": "None Signature Algorithm",
+ "web-token/jwt-signature-algorithm-rsa": "RSA Based Signature Algorithms"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Jose\\Component\\Signature\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Florent Morselli",
+ "homepage": "https://github.com/Spomky"
+ },
+ {
+ "name": "All contributors",
+ "homepage": "https://github.com/web-token/jwt-signature/contributors"
+ }
+ ],
+ "description": "Signature component of the JWT Framework.",
+ "homepage": "https://github.com/web-token",
+ "keywords": [
+ "JOSE",
+ "JWE",
+ "JWK",
+ "JWKSet",
+ "JWS",
+ "Jot",
+ "RFC7515",
+ "RFC7516",
+ "RFC7517",
+ "RFC7518",
+ "RFC7519",
+ "RFC7520",
+ "bundle",
+ "jwa",
+ "jwt",
+ "symfony"
+ ],
+ "support": {
+ "source": "https://github.com/web-token/jwt-signature/tree/v2.2.11"
+ },
+ "funding": [
+ {
+ "url": "https://www.patreon.com/FlorentMorselli",
+ "type": "patreon"
+ }
+ ],
+ "time": "2021-03-01T19:55:28+00:00"
+ },
{
"name": "webmozart/assert",
"version": "1.11.0",
@@ -12006,48 +13031,6 @@
"source": "https://github.com/webmozarts/assert/tree/1.11.0"
},
"time": "2022-06-03T18:03:27+00:00"
- },
- {
- "name": "yubico/u2flib-server",
- "version": "1.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/Yubico/php-u2flib-server.git",
- "reference": "55d813acf68212ad2cadecde07551600d6971939"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Yubico/php-u2flib-server/zipball/55d813acf68212ad2cadecde07551600d6971939",
- "reference": "55d813acf68212ad2cadecde07551600d6971939",
- "shasum": ""
- },
- "require": {
- "ext-openssl": "*",
- "paragonie/random_compat": ">= 1",
- "php": ">=5.6"
- },
- "require-dev": {
- "phpunit/phpunit": "~5.7",
- "vimeo/psalm": "^0|^1|^2"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-2-Clause"
- ],
- "description": "Library for U2F implementation",
- "homepage": "https://developers.yubico.com/php-u2flib-server",
- "support": {
- "issues": "https://github.com/Yubico/php-u2flib-server/issues",
- "source": "https://github.com/Yubico/php-u2flib-server/tree/1.0.2"
- },
- "abandoned": true,
- "time": "2018-09-07T08:16:44+00:00"
}
],
"packages-dev": [
@@ -12976,28 +13959,27 @@
},
{
"name": "phpstan/extension-installer",
- "version": "1.1.0",
+ "version": "1.2.0",
"source": {
"type": "git",
"url": "https://github.com/phpstan/extension-installer.git",
- "reference": "66c7adc9dfa38b6b5838a9fb728b68a7d8348051"
+ "reference": "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/66c7adc9dfa38b6b5838a9fb728b68a7d8348051",
- "reference": "66c7adc9dfa38b6b5838a9fb728b68a7d8348051",
+ "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f06dbb052ddc394e7896fcd1cfcd533f9f6ace40",
+ "reference": "f06dbb052ddc394e7896fcd1cfcd533f9f6ace40",
"shasum": ""
},
"require": {
- "composer-plugin-api": "^1.1 || ^2.0",
- "php": "^7.1 || ^8.0",
- "phpstan/phpstan": ">=0.11.6"
+ "composer-plugin-api": "^2.0",
+ "php": "^7.2 || ^8.0",
+ "phpstan/phpstan": "^1.8.0"
},
"require-dev": {
- "composer/composer": "^1.8",
- "phing/phing": "^2.16.3",
+ "composer/composer": "^2.0",
"php-parallel-lint/php-parallel-lint": "^1.2.0",
- "phpstan/phpstan-strict-rules": "^0.11 || ^0.12"
+ "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0"
},
"type": "composer-plugin",
"extra": {
@@ -13015,22 +13997,22 @@
"description": "Composer plugin for automatic installation of PHPStan extensions",
"support": {
"issues": "https://github.com/phpstan/extension-installer/issues",
- "source": "https://github.com/phpstan/extension-installer/tree/1.1.0"
+ "source": "https://github.com/phpstan/extension-installer/tree/1.2.0"
},
- "time": "2020-12-13T13:06:13+00:00"
+ "time": "2022-10-17T12:59:16+00:00"
},
{
"name": "phpstan/phpstan",
- "version": "1.8.5",
+ "version": "1.8.11",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
- "reference": "f6598a5ff12ca4499a836815e08b4d77a2ddeb20"
+ "reference": "46e223dd68a620da18855c23046ddb00940b4014"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f6598a5ff12ca4499a836815e08b4d77a2ddeb20",
- "reference": "f6598a5ff12ca4499a836815e08b4d77a2ddeb20",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/46e223dd68a620da18855c23046ddb00940b4014",
+ "reference": "46e223dd68a620da18855c23046ddb00940b4014",
"shasum": ""
},
"require": {
@@ -13060,7 +14042,7 @@
],
"support": {
"issues": "https://github.com/phpstan/phpstan/issues",
- "source": "https://github.com/phpstan/phpstan/tree/1.8.5"
+ "source": "https://github.com/phpstan/phpstan/tree/1.8.11"
},
"funding": [
{
@@ -13076,25 +14058,25 @@
"type": "tidelift"
}
],
- "time": "2022-09-07T16:05:32+00:00"
+ "time": "2022-10-24T15:45:13+00:00"
},
{
"name": "phpstan/phpstan-doctrine",
- "version": "1.3.13",
+ "version": "1.3.21",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan-doctrine.git",
- "reference": "62a3b4252d502f0ead9c145055947b38b8568498"
+ "reference": "3243a3876ad465ed905332f4e6878bfe1ecbea69"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/62a3b4252d502f0ead9c145055947b38b8568498",
- "reference": "62a3b4252d502f0ead9c145055947b38b8568498",
+ "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/3243a3876ad465ed905332f4e6878bfe1ecbea69",
+ "reference": "3243a3876ad465ed905332f4e6878bfe1ecbea69",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0",
- "phpstan/phpstan": "^1.8.3"
+ "phpstan/phpstan": "^1.8.11"
},
"conflict": {
"doctrine/collections": "<1.0",
@@ -13143,22 +14125,22 @@
"description": "Doctrine extensions for PHPStan",
"support": {
"issues": "https://github.com/phpstan/phpstan-doctrine/issues",
- "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.13"
+ "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.21"
},
- "time": "2022-09-06T14:54:00+00:00"
+ "time": "2022-10-26T08:50:00+00:00"
},
{
"name": "phpstan/phpstan-symfony",
- "version": "1.2.13",
+ "version": "1.2.14",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan-symfony.git",
- "reference": "016e441a19a2af79ca0c60920ba0d61747b4e855"
+ "reference": "f7dd737329504115adaa987697a759a66dd2ee8a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/016e441a19a2af79ca0c60920ba0d61747b4e855",
- "reference": "016e441a19a2af79ca0c60920ba0d61747b4e855",
+ "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/f7dd737329504115adaa987697a759a66dd2ee8a",
+ "reference": "f7dd737329504115adaa987697a759a66dd2ee8a",
"shasum": ""
},
"require": {
@@ -13214,22 +14196,22 @@
"description": "Symfony Framework extensions and rules for PHPStan",
"support": {
"issues": "https://github.com/phpstan/phpstan-symfony/issues",
- "source": "https://github.com/phpstan/phpstan-symfony/tree/1.2.13"
+ "source": "https://github.com/phpstan/phpstan-symfony/tree/1.2.14"
},
- "time": "2022-08-28T13:34:45+00:00"
+ "time": "2022-10-05T11:19:29+00:00"
},
{
"name": "psalm/plugin-symfony",
- "version": "v3.1.9",
+ "version": "v3.1.10",
"source": {
"type": "git",
"url": "https://github.com/psalm/psalm-plugin-symfony.git",
- "reference": "b9511a3c4dd67131d2ae55f6d12b6c28ce56a561"
+ "reference": "5dca17839a6d48766ac760b8aa6d1f6d12759b28"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/psalm/psalm-plugin-symfony/zipball/b9511a3c4dd67131d2ae55f6d12b6c28ce56a561",
- "reference": "b9511a3c4dd67131d2ae55f6d12b6c28ce56a561",
+ "url": "https://api.github.com/repos/psalm/psalm-plugin-symfony/zipball/5dca17839a6d48766ac760b8aa6d1f6d12759b28",
+ "reference": "5dca17839a6d48766ac760b8aa6d1f6d12759b28",
"shasum": ""
},
"require": {
@@ -13279,9 +14261,9 @@
"description": "Psalm Plugin for Symfony",
"support": {
"issues": "https://github.com/psalm/psalm-plugin-symfony/issues",
- "source": "https://github.com/psalm/psalm-plugin-symfony/tree/v3.1.9"
+ "source": "https://github.com/psalm/psalm-plugin-symfony/tree/v3.1.10"
},
- "time": "2022-09-12T13:01:42+00:00"
+ "time": "2022-10-22T13:09:05+00:00"
},
{
"name": "roave/security-advisories",
@@ -13289,12 +14271,12 @@
"source": {
"type": "git",
"url": "https://github.com/Roave/SecurityAdvisories.git",
- "reference": "264a5085afd6e127daba3f47751fa971d3c29c3d"
+ "reference": "3adb9cc9ab821d31bcb426ee3cad4c865899349a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/264a5085afd6e127daba3f47751fa971d3c29c3d",
- "reference": "264a5085afd6e127daba3f47751fa971d3c29c3d",
+ "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/3adb9cc9ab821d31bcb426ee3cad4c865899349a",
+ "reference": "3adb9cc9ab821d31bcb426ee3cad4c865899349a",
"shasum": ""
},
"conflict": {
@@ -13315,7 +14297,9 @@
"appwrite/server-ce": "<0.11.1|>=0.12,<0.12.2",
"area17/twill": "<1.2.5|>=2,<2.5.3",
"asymmetricrypt/asymmetricrypt": ">=0,<9.9.99",
+ "awesome-support/awesome-support": "<=6.0.7",
"aws/aws-sdk-php": ">=3,<3.2.1",
+ "badaso/core": "<2.6.1",
"bagisto/bagisto": "<0.1.5",
"barrelstrength/sprout-base-email": "<1.2.7",
"barrelstrength/sprout-forms": "<3.9",
@@ -13340,11 +14324,11 @@
"cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
"cartalyst/sentry": "<=2.1.6",
"catfan/medoo": "<1.7.5",
- "centreon/centreon": "<20.10.7",
+ "centreon/centreon": "<21.4.16|>=21.10,<21.10.8|>=22,<22.4.1",
"cesnet/simplesamlphp-module-proxystatistics": "<3.1",
"codeception/codeception": "<3.1.3|>=4,<4.1.22",
"codeigniter/framework": "<=3.0.6",
- "codeigniter4/framework": "<4.1.9",
+ "codeigniter4/framework": "<4.2.7",
"codeigniter4/shield": "= 1.0.0-beta",
"codiad/codiad": "<=2.8.4",
"composer/composer": "<1.10.26|>=2-alpha.1,<2.2.12|>=2.3,<2.3.5",
@@ -13356,7 +14340,7 @@
"contao/core-bundle": "<4.9.18|>=4.10,<4.11.7|>=4.13,<4.13.3|= 4.10.0",
"contao/listing-bundle": ">=4,<4.4.8",
"contao/managed-edition": "<=1.5",
- "craftcms/cms": "<3.7.36",
+ "craftcms/cms": "<3.7.55.2|>= 4.0.0-RC1, < 4.2.1",
"croogo/croogo": "<3.0.7",
"cuyz/valinor": "<0.12",
"czproject/git-php": "<4.0.3",
@@ -13375,7 +14359,7 @@
"doctrine/mongodb-odm-bundle": ">=2,<3.0.1",
"doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4",
"dolibarr/dolibarr": "<16|= 12.0.5|>= 3.3.beta1, < 13.0.2",
- "dompdf/dompdf": "<2",
+ "dompdf/dompdf": "<2.0.1",
"drupal/core": ">=7,<7.91|>=8,<9.3.19|>=9.4,<9.4.3",
"drupal/drupal": ">=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4",
"dweeves/magmi": "<=0.7.24",
@@ -13408,7 +14392,7 @@
"facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2",
"facturascripts/facturascripts": "<=2022.8",
"feehi/cms": "<=2.1.1",
- "feehi/feehicms": "<=0.1.3",
+ "feehi/feehicms": "<=2.0.1.1",
"fenom/fenom": "<=2.12.1",
"filegator/filegator": "<7.8",
"firebase/php-jwt": "<2",
@@ -13432,7 +14416,7 @@
"gaoming13/wechat-php-sdk": "<=1.10.2",
"genix/cms": "<=1.1.11",
"getgrav/grav": "<1.7.34",
- "getkirby/cms": "<3.5.8.1|>=3.6,<3.6.6.1|>=3.7,<3.7.4",
+ "getkirby/cms": "= 3.8.0|<3.5.8.2|>=3.6,<3.6.6.2|>=3.7,<3.7.5.1",
"getkirby/panel": "<2.5.14",
"getkirby/starterkit": "<=3.7.0.2",
"gilacms/gila": "<=1.11.4",
@@ -13471,6 +14455,7 @@
"joomla/filter": "<1.4.4|>=2,<2.0.1",
"joomla/input": ">=2,<2.0.2",
"joomla/session": "<1.3.1",
+ "joyqi/hyper-down": "<=2.4.27",
"jsdecena/laracom": "<2.0.9",
"jsmitty12/phpwhois": "<5.1",
"kazist/phpwhois": "<=4.2.6",
@@ -13492,7 +14477,7 @@
"league/commonmark": "<0.18.3",
"league/flysystem": "<1.1.4|>=2,<2.1.1",
"lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3",
- "librenms/librenms": "<22.4",
+ "librenms/librenms": "<=22.8",
"limesurvey/limesurvey": "<3.27.19",
"livehelperchat/livehelperchat": "<=3.91",
"livewire/livewire": ">2.2.4,<2.2.6",
@@ -13507,8 +14492,11 @@
"matyhtf/framework": "<3.0.6",
"mautic/core": "<4.3|= 2.13.1",
"mediawiki/core": ">=1.27,<1.27.6|>=1.29,<1.29.3|>=1.30,<1.30.2|>=1.31,<1.31.9|>=1.32,<1.32.6|>=1.32.99,<1.33.3|>=1.33.99,<1.34.3|>=1.34.99,<1.35",
+ "melisplatform/melis-asset-manager": "<5.0.1",
+ "melisplatform/melis-cms": "<5.0.1",
+ "melisplatform/melis-front": "<5.0.1",
"mezzio/mezzio-swoole": "<3.7|>=4,<4.3",
- "microweber/microweber": "<1.3.1",
+ "microweber/microweber": "<=1.3.1",
"miniorange/miniorange-saml": "<1.4.3",
"mittwald/typo3_forum": "<1.2.1",
"modx/revolution": "<= 2.8.3-pl|<2.8",
@@ -13536,7 +14524,7 @@
"october/cms": "= 1.1.1|= 1.0.471|= 1.0.469|>=1.0.319,<1.0.469",
"october/october": ">=1.0.319,<1.0.466|>=2.1,<2.1.12",
"october/rain": "<1.0.472|>=1.1,<1.1.2",
- "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.15",
+ "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.0.66",
"onelogin/php-saml": "<2.10.4",
"oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5",
"open-web-analytics/open-web-analytics": "<1.7.4",
@@ -13544,7 +14532,7 @@
"openid/php-openid": "<2.3",
"openmage/magento-lts": "<19.4.15|>=20,<20.0.13",
"orchid/platform": ">=9,<9.4.4",
- "oro/commerce": ">=5,<5.0.4",
+ "oro/commerce": ">=4.1,<5.0.6",
"oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7",
"oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<4.2.8",
"packbackbooks/lti-1-3-php-library": "<5",
@@ -13563,6 +14551,7 @@
"phpmailer/phpmailer": "<6.5",
"phpmussel/phpmussel": ">=1,<1.6",
"phpmyadmin/phpmyadmin": "<5.1.3",
+ "phpmyfaq/phpmyfaq": "<=3.1.7",
"phpoffice/phpexcel": "<1.8",
"phpoffice/phpspreadsheet": "<1.16",
"phpseclib/phpseclib": "<2.0.31|>=3,<3.0.7",
@@ -13571,13 +14560,13 @@
"phpwhois/phpwhois": "<=4.2.5",
"phpxmlrpc/extras": "<0.6.1",
"pimcore/data-hub": "<1.2.4",
- "pimcore/pimcore": "<10.5.6",
+ "pimcore/pimcore": "<10.5.9",
"pocketmine/bedrock-protocol": "<8.0.2",
"pocketmine/pocketmine-mp": "<4.7.2|>= 4.0.0-BETA5, < 4.4.2",
"pressbooks/pressbooks": "<5.18",
"prestashop/autoupgrade": ">=4,<4.10.1",
"prestashop/blockwishlist": ">=2,<2.1.1",
- "prestashop/contactform": ">1.0.1,<4.3",
+ "prestashop/contactform": ">=1.0.1,<4.3",
"prestashop/gamification": "<2.3.2",
"prestashop/prestashop": ">=1.6.0.10,<1.7.8.7",
"prestashop/productcomments": "<5.0.2",
@@ -13693,6 +14682,7 @@
"thelia/thelia": ">=2.1-beta.1,<2.1.3",
"theonedemon/phpwhois": "<=4.2.5",
"thinkcmf/thinkcmf": "<=5.1.7",
+ "thorsten/phpmyfaq": "<=3.1.7",
"tinymce/tinymce": "<5.10",
"titon/framework": ">=0,<9.9.99",
"topthink/framework": "<=6.0.13",
@@ -13700,7 +14690,7 @@
"topthink/thinkphp": "<=3.2.3",
"tribalsystems/zenario": "<9.2.55826",
"truckersmp/phpwhois": "<=4.3.1",
- "twig/twig": "<1.38|>=2,<2.14.11|>=3,<3.3.8",
+ "twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3",
"typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.38|>=9,<9.5.29|>=10,<10.4.32|>=11,<11.5.16",
"typo3/cms-backend": ">=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
"typo3/cms-core": ">=6.2,<=6.2.56|>=7,<7.6.58|>=8,<8.7.48|>=9,<9.5.37|>=10,<10.4.32|>=11,<11.5.16",
@@ -13724,14 +14714,14 @@
"webcoast/deferred-image-processing": "<1.0.2",
"wikimedia/parsoid": "<0.12.2",
"willdurand/js-translation-bundle": "<2.1.1",
- "wintercms/winter": "<1.0.475|>=1.1,<1.1.9",
+ "wintercms/winter": "<1.0.475|>=1.1,<1.1.10|>=1.2,<1.2.1",
"woocommerce/woocommerce": "<6.6",
"wp-cli/wp-cli": "<2.5",
"wp-graphql/wp-graphql": "<0.3.5",
"wpanel/wpanel4-cms": "<=4.3.1",
"wwbn/avideo": "<=11.6",
"yeswiki/yeswiki": "<4.1",
- "yetiforce/yetiforce-crm": "<6.4",
+ "yetiforce/yetiforce-crm": "<=6.4",
"yidashi/yii2cmf": "<=2",
"yii2mod/yii2-cms": "<1.9.2",
"yiisoft/yii": ">=1.1.14,<1.1.15",
@@ -13805,7 +14795,7 @@
"type": "tidelift"
}
],
- "time": "2022-09-16T22:04:31+00:00"
+ "time": "2022-10-29T01:33:46+00:00"
},
{
"name": "sebastian/diff",
@@ -14026,16 +15016,16 @@
},
{
"name": "symfony/dom-crawler",
- "version": "v5.4.12",
+ "version": "v5.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "291c1e92281a09152dda089f782e23dedd34bd4f"
+ "reference": "b8fd0ff9a0f00d944f1534f6d21e84f92eda7258"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/291c1e92281a09152dda089f782e23dedd34bd4f",
- "reference": "291c1e92281a09152dda089f782e23dedd34bd4f",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/b8fd0ff9a0f00d944f1534f6d21e84f92eda7258",
+ "reference": "b8fd0ff9a0f00d944f1534f6d21e84f92eda7258",
"shasum": ""
},
"require": {
@@ -14081,7 +15071,7 @@
"description": "Eases DOM navigation for HTML and XML documents",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dom-crawler/tree/v5.4.12"
+ "source": "https://github.com/symfony/dom-crawler/tree/v5.4.15"
},
"funding": [
{
@@ -14097,7 +15087,7 @@
"type": "tidelift"
}
],
- "time": "2022-08-03T13:09:21+00:00"
+ "time": "2022-10-27T08:04:35+00:00"
},
{
"name": "symfony/maker-bundle",
@@ -14192,16 +15182,16 @@
},
{
"name": "symfony/phpunit-bridge",
- "version": "v5.4.11",
+ "version": "v5.4.14",
"source": {
"type": "git",
"url": "https://github.com/symfony/phpunit-bridge.git",
- "reference": "31b1549f54b1a1890e725a0c1c8c2de6ef2205b3"
+ "reference": "684084f74504c234462fafe6f5eea003a73e7e75"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/31b1549f54b1a1890e725a0c1c8c2de6ef2205b3",
- "reference": "31b1549f54b1a1890e725a0c1c8c2de6ef2205b3",
+ "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/684084f74504c234462fafe6f5eea003a73e7e75",
+ "reference": "684084f74504c234462fafe6f5eea003a73e7e75",
"shasum": ""
},
"require": {
@@ -14255,7 +15245,7 @@
"description": "Provides utilities for PHPUnit, especially user deprecation notices management",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/phpunit-bridge/tree/v5.4.11"
+ "source": "https://github.com/symfony/phpunit-bridge/tree/v5.4.14"
},
"funding": [
{
@@ -14271,20 +15261,20 @@
"type": "tidelift"
}
],
- "time": "2022-07-28T13:33:28+00:00"
+ "time": "2022-10-07T08:01:20+00:00"
},
{
"name": "symfony/web-profiler-bundle",
- "version": "v5.4.10",
+ "version": "v5.4.14",
"source": {
"type": "git",
"url": "https://github.com/symfony/web-profiler-bundle.git",
- "reference": "f61c99d8dbd864b11935851b598f784bcff36fc7"
+ "reference": "e41ebd5411908bc8afdc848ccf68918ecb243c02"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/f61c99d8dbd864b11935851b598f784bcff36fc7",
- "reference": "f61c99d8dbd864b11935851b598f784bcff36fc7",
+ "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/e41ebd5411908bc8afdc848ccf68918ecb243c02",
+ "reference": "e41ebd5411908bc8afdc848ccf68918ecb243c02",
"shasum": ""
},
"require": {
@@ -14335,7 +15325,7 @@
"description": "Provides a development tool that gives detailed information about the execution of any request",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.10"
+ "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.14"
},
"funding": [
{
@@ -14351,20 +15341,20 @@
"type": "tidelift"
}
],
- "time": "2022-06-06T19:10:58+00:00"
+ "time": "2022-10-01T21:59:28+00:00"
},
{
"name": "symplify/easy-coding-standard",
- "version": "11.1.9",
+ "version": "11.1.16",
"source": {
"type": "git",
"url": "https://github.com/symplify/easy-coding-standard.git",
- "reference": "65341819f0f518b5f424a57736e9b0e9c5a9202f"
+ "reference": "32ebd57f0f47713540df8ea39134adaa9d912fae"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symplify/easy-coding-standard/zipball/65341819f0f518b5f424a57736e9b0e9c5a9202f",
- "reference": "65341819f0f518b5f424a57736e9b0e9c5a9202f",
+ "url": "https://api.github.com/repos/symplify/easy-coding-standard/zipball/32ebd57f0f47713540df8ea39134adaa9d912fae",
+ "reference": "32ebd57f0f47713540df8ea39134adaa9d912fae",
"shasum": ""
},
"require": {
@@ -14394,7 +15384,7 @@
],
"description": "Prefixed scoped version of ECS package",
"support": {
- "source": "https://github.com/symplify/easy-coding-standard/tree/11.1.9"
+ "source": "https://github.com/symplify/easy-coding-standard/tree/11.1.16"
},
"funding": [
{
@@ -14406,20 +15396,20 @@
"type": "github"
}
],
- "time": "2022-09-02T10:10:26+00:00"
+ "time": "2022-10-27T10:48:13+00:00"
},
{
"name": "vimeo/psalm",
- "version": "4.27.0",
+ "version": "4.29.0",
"source": {
"type": "git",
"url": "https://github.com/vimeo/psalm.git",
- "reference": "faf106e717c37b8c81721845dba9de3d8deed8ff"
+ "reference": "7ec5ffbd5f68ae03782d7fd33fff0c45a69f95b3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vimeo/psalm/zipball/faf106e717c37b8c81721845dba9de3d8deed8ff",
- "reference": "faf106e717c37b8c81721845dba9de3d8deed8ff",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/7ec5ffbd5f68ae03782d7fd33fff0c45a69f95b3",
+ "reference": "7ec5ffbd5f68ae03782d7fd33fff0c45a69f95b3",
"shasum": ""
},
"require": {
@@ -14458,6 +15448,7 @@
"phpdocumentor/reflection-docblock": "^5",
"phpmyadmin/sql-parser": "5.1.0||dev-master",
"phpspec/prophecy": ">=1.9.0",
+ "phpstan/phpdoc-parser": "1.2.* || 1.6.4",
"phpunit/phpunit": "^9.0",
"psalm/plugin-phpunit": "^0.16",
"slevomat/coding-standard": "^7.0",
@@ -14511,9 +15502,9 @@
],
"support": {
"issues": "https://github.com/vimeo/psalm/issues",
- "source": "https://github.com/vimeo/psalm/tree/4.27.0"
+ "source": "https://github.com/vimeo/psalm/tree/4.29.0"
},
- "time": "2022-08-31T13:47:09+00:00"
+ "time": "2022-10-11T17:09:17+00:00"
},
{
"name": "webmozart/path-util",
@@ -14571,7 +15562,6 @@
"minimum-stability": "stable",
"stability-flags": {
"florianv/swap-bundle": 20,
- "r/u2f-two-factor-bundle": 20,
"roave/security-advisories": 20
},
"prefer-stable": false,
diff --git a/config/bundles.php b/config/bundles.php
index f08122e3..8ca67ae7 100644
--- a/config/bundles.php
+++ b/config/bundles.php
@@ -23,6 +23,8 @@ return [
Florianv\SwapBundle\FlorianvSwapBundle::class => ['all' => true],
Nelmio\SecurityBundle\NelmioSecurityBundle::class => ['all' => true],
Symfony\UX\Turbo\TurboBundle::class => ['all' => true],
+ Jbtronics\TFAWebauthn\TFAWebauthnBundle::class => ['all' => true],
Scheb\TwoFactorBundle\SchebTwoFactorBundle::class => ['all' => true],
- R\U2FTwoFactorBundle\RU2FTwoFactorBundle::class => ['all' => true],
+ SpomkyLabs\CborBundle\SpomkyLabsCborBundle::class => ['all' => true],
+ Webauthn\Bundle\WebauthnBundle::class => ['all' => true],
];
diff --git a/config/packages/r_u2f_two_factor.yaml b/config/packages/r_u2f_two_factor.yaml
deleted file mode 100644
index d3b962b2..00000000
--- a/config/packages/r_u2f_two_factor.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-ru2_f_two_factor:
- formTemplate: "/security/U2F/u2f_login.html.twig"
- registerTemplate: "/security/U2F/u2f_register.html.twig"
- authCodeParameter: _auth_code
\ No newline at end of file
diff --git a/config/packages/scheb_2fa.yaml b/config/packages/scheb_2fa.yaml
index 9ba0ed41..f58bdacc 100644
--- a/config/packages/scheb_2fa.yaml
+++ b/config/packages/scheb_2fa.yaml
@@ -25,4 +25,4 @@ scheb_two_factor:
# If you're using guard-based authentication, you have to use this one:
# - Symfony\Component\Security\Guard\Token\PostAuthenticationGuardToken
# If you're using authenticator-based security (introduced in Symfony 5.1), you have to use this one:
- # - Symfony\Component\Security\Http\Authenticator\Token\PostAuthenticationToken
+ # - Symfony\Component\Security\Http\Authenticator\Token\PostAuthenticationToken
\ No newline at end of file
diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml
index 0c4492af..1e2104c2 100644
--- a/config/packages/twig.yaml
+++ b/config/packages/twig.yaml
@@ -16,6 +16,7 @@ twig:
error_page_admin_email: '%partdb.error_pages.admin_email%'
error_page_show_help: '%partdb.error_pages.show_help%'
sidebar_items: '%partdb.sidebar.items%'
+ sidebar_tree_updater: '@App\Services\Trees\SidebarTreeUpdater'
when@test:
twig:
diff --git a/config/packages/webauthn_2fa.yaml b/config/packages/webauthn_2fa.yaml
new file mode 100644
index 00000000..9a177105
--- /dev/null
+++ b/config/packages/webauthn_2fa.yaml
@@ -0,0 +1,5 @@
+tfa_webauthn:
+ enabled: true
+ template: security/Webauthn/webauthn_login.html.twig
+
+ rpName: '%partdb.title%'
diff --git a/config/routes/scheb_2fa.yaml b/config/routes/scheb_2fa.yaml
index c0b47b5e..21f90fca 100644
--- a/config/routes/scheb_2fa.yaml
+++ b/config/routes/scheb_2fa.yaml
@@ -4,8 +4,4 @@
_controller: "scheb_two_factor.form_controller::form"
2fa_login_check:
- path: /{_locale}/2fa_check
-
-r_u2f_register:
- resource: "@RU2FTwoFactorBundle/Resources/config/routing.yml"
- prefix: /{_locale}/user
\ No newline at end of file
+ path: /{_locale}/2fa_check
\ No newline at end of file
diff --git a/migrations/Version20220925162725.php b/migrations/Version20220925162725.php
new file mode 100644
index 00000000..52caa2a9
--- /dev/null
+++ b/migrations/Version20220925162725.php
@@ -0,0 +1,535 @@
+addSql('ALTER TABLE attachments ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE attachment_types ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE categories ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE currencies ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE devices ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE device_parts ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE footprints ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE `groups` ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE label_profiles ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE log ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE manufacturers ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE measurement_units ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE migration_versions ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE orderdetails ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE parameters ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE parts ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE part_lots ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE pricedetails ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE storelocations ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE suppliers ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE u2f_keys ROW_FORMAT=DYNAMIC');
+ $this->addSql('ALTER TABLE users ROW_FORMAT=DYNAMIC');
+
+ //Normalize charset encoding for all tables, as old installations might have different encodings
+ $this->addSql('ALTER TABLE attachments convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE attachment_types convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE categories convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE currencies convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE devices convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE device_parts convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE footprints convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE `groups` convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE label_profiles convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE log convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE manufacturers convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE measurement_units convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE migration_versions convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE orderdetails convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE parameters convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE parts convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE part_lots convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE pricedetails convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE storelocations convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE suppliers convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE u2f_keys convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+ $this->addSql('ALTER TABLE users convert to character set utf8mb4 collate utf8mb4_unicode_ci');
+
+ // this up() migration is auto-generated, please modify it to your needs
+ $this->addSql('CREATE INDEX attachment_types_idx_name ON attachment_types (name)');
+ $this->addSql('CREATE INDEX attachment_types_idx_parent_name ON attachment_types (parent_id, name)');
+ $this->addSql('ALTER TABLE attachments CHANGE type_id type_id INT NOT NULL');
+ $this->addSql('CREATE INDEX attachments_idx_id_element_id_class_name ON attachments (id, element_id, class_name)');
+ $this->addSql('CREATE INDEX attachments_idx_class_name_id ON attachments (class_name, id)');
+ $this->addSql('CREATE INDEX attachment_name_idx ON attachments (name)');
+ $this->addSql('CREATE INDEX attachment_element_idx ON attachments (class_name, element_id)');
+ $this->addSql('ALTER TABLE categories CHANGE partname_regex partname_regex LONGTEXT NOT NULL, CHANGE partname_hint partname_hint LONGTEXT NOT NULL, CHANGE default_description default_description LONGTEXT NOT NULL, CHANGE default_comment default_comment LONGTEXT NOT NULL');
+ $this->addSql('CREATE INDEX category_idx_name ON categories (name)');
+ $this->addSql('CREATE INDEX category_idx_parent_name ON categories (parent_id, name)');
+ $this->addSql('ALTER TABLE currencies CHANGE exchange_rate exchange_rate NUMERIC(11, 5) DEFAULT NULL COMMENT \'(DC2Type:big_decimal)\'');
+ $this->addSql('CREATE INDEX currency_idx_name ON currencies (name)');
+ $this->addSql('CREATE INDEX currency_idx_parent_name ON currencies (parent_id, name)');
+ $this->addSql('ALTER TABLE device_parts CHANGE mountnames mountnames LONGTEXT NOT NULL');
+ $this->addSql('CREATE INDEX footprint_idx_name ON footprints (name)');
+ $this->addSql('CREATE INDEX footprint_idx_parent_name ON footprints (parent_id, name)');
+ $this->addSql('CREATE INDEX group_idx_name ON `groups` (name)');
+ $this->addSql('CREATE INDEX group_idx_parent_name ON `groups` (parent_id, name)');
+ $this->addSql('ALTER TABLE log CHANGE level level TINYINT(4) NOT NULL');
+ $this->addSql('CREATE INDEX log_idx_type ON log (type)');
+ $this->addSql('CREATE INDEX log_idx_type_target ON log (type, target_type, target_id)');
+ $this->addSql('CREATE INDEX log_idx_datetime ON log (datetime)');
+ $this->addSql('CREATE INDEX manufacturer_name ON manufacturers (name)');
+ $this->addSql('CREATE INDEX manufacturer_idx_parent_name ON manufacturers (parent_id, name)');
+ $this->addSql('CREATE INDEX unit_idx_name ON measurement_units (name)');
+ $this->addSql('CREATE INDEX unit_idx_parent_name ON measurement_units (parent_id, name)');
+ $this->addSql('CREATE INDEX orderdetails_supplier_part_nr ON orderdetails (supplierpartnr)');
+ $this->addSql('CREATE INDEX parameter_name_idx ON parameters (name)');
+ $this->addSql('CREATE INDEX parameter_group_idx ON parameters (param_group)');
+ $this->addSql('CREATE INDEX parameter_type_element_idx ON parameters (type, element_id)');
+ $this->addSql('CREATE INDEX part_lots_idx_instock_un_expiration_id_part ON part_lots (instock_unknown, expiration_date, id_part)');
+ $this->addSql('CREATE INDEX part_lots_idx_needs_refill ON part_lots (needs_refill)');
+ $this->addSql('ALTER TABLE parts CHANGE description description LONGTEXT NOT NULL, CHANGE comment comment LONGTEXT NOT NULL');
+ $this->addSql('CREATE INDEX parts_idx_datet_name_last_id_needs ON parts (datetime_added, name, last_modified, id, needs_review)');
+ $this->addSql('CREATE INDEX parts_idx_name ON parts (name)');
+ $this->addSql('ALTER TABLE pricedetails CHANGE price price NUMERIC(11, 5) NOT NULL COMMENT \'(DC2Type:big_decimal)\'');
+ $this->addSql('CREATE INDEX pricedetails_idx_min_discount ON pricedetails (min_discount_quantity)');
+ $this->addSql('CREATE INDEX pricedetails_idx_min_discount_price_qty ON pricedetails (min_discount_quantity, price_related_quantity)');
+ $this->addSql('CREATE INDEX location_idx_name ON storelocations (name)');
+ $this->addSql('CREATE INDEX location_idx_parent_name ON storelocations (parent_id, name)');
+ $this->addSql('ALTER TABLE suppliers CHANGE shipping_costs shipping_costs NUMERIC(11, 5) DEFAULT NULL COMMENT \'(DC2Type:big_decimal)\'');
+ $this->addSql('CREATE INDEX supplier_idx_name ON suppliers (name)');
+ $this->addSql('CREATE INDEX supplier_idx_parent_name ON suppliers (parent_id, name)');
+ $this->addSql('ALTER TABLE users CHANGE config_instock_comment_w config_instock_comment_w LONGTEXT NOT NULL, CHANGE config_instock_comment_a config_instock_comment_a LONGTEXT NOT NULL');
+ $this->addSql('CREATE INDEX user_idx_username ON users (name)');
+ }
+
+ public function mySQLDown(Schema $schema): void
+ {
+ $this->addSql('DROP INDEX attachments_idx_id_element_id_class_name ON `attachments`');
+ $this->addSql('DROP INDEX attachments_idx_class_name_id ON `attachments`');
+ $this->addSql('DROP INDEX attachment_name_idx ON `attachments`');
+ $this->addSql('DROP INDEX attachment_element_idx ON `attachments`');
+ $this->addSql('ALTER TABLE `attachments` CHANGE type_id type_id INT DEFAULT NULL');
+ $this->addSql('DROP INDEX attachment_types_idx_name ON `attachment_types`');
+ $this->addSql('DROP INDEX attachment_types_idx_parent_name ON `attachment_types`');
+ $this->addSql('DROP INDEX category_idx_name ON `categories`');
+ $this->addSql('DROP INDEX category_idx_parent_name ON `categories`');
+ $this->addSql('ALTER TABLE `categories` CHANGE partname_hint partname_hint TEXT NOT NULL, CHANGE partname_regex partname_regex TEXT NOT NULL, CHANGE default_description default_description TEXT NOT NULL, CHANGE default_comment default_comment TEXT NOT NULL');
+ $this->addSql('DROP INDEX currency_idx_name ON currencies');
+ $this->addSql('DROP INDEX currency_idx_parent_name ON currencies');
+ $this->addSql('ALTER TABLE currencies CHANGE exchange_rate exchange_rate NUMERIC(11, 5) DEFAULT NULL');
+ $this->addSql('ALTER TABLE `device_parts` CHANGE mountnames mountnames MEDIUMTEXT NOT NULL');
+ $this->addSql('DROP INDEX footprint_idx_name ON `footprints`');
+ $this->addSql('DROP INDEX footprint_idx_parent_name ON `footprints`');
+ $this->addSql('DROP INDEX group_idx_name ON `groups`');
+ $this->addSql('DROP INDEX group_idx_parent_name ON `groups`');
+ $this->addSql('DROP INDEX log_idx_type ON log');
+ $this->addSql('DROP INDEX log_idx_type_target ON log');
+ $this->addSql('DROP INDEX log_idx_datetime ON log');
+ $this->addSql('ALTER TABLE log CHANGE level level TINYINT(1) NOT NULL');
+ $this->addSql('DROP INDEX manufacturer_name ON `manufacturers`');
+ $this->addSql('DROP INDEX manufacturer_idx_parent_name ON `manufacturers`');
+ $this->addSql('DROP INDEX unit_idx_name ON `measurement_units`');
+ $this->addSql('DROP INDEX unit_idx_parent_name ON `measurement_units`');
+ $this->addSql('DROP INDEX orderdetails_supplier_part_nr ON `orderdetails`');
+ $this->addSql('DROP INDEX parameter_name_idx ON parameters');
+ $this->addSql('DROP INDEX parameter_group_idx ON parameters');
+ $this->addSql('DROP INDEX parameter_type_element_idx ON parameters');
+ $this->addSql('DROP INDEX parts_idx_datet_name_last_id_needs ON `parts`');
+ $this->addSql('DROP INDEX parts_idx_name ON `parts`');
+ $this->addSql('ALTER TABLE `parts` CHANGE description description MEDIUMTEXT NOT NULL, CHANGE comment comment MEDIUMTEXT NOT NULL');
+ $this->addSql('DROP INDEX part_lots_idx_instock_un_expiration_id_part ON part_lots');
+ $this->addSql('DROP INDEX part_lots_idx_needs_refill ON part_lots');
+ $this->addSql('DROP INDEX pricedetails_idx_min_discount ON `pricedetails`');
+ $this->addSql('DROP INDEX pricedetails_idx_min_discount_price_qty ON `pricedetails`');
+ $this->addSql('ALTER TABLE `pricedetails` CHANGE price price NUMERIC(11, 5) NOT NULL');
+ $this->addSql('DROP INDEX location_idx_name ON `storelocations`');
+ $this->addSql('DROP INDEX location_idx_parent_name ON `storelocations`');
+ $this->addSql('DROP INDEX supplier_idx_name ON `suppliers`');
+ $this->addSql('DROP INDEX supplier_idx_parent_name ON `suppliers`');
+ $this->addSql('ALTER TABLE `suppliers` CHANGE shipping_costs shipping_costs NUMERIC(11, 5) DEFAULT NULL');
+ $this->addSql('DROP INDEX user_idx_username ON `users`');
+ $this->addSql('ALTER TABLE `users` CHANGE config_instock_comment_a config_instock_comment_a TEXT NOT NULL, CHANGE config_instock_comment_w config_instock_comment_w TEXT NOT NULL');
+ }
+
+ public function sqLiteUp(Schema $schema): void
+ {
+ $this->addSql('CREATE TEMPORARY TABLE __temp__attachment_types AS SELECT id, parent_id, id_preview_attachement, filetype_filter, comment, not_selectable, name, last_modified, datetime_added FROM attachment_types');
+ $this->addSql('DROP TABLE attachment_types');
+ $this->addSql('CREATE TABLE attachment_types (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, filetype_filter CLOB NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, CONSTRAINT FK_EFAED719727ACA70 FOREIGN KEY (parent_id) REFERENCES "attachment_types" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_EFAED7196DEDCEC2 FOREIGN KEY (id_preview_attachement) REFERENCES "attachments" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO attachment_types (id, parent_id, id_preview_attachement, filetype_filter, comment, not_selectable, name, last_modified, datetime_added) SELECT id, parent_id, id_preview_attachement, filetype_filter, comment, not_selectable, name, last_modified, datetime_added FROM __temp__attachment_types');
+ $this->addSql('DROP TABLE __temp__attachment_types');
+ $this->addSql('CREATE INDEX IDX_EFAED7196DEDCEC2 ON attachment_types (id_preview_attachement)');
+ $this->addSql('CREATE INDEX IDX_EFAED719727ACA70 ON attachment_types (parent_id)');
+ $this->addSql('CREATE INDEX attachment_types_idx_name ON attachment_types (name)');
+ $this->addSql('CREATE INDEX attachment_types_idx_parent_name ON attachment_types (parent_id, name)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__attachments AS SELECT id, type_id, original_filename, path, show_in_table, name, last_modified, datetime_added, class_name, element_id FROM attachments');
+ $this->addSql('DROP TABLE attachments');
+ $this->addSql('CREATE TABLE attachments (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, type_id INTEGER NOT NULL, original_filename VARCHAR(255) DEFAULT NULL, path VARCHAR(255) NOT NULL, show_in_table BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, class_name VARCHAR(255) NOT NULL, element_id INTEGER NOT NULL, CONSTRAINT FK_47C4FAD6C54C8C93 FOREIGN KEY (type_id) REFERENCES "attachment_types" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO attachments (id, type_id, original_filename, path, show_in_table, name, last_modified, datetime_added, class_name, element_id) SELECT id, type_id, original_filename, path, show_in_table, name, last_modified, datetime_added, class_name, element_id FROM __temp__attachments');
+ $this->addSql('DROP TABLE __temp__attachments');
+ $this->addSql('CREATE INDEX IDX_47C4FAD61F1F2A24 ON attachments (element_id)');
+ $this->addSql('CREATE INDEX IDX_47C4FAD6C54C8C93 ON attachments (type_id)');
+ $this->addSql('CREATE INDEX attachments_idx_id_element_id_class_name ON attachments (id, element_id, class_name)');
+ $this->addSql('CREATE INDEX attachments_idx_class_name_id ON attachments (class_name, id)');
+ $this->addSql('CREATE INDEX attachment_name_idx ON attachments (name)');
+ $this->addSql('CREATE INDEX attachment_element_idx ON attachments (class_name, element_id)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__categories AS SELECT id, parent_id, id_preview_attachement, partname_hint, partname_regex, disable_footprints, disable_manufacturers, disable_autodatasheets, disable_properties, default_description, default_comment, comment, not_selectable, name, last_modified, datetime_added FROM categories');
+ $this->addSql('DROP TABLE categories');
+ $this->addSql('CREATE TABLE categories (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, partname_hint CLOB NOT NULL, partname_regex CLOB NOT NULL, disable_footprints BOOLEAN NOT NULL, disable_manufacturers BOOLEAN NOT NULL, disable_autodatasheets BOOLEAN NOT NULL, disable_properties BOOLEAN NOT NULL, default_description CLOB NOT NULL, default_comment CLOB NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, CONSTRAINT FK_3AF34668727ACA70 FOREIGN KEY (parent_id) REFERENCES "categories" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_3AF346686DEDCEC2 FOREIGN KEY (id_preview_attachement) REFERENCES "attachments" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO categories (id, parent_id, id_preview_attachement, partname_hint, partname_regex, disable_footprints, disable_manufacturers, disable_autodatasheets, disable_properties, default_description, default_comment, comment, not_selectable, name, last_modified, datetime_added) SELECT id, parent_id, id_preview_attachement, partname_hint, partname_regex, disable_footprints, disable_manufacturers, disable_autodatasheets, disable_properties, default_description, default_comment, comment, not_selectable, name, last_modified, datetime_added FROM __temp__categories');
+ $this->addSql('DROP TABLE __temp__categories');
+ $this->addSql('CREATE INDEX IDX_3AF346686DEDCEC2 ON categories (id_preview_attachement)');
+ $this->addSql('CREATE INDEX IDX_3AF34668727ACA70 ON categories (parent_id)');
+ $this->addSql('CREATE INDEX category_idx_name ON categories (name)');
+ $this->addSql('CREATE INDEX category_idx_parent_name ON categories (parent_id, name)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__currencies AS SELECT id, parent_id, id_preview_attachement, exchange_rate, iso_code, comment, not_selectable, name, last_modified, datetime_added FROM currencies');
+ $this->addSql('DROP TABLE currencies');
+ $this->addSql('CREATE TABLE currencies (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, exchange_rate NUMERIC(11, 5) DEFAULT NULL --(DC2Type:big_decimal)
+ , iso_code VARCHAR(255) NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, CONSTRAINT FK_37C44693727ACA70 FOREIGN KEY (parent_id) REFERENCES currencies (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_37C446936DEDCEC2 FOREIGN KEY (id_preview_attachement) REFERENCES "attachments" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO currencies (id, parent_id, id_preview_attachement, exchange_rate, iso_code, comment, not_selectable, name, last_modified, datetime_added) SELECT id, parent_id, id_preview_attachement, exchange_rate, iso_code, comment, not_selectable, name, last_modified, datetime_added FROM __temp__currencies');
+ $this->addSql('DROP TABLE __temp__currencies');
+ $this->addSql('CREATE INDEX IDX_37C446936DEDCEC2 ON currencies (id_preview_attachement)');
+ $this->addSql('CREATE INDEX IDX_37C44693727ACA70 ON currencies (parent_id)');
+ $this->addSql('CREATE INDEX currency_idx_name ON currencies (name)');
+ $this->addSql('CREATE INDEX currency_idx_parent_name ON currencies (parent_id, name)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__device_parts AS SELECT id, id_device, id_part, quantity, mountnames FROM device_parts');
+ $this->addSql('DROP TABLE device_parts');
+ $this->addSql('CREATE TABLE device_parts (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, id_device INTEGER DEFAULT NULL, id_part INTEGER DEFAULT NULL, quantity INTEGER NOT NULL, mountnames CLOB NOT NULL, CONSTRAINT FK_AFC547992F180363 FOREIGN KEY (id_device) REFERENCES "devices" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_AFC54799C22F6CC4 FOREIGN KEY (id_part) REFERENCES "parts" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO device_parts (id, id_device, id_part, quantity, mountnames) SELECT id, id_device, id_part, quantity, mountnames FROM __temp__device_parts');
+ $this->addSql('DROP TABLE __temp__device_parts');
+ $this->addSql('CREATE INDEX IDX_AFC54799C22F6CC4 ON device_parts (id_part)');
+ $this->addSql('CREATE INDEX IDX_AFC547992F180363 ON device_parts (id_device)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__devices AS SELECT id, parent_id, id_preview_attachement, order_quantity, order_only_missing_parts, comment, not_selectable, name, last_modified, datetime_added FROM devices');
+ $this->addSql('DROP TABLE devices');
+ $this->addSql('CREATE TABLE devices (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, order_quantity INTEGER NOT NULL, order_only_missing_parts BOOLEAN NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, CONSTRAINT FK_11074E9A727ACA70 FOREIGN KEY (parent_id) REFERENCES "devices" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_11074E9A6DEDCEC2 FOREIGN KEY (id_preview_attachement) REFERENCES "attachments" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO devices (id, parent_id, id_preview_attachement, order_quantity, order_only_missing_parts, comment, not_selectable, name, last_modified, datetime_added) SELECT id, parent_id, id_preview_attachement, order_quantity, order_only_missing_parts, comment, not_selectable, name, last_modified, datetime_added FROM __temp__devices');
+ $this->addSql('DROP TABLE __temp__devices');
+ $this->addSql('CREATE INDEX IDX_11074E9A6DEDCEC2 ON devices (id_preview_attachement)');
+ $this->addSql('CREATE INDEX IDX_11074E9A727ACA70 ON devices (parent_id)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__footprints AS SELECT id, parent_id, id_footprint_3d, id_preview_attachement, comment, not_selectable, name, last_modified, datetime_added FROM footprints');
+ $this->addSql('DROP TABLE footprints');
+ $this->addSql('CREATE TABLE footprints (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, id_footprint_3d INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, CONSTRAINT FK_A34D68A2727ACA70 FOREIGN KEY (parent_id) REFERENCES "footprints" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_A34D68A232A38C34 FOREIGN KEY (id_footprint_3d) REFERENCES "attachments" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_A34D68A26DEDCEC2 FOREIGN KEY (id_preview_attachement) REFERENCES "attachments" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO footprints (id, parent_id, id_footprint_3d, id_preview_attachement, comment, not_selectable, name, last_modified, datetime_added) SELECT id, parent_id, id_footprint_3d, id_preview_attachement, comment, not_selectable, name, last_modified, datetime_added FROM __temp__footprints');
+ $this->addSql('DROP TABLE __temp__footprints');
+ $this->addSql('CREATE INDEX IDX_A34D68A26DEDCEC2 ON footprints (id_preview_attachement)');
+ $this->addSql('CREATE INDEX IDX_A34D68A232A38C34 ON footprints (id_footprint_3d)');
+ $this->addSql('CREATE INDEX IDX_A34D68A2727ACA70 ON footprints (parent_id)');
+ $this->addSql('CREATE INDEX footprint_idx_name ON footprints (name)');
+ $this->addSql('CREATE INDEX footprint_idx_parent_name ON footprints (parent_id, name)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__groups AS SELECT id, parent_id, id_preview_attachement, enforce_2fa, comment, not_selectable, name, last_modified, datetime_added, perms_system, perms_groups, perms_users, perms_self, perms_system_config, perms_system_database, perms_parts, perms_parts_name, perms_parts_category, perms_parts_description, perms_parts_minamount, perms_parts_footprint, perms_parts_lots, perms_parts_tags, perms_parts_unit, perms_parts_mass, perms_parts_manufacturer, perms_parts_status, perms_parts_mpn, perms_parts_comment, perms_parts_order, perms_parts_orderdetails, perms_parts_prices, perms_parts_parameters, perms_parts_attachements, perms_devices, perms_devices_parts, perms_storelocations, perms_footprints, perms_categories, perms_suppliers, perms_manufacturers, perms_attachement_types, perms_currencies, perms_measurement_units, perms_tools, perms_labels FROM groups');
+ $this->addSql('DROP TABLE groups');
+ $this->addSql('CREATE TABLE groups (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, enforce_2fa BOOLEAN NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, perms_system INTEGER NOT NULL, perms_groups INTEGER NOT NULL, perms_users INTEGER NOT NULL, perms_self INTEGER NOT NULL, perms_system_config INTEGER NOT NULL, perms_system_database INTEGER NOT NULL, perms_parts BIGINT NOT NULL, perms_parts_name SMALLINT NOT NULL, perms_parts_category SMALLINT NOT NULL, perms_parts_description SMALLINT NOT NULL, perms_parts_minamount SMALLINT NOT NULL, perms_parts_footprint SMALLINT NOT NULL, perms_parts_lots SMALLINT NOT NULL, perms_parts_tags SMALLINT NOT NULL, perms_parts_unit SMALLINT NOT NULL, perms_parts_mass SMALLINT NOT NULL, perms_parts_manufacturer SMALLINT NOT NULL, perms_parts_status SMALLINT NOT NULL, perms_parts_mpn SMALLINT NOT NULL, perms_parts_comment SMALLINT NOT NULL, perms_parts_order SMALLINT NOT NULL, perms_parts_orderdetails SMALLINT NOT NULL, perms_parts_prices SMALLINT NOT NULL, perms_parts_parameters SMALLINT NOT NULL, perms_parts_attachements SMALLINT NOT NULL, perms_devices INTEGER NOT NULL, perms_devices_parts INTEGER NOT NULL, perms_storelocations INTEGER NOT NULL, perms_footprints INTEGER NOT NULL, perms_categories INTEGER NOT NULL, perms_suppliers INTEGER NOT NULL, perms_manufacturers INTEGER NOT NULL, perms_attachement_types INTEGER NOT NULL, perms_currencies INTEGER NOT NULL, perms_measurement_units INTEGER NOT NULL, perms_tools INTEGER NOT NULL, perms_labels INTEGER NOT NULL, CONSTRAINT FK_F06D3970727ACA70 FOREIGN KEY (parent_id) REFERENCES "groups" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_F06D39706DEDCEC2 FOREIGN KEY (id_preview_attachement) REFERENCES "attachments" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO groups (id, parent_id, id_preview_attachement, enforce_2fa, comment, not_selectable, name, last_modified, datetime_added, perms_system, perms_groups, perms_users, perms_self, perms_system_config, perms_system_database, perms_parts, perms_parts_name, perms_parts_category, perms_parts_description, perms_parts_minamount, perms_parts_footprint, perms_parts_lots, perms_parts_tags, perms_parts_unit, perms_parts_mass, perms_parts_manufacturer, perms_parts_status, perms_parts_mpn, perms_parts_comment, perms_parts_order, perms_parts_orderdetails, perms_parts_prices, perms_parts_parameters, perms_parts_attachements, perms_devices, perms_devices_parts, perms_storelocations, perms_footprints, perms_categories, perms_suppliers, perms_manufacturers, perms_attachement_types, perms_currencies, perms_measurement_units, perms_tools, perms_labels) SELECT id, parent_id, id_preview_attachement, enforce_2fa, comment, not_selectable, name, last_modified, datetime_added, perms_system, perms_groups, perms_users, perms_self, perms_system_config, perms_system_database, perms_parts, perms_parts_name, perms_parts_category, perms_parts_description, perms_parts_minamount, perms_parts_footprint, perms_parts_lots, perms_parts_tags, perms_parts_unit, perms_parts_mass, perms_parts_manufacturer, perms_parts_status, perms_parts_mpn, perms_parts_comment, perms_parts_order, perms_parts_orderdetails, perms_parts_prices, perms_parts_parameters, perms_parts_attachements, perms_devices, perms_devices_parts, perms_storelocations, perms_footprints, perms_categories, perms_suppliers, perms_manufacturers, perms_attachement_types, perms_currencies, perms_measurement_units, perms_tools, perms_labels FROM __temp__groups');
+ $this->addSql('DROP TABLE __temp__groups');
+ $this->addSql('CREATE INDEX IDX_F06D39706DEDCEC2 ON groups (id_preview_attachement)');
+ $this->addSql('CREATE INDEX IDX_F06D3970727ACA70 ON groups (parent_id)');
+ $this->addSql('CREATE INDEX group_idx_name ON groups (name)');
+ $this->addSql('CREATE INDEX group_idx_parent_name ON groups (parent_id, name)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__label_profiles AS SELECT id, id_preview_attachement, comment, show_in_dropdown, name, last_modified, datetime_added, options_width, options_height, options_barcode_type, options_picture_type, options_supported_element, options_additional_css, options_lines_mode, options_lines FROM label_profiles');
+ $this->addSql('DROP TABLE label_profiles');
+ $this->addSql('CREATE TABLE label_profiles (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, id_preview_attachement INTEGER DEFAULT NULL, comment CLOB NOT NULL, show_in_dropdown BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, options_width DOUBLE PRECISION NOT NULL, options_height DOUBLE PRECISION NOT NULL, options_barcode_type VARCHAR(255) NOT NULL, options_picture_type VARCHAR(255) NOT NULL, options_supported_element VARCHAR(255) NOT NULL, options_additional_css CLOB NOT NULL, options_lines_mode VARCHAR(255) NOT NULL, options_lines CLOB NOT NULL, CONSTRAINT FK_C93E9CF56DEDCEC2 FOREIGN KEY (id_preview_attachement) REFERENCES "attachments" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO label_profiles (id, id_preview_attachement, comment, show_in_dropdown, name, last_modified, datetime_added, options_width, options_height, options_barcode_type, options_picture_type, options_supported_element, options_additional_css, options_lines_mode, options_lines) SELECT id, id_preview_attachement, comment, show_in_dropdown, name, last_modified, datetime_added, options_width, options_height, options_barcode_type, options_picture_type, options_supported_element, options_additional_css, options_lines_mode, options_lines FROM __temp__label_profiles');
+ $this->addSql('DROP TABLE __temp__label_profiles');
+ $this->addSql('CREATE INDEX IDX_C93E9CF56DEDCEC2 ON label_profiles (id_preview_attachement)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__log AS SELECT id, id_user, datetime, level, target_id, target_type, extra, type FROM log');
+ $this->addSql('DROP TABLE log');
+ $this->addSql('CREATE TABLE log (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, id_user INTEGER NOT NULL, datetime DATETIME NOT NULL, level TINYINT(4) NOT NULL, target_id INTEGER NOT NULL, target_type SMALLINT NOT NULL, extra CLOB NOT NULL --(DC2Type:json)
+ , type SMALLINT NOT NULL, CONSTRAINT FK_8F3F68C56B3CA4B FOREIGN KEY (id_user) REFERENCES "users" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO log (id, id_user, datetime, level, target_id, target_type, extra, type) SELECT id, id_user, datetime, level, target_id, target_type, extra, type FROM __temp__log');
+ $this->addSql('DROP TABLE __temp__log');
+ $this->addSql('CREATE INDEX IDX_8F3F68C56B3CA4B ON log (id_user)');
+ $this->addSql('CREATE INDEX log_idx_type ON log (type)');
+ $this->addSql('CREATE INDEX log_idx_type_target ON log (type, target_type, target_id)');
+ $this->addSql('CREATE INDEX log_idx_datetime ON log (datetime)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__manufacturers AS SELECT id, parent_id, id_preview_attachement, address, phone_number, fax_number, email_address, website, auto_product_url, comment, not_selectable, name, last_modified, datetime_added FROM manufacturers');
+ $this->addSql('DROP TABLE manufacturers');
+ $this->addSql('CREATE TABLE manufacturers (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, address VARCHAR(255) NOT NULL, phone_number VARCHAR(255) NOT NULL, fax_number VARCHAR(255) NOT NULL, email_address VARCHAR(255) NOT NULL, website VARCHAR(255) NOT NULL, auto_product_url VARCHAR(255) NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, CONSTRAINT FK_94565B12727ACA70 FOREIGN KEY (parent_id) REFERENCES "manufacturers" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_94565B126DEDCEC2 FOREIGN KEY (id_preview_attachement) REFERENCES "attachments" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO manufacturers (id, parent_id, id_preview_attachement, address, phone_number, fax_number, email_address, website, auto_product_url, comment, not_selectable, name, last_modified, datetime_added) SELECT id, parent_id, id_preview_attachement, address, phone_number, fax_number, email_address, website, auto_product_url, comment, not_selectable, name, last_modified, datetime_added FROM __temp__manufacturers');
+ $this->addSql('DROP TABLE __temp__manufacturers');
+ $this->addSql('CREATE INDEX IDX_94565B126DEDCEC2 ON manufacturers (id_preview_attachement)');
+ $this->addSql('CREATE INDEX IDX_94565B12727ACA70 ON manufacturers (parent_id)');
+ $this->addSql('CREATE INDEX manufacturer_name ON manufacturers (name)');
+ $this->addSql('CREATE INDEX manufacturer_idx_parent_name ON manufacturers (parent_id, name)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__measurement_units AS SELECT id, parent_id, id_preview_attachement, unit, is_integer, use_si_prefix, comment, not_selectable, name, last_modified, datetime_added FROM measurement_units');
+ $this->addSql('DROP TABLE measurement_units');
+ $this->addSql('CREATE TABLE measurement_units (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, unit VARCHAR(255) DEFAULT NULL, is_integer BOOLEAN NOT NULL, use_si_prefix BOOLEAN NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, CONSTRAINT FK_F5AF83CF727ACA70 FOREIGN KEY (parent_id) REFERENCES "measurement_units" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_F5AF83CF6DEDCEC2 FOREIGN KEY (id_preview_attachement) REFERENCES "attachments" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO measurement_units (id, parent_id, id_preview_attachement, unit, is_integer, use_si_prefix, comment, not_selectable, name, last_modified, datetime_added) SELECT id, parent_id, id_preview_attachement, unit, is_integer, use_si_prefix, comment, not_selectable, name, last_modified, datetime_added FROM __temp__measurement_units');
+ $this->addSql('DROP TABLE __temp__measurement_units');
+ $this->addSql('CREATE INDEX IDX_F5AF83CF6DEDCEC2 ON measurement_units (id_preview_attachement)');
+ $this->addSql('CREATE INDEX IDX_F5AF83CF727ACA70 ON measurement_units (parent_id)');
+ $this->addSql('CREATE INDEX unit_idx_name ON measurement_units (name)');
+ $this->addSql('CREATE INDEX unit_idx_parent_name ON measurement_units (parent_id, name)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__orderdetails AS SELECT id, part_id, id_supplier, supplierpartnr, obsolete, supplier_product_url, last_modified, datetime_added FROM orderdetails');
+ $this->addSql('DROP TABLE orderdetails');
+ $this->addSql('CREATE TABLE orderdetails (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, part_id INTEGER NOT NULL, id_supplier INTEGER DEFAULT NULL, supplierpartnr VARCHAR(255) NOT NULL, obsolete BOOLEAN NOT NULL, supplier_product_url VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, CONSTRAINT FK_489AFCDC4CE34BEC FOREIGN KEY (part_id) REFERENCES "parts" (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_489AFCDCCBF180EB FOREIGN KEY (id_supplier) REFERENCES "suppliers" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO orderdetails (id, part_id, id_supplier, supplierpartnr, obsolete, supplier_product_url, last_modified, datetime_added) SELECT id, part_id, id_supplier, supplierpartnr, obsolete, supplier_product_url, last_modified, datetime_added FROM __temp__orderdetails');
+ $this->addSql('DROP TABLE __temp__orderdetails');
+ $this->addSql('CREATE INDEX IDX_489AFCDCCBF180EB ON orderdetails (id_supplier)');
+ $this->addSql('CREATE INDEX IDX_489AFCDC4CE34BEC ON orderdetails (part_id)');
+ $this->addSql('CREATE INDEX orderdetails_supplier_part_nr ON orderdetails (supplierpartnr)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__parameters AS SELECT id, symbol, value_min, value_typical, value_max, unit, value_text, param_group, name, last_modified, datetime_added, type, element_id FROM parameters');
+ $this->addSql('DROP TABLE parameters');
+ $this->addSql('CREATE TABLE parameters (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, symbol VARCHAR(255) NOT NULL, value_min DOUBLE PRECISION DEFAULT NULL, value_typical DOUBLE PRECISION DEFAULT NULL, value_max DOUBLE PRECISION DEFAULT NULL, unit VARCHAR(255) NOT NULL, value_text VARCHAR(255) NOT NULL, param_group VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, type SMALLINT NOT NULL, element_id INTEGER NOT NULL)');
+ $this->addSql('INSERT INTO parameters (id, symbol, value_min, value_typical, value_max, unit, value_text, param_group, name, last_modified, datetime_added, type, element_id) SELECT id, symbol, value_min, value_typical, value_max, unit, value_text, param_group, name, last_modified, datetime_added, type, element_id FROM __temp__parameters');
+ $this->addSql('DROP TABLE __temp__parameters');
+ $this->addSql('CREATE INDEX IDX_69348FE1F1F2A24 ON parameters (element_id)');
+ $this->addSql('CREATE INDEX parameter_name_idx ON parameters (name)');
+ $this->addSql('CREATE INDEX parameter_group_idx ON parameters (param_group)');
+ $this->addSql('CREATE INDEX parameter_type_element_idx ON parameters (type, element_id)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__part_lots AS SELECT id, id_store_location, id_part, description, comment, expiration_date, instock_unknown, amount, needs_refill, last_modified, datetime_added FROM part_lots');
+ $this->addSql('DROP TABLE part_lots');
+ $this->addSql('CREATE TABLE part_lots (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, id_store_location INTEGER DEFAULT NULL, id_part INTEGER NOT NULL, description CLOB NOT NULL, comment CLOB NOT NULL, expiration_date DATETIME DEFAULT NULL, instock_unknown BOOLEAN NOT NULL, amount DOUBLE PRECISION NOT NULL, needs_refill BOOLEAN NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, CONSTRAINT FK_EBC8F9435D8F4B37 FOREIGN KEY (id_store_location) REFERENCES "storelocations" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_EBC8F943C22F6CC4 FOREIGN KEY (id_part) REFERENCES "parts" (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO part_lots (id, id_store_location, id_part, description, comment, expiration_date, instock_unknown, amount, needs_refill, last_modified, datetime_added) SELECT id, id_store_location, id_part, description, comment, expiration_date, instock_unknown, amount, needs_refill, last_modified, datetime_added FROM __temp__part_lots');
+ $this->addSql('DROP TABLE __temp__part_lots');
+ $this->addSql('CREATE INDEX IDX_EBC8F943C22F6CC4 ON part_lots (id_part)');
+ $this->addSql('CREATE INDEX IDX_EBC8F9435D8F4B37 ON part_lots (id_store_location)');
+ $this->addSql('CREATE INDEX part_lots_idx_instock_un_expiration_id_part ON part_lots (instock_unknown, expiration_date, id_part)');
+ $this->addSql('CREATE INDEX part_lots_idx_needs_refill ON part_lots (needs_refill)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__parts AS SELECT id, id_preview_attachement, id_category, id_footprint, id_part_unit, id_manufacturer, order_orderdetails_id, datetime_added, name, last_modified, needs_review, tags, mass, description, comment, visible, favorite, minamount, manufacturer_product_url, manufacturer_product_number, manufacturing_status, order_quantity, manual_order FROM parts');
+ $this->addSql('DROP TABLE parts');
+ $this->addSql('CREATE TABLE parts (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, id_preview_attachement INTEGER DEFAULT NULL, id_category INTEGER NOT NULL, id_footprint INTEGER DEFAULT NULL, id_part_unit INTEGER DEFAULT NULL, id_manufacturer INTEGER DEFAULT NULL, order_orderdetails_id INTEGER DEFAULT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, needs_review BOOLEAN NOT NULL, tags CLOB NOT NULL, mass DOUBLE PRECISION DEFAULT NULL, description CLOB NOT NULL, comment CLOB NOT NULL, visible BOOLEAN NOT NULL, favorite BOOLEAN NOT NULL, minamount DOUBLE PRECISION NOT NULL, manufacturer_product_url VARCHAR(255) NOT NULL, manufacturer_product_number VARCHAR(255) NOT NULL, manufacturing_status VARCHAR(255) DEFAULT NULL, order_quantity INTEGER NOT NULL, manual_order BOOLEAN NOT NULL, CONSTRAINT FK_6940A7FE6DEDCEC2 FOREIGN KEY (id_preview_attachement) REFERENCES "attachments" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_6940A7FE5697F554 FOREIGN KEY (id_category) REFERENCES "categories" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_6940A7FE7E371A10 FOREIGN KEY (id_footprint) REFERENCES "footprints" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_6940A7FE2626CEF9 FOREIGN KEY (id_part_unit) REFERENCES "measurement_units" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_6940A7FE1ECB93AE FOREIGN KEY (id_manufacturer) REFERENCES "manufacturers" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_6940A7FE81081E9B FOREIGN KEY (order_orderdetails_id) REFERENCES "orderdetails" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO parts (id, id_preview_attachement, id_category, id_footprint, id_part_unit, id_manufacturer, order_orderdetails_id, datetime_added, name, last_modified, needs_review, tags, mass, description, comment, visible, favorite, minamount, manufacturer_product_url, manufacturer_product_number, manufacturing_status, order_quantity, manual_order) SELECT id, id_preview_attachement, id_category, id_footprint, id_part_unit, id_manufacturer, order_orderdetails_id, datetime_added, name, last_modified, needs_review, tags, mass, description, comment, visible, favorite, minamount, manufacturer_product_url, manufacturer_product_number, manufacturing_status, order_quantity, manual_order FROM __temp__parts');
+ $this->addSql('DROP TABLE __temp__parts');
+ $this->addSql('CREATE UNIQUE INDEX UNIQ_6940A7FE81081E9B ON parts (order_orderdetails_id)');
+ $this->addSql('CREATE INDEX IDX_6940A7FE1ECB93AE ON parts (id_manufacturer)');
+ $this->addSql('CREATE INDEX IDX_6940A7FE2626CEF9 ON parts (id_part_unit)');
+ $this->addSql('CREATE INDEX IDX_6940A7FE7E371A10 ON parts (id_footprint)');
+ $this->addSql('CREATE INDEX IDX_6940A7FE5697F554 ON parts (id_category)');
+ $this->addSql('CREATE INDEX IDX_6940A7FE6DEDCEC2 ON parts (id_preview_attachement)');
+ $this->addSql('CREATE INDEX parts_idx_datet_name_last_id_needs ON parts (datetime_added, name, last_modified, id, needs_review)');
+ $this->addSql('CREATE INDEX parts_idx_name ON parts (name)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__pricedetails AS SELECT id, id_currency, orderdetails_id, price, price_related_quantity, min_discount_quantity, manual_input, last_modified, datetime_added FROM pricedetails');
+ $this->addSql('DROP TABLE pricedetails');
+ $this->addSql('CREATE TABLE pricedetails (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, id_currency INTEGER DEFAULT NULL, orderdetails_id INTEGER NOT NULL, price NUMERIC(11, 5) NOT NULL --(DC2Type:big_decimal)
+ , price_related_quantity DOUBLE PRECISION NOT NULL, min_discount_quantity DOUBLE PRECISION NOT NULL, manual_input BOOLEAN NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, CONSTRAINT FK_C68C4459398D64AA FOREIGN KEY (id_currency) REFERENCES currencies (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_C68C44594A01DDC7 FOREIGN KEY (orderdetails_id) REFERENCES "orderdetails" (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO pricedetails (id, id_currency, orderdetails_id, price, price_related_quantity, min_discount_quantity, manual_input, last_modified, datetime_added) SELECT id, id_currency, orderdetails_id, price, price_related_quantity, min_discount_quantity, manual_input, last_modified, datetime_added FROM __temp__pricedetails');
+ $this->addSql('DROP TABLE __temp__pricedetails');
+ $this->addSql('CREATE INDEX IDX_C68C44594A01DDC7 ON pricedetails (orderdetails_id)');
+ $this->addSql('CREATE INDEX IDX_C68C4459398D64AA ON pricedetails (id_currency)');
+ $this->addSql('CREATE INDEX pricedetails_idx_min_discount ON pricedetails (min_discount_quantity)');
+ $this->addSql('CREATE INDEX pricedetails_idx_min_discount_price_qty ON pricedetails (min_discount_quantity, price_related_quantity)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__storelocations AS SELECT id, parent_id, storage_type_id, id_preview_attachement, is_full, only_single_part, limit_to_existing_parts, comment, not_selectable, name, last_modified, datetime_added FROM storelocations');
+ $this->addSql('DROP TABLE storelocations');
+ $this->addSql('CREATE TABLE storelocations (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, storage_type_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, is_full BOOLEAN NOT NULL, only_single_part BOOLEAN NOT NULL, limit_to_existing_parts BOOLEAN NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, CONSTRAINT FK_7517020727ACA70 FOREIGN KEY (parent_id) REFERENCES "storelocations" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_7517020B270BFF1 FOREIGN KEY (storage_type_id) REFERENCES "measurement_units" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_75170206DEDCEC2 FOREIGN KEY (id_preview_attachement) REFERENCES "attachments" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO storelocations (id, parent_id, storage_type_id, id_preview_attachement, is_full, only_single_part, limit_to_existing_parts, comment, not_selectable, name, last_modified, datetime_added) SELECT id, parent_id, storage_type_id, id_preview_attachement, is_full, only_single_part, limit_to_existing_parts, comment, not_selectable, name, last_modified, datetime_added FROM __temp__storelocations');
+ $this->addSql('DROP TABLE __temp__storelocations');
+ $this->addSql('CREATE INDEX IDX_75170206DEDCEC2 ON storelocations (id_preview_attachement)');
+ $this->addSql('CREATE INDEX IDX_7517020B270BFF1 ON storelocations (storage_type_id)');
+ $this->addSql('CREATE INDEX IDX_7517020727ACA70 ON storelocations (parent_id)');
+ $this->addSql('CREATE INDEX location_idx_name ON storelocations (name)');
+ $this->addSql('CREATE INDEX location_idx_parent_name ON storelocations (parent_id, name)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__suppliers AS SELECT id, parent_id, default_currency_id, id_preview_attachement, shipping_costs, address, phone_number, fax_number, email_address, website, auto_product_url, comment, not_selectable, name, last_modified, datetime_added FROM suppliers');
+ $this->addSql('DROP TABLE suppliers');
+ $this->addSql('CREATE TABLE suppliers (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, default_currency_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, shipping_costs NUMERIC(11, 5) DEFAULT NULL --(DC2Type:big_decimal)
+ , address VARCHAR(255) NOT NULL, phone_number VARCHAR(255) NOT NULL, fax_number VARCHAR(255) NOT NULL, email_address VARCHAR(255) NOT NULL, website VARCHAR(255) NOT NULL, auto_product_url VARCHAR(255) NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, CONSTRAINT FK_AC28B95C727ACA70 FOREIGN KEY (parent_id) REFERENCES "suppliers" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_AC28B95CECD792C0 FOREIGN KEY (default_currency_id) REFERENCES currencies (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_AC28B95C6DEDCEC2 FOREIGN KEY (id_preview_attachement) REFERENCES "attachments" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO suppliers (id, parent_id, default_currency_id, id_preview_attachement, shipping_costs, address, phone_number, fax_number, email_address, website, auto_product_url, comment, not_selectable, name, last_modified, datetime_added) SELECT id, parent_id, default_currency_id, id_preview_attachement, shipping_costs, address, phone_number, fax_number, email_address, website, auto_product_url, comment, not_selectable, name, last_modified, datetime_added FROM __temp__suppliers');
+ $this->addSql('DROP TABLE __temp__suppliers');
+ $this->addSql('CREATE INDEX IDX_AC28B95C6DEDCEC2 ON suppliers (id_preview_attachement)');
+ $this->addSql('CREATE INDEX IDX_AC28B95CECD792C0 ON suppliers (default_currency_id)');
+ $this->addSql('CREATE INDEX IDX_AC28B95C727ACA70 ON suppliers (parent_id)');
+ $this->addSql('CREATE INDEX supplier_idx_name ON suppliers (name)');
+ $this->addSql('CREATE INDEX supplier_idx_parent_name ON suppliers (parent_id, name)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__u2f_keys AS SELECT id, user_id, key_handle, public_key, certificate, counter, name, last_modified, datetime_added FROM u2f_keys');
+ $this->addSql('DROP TABLE u2f_keys');
+ $this->addSql('CREATE TABLE u2f_keys (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, user_id INTEGER DEFAULT NULL, key_handle VARCHAR(128) NOT NULL, public_key VARCHAR(255) NOT NULL, certificate CLOB NOT NULL, counter VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, CONSTRAINT FK_4F4ADB4BA76ED395 FOREIGN KEY (user_id) REFERENCES "users" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO u2f_keys (id, user_id, key_handle, public_key, certificate, counter, name, last_modified, datetime_added) SELECT id, user_id, key_handle, public_key, certificate, counter, name, last_modified, datetime_added FROM __temp__u2f_keys');
+ $this->addSql('DROP TABLE __temp__u2f_keys');
+ $this->addSql('CREATE UNIQUE INDEX user_unique ON u2f_keys (user_id, key_handle)');
+ $this->addSql('CREATE INDEX IDX_4F4ADB4BA76ED395 ON u2f_keys (user_id)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__users AS SELECT id, group_id, currency_id, id_preview_attachement, disabled, config_theme, pw_reset_token, config_instock_comment_a, config_instock_comment_w, trusted_device_cookie_version, backup_codes, google_authenticator_secret, config_timezone, config_language, email, department, last_name, first_name, need_pw_change, password, name, settings, backup_codes_generation_date, pw_reset_expires, last_modified, datetime_added, perms_system, perms_groups, perms_users, perms_self, perms_system_config, perms_system_database, perms_parts, perms_parts_name, perms_parts_category, perms_parts_description, perms_parts_minamount, perms_parts_footprint, perms_parts_lots, perms_parts_tags, perms_parts_unit, perms_parts_mass, perms_parts_manufacturer, perms_parts_status, perms_parts_mpn, perms_parts_comment, perms_parts_order, perms_parts_orderdetails, perms_parts_prices, perms_parts_parameters, perms_parts_attachements, perms_devices, perms_devices_parts, perms_storelocations, perms_footprints, perms_categories, perms_suppliers, perms_manufacturers, perms_attachement_types, perms_currencies, perms_measurement_units, perms_tools, perms_labels FROM users');
+ $this->addSql('DROP TABLE users');
+ $this->addSql('CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, group_id INTEGER DEFAULT NULL, currency_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, disabled BOOLEAN NOT NULL, config_theme VARCHAR(255) DEFAULT NULL, pw_reset_token VARCHAR(255) DEFAULT NULL, config_instock_comment_a CLOB NOT NULL, config_instock_comment_w CLOB NOT NULL, trusted_device_cookie_version INTEGER NOT NULL, backup_codes CLOB NOT NULL --(DC2Type:json)
+ , google_authenticator_secret VARCHAR(255) DEFAULT NULL, config_timezone VARCHAR(255) DEFAULT NULL, config_language VARCHAR(255) DEFAULT NULL, email VARCHAR(255) DEFAULT NULL, department VARCHAR(255) DEFAULT NULL, last_name VARCHAR(255) DEFAULT NULL, first_name VARCHAR(255) DEFAULT NULL, need_pw_change BOOLEAN NOT NULL, password VARCHAR(255) DEFAULT NULL, name VARCHAR(180) NOT NULL, settings CLOB NOT NULL --(DC2Type:json)
+ , backup_codes_generation_date DATETIME DEFAULT NULL, pw_reset_expires DATETIME DEFAULT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, perms_system INTEGER NOT NULL, perms_groups INTEGER NOT NULL, perms_users INTEGER NOT NULL, perms_self INTEGER NOT NULL, perms_system_config INTEGER NOT NULL, perms_system_database INTEGER NOT NULL, perms_parts BIGINT NOT NULL, perms_parts_name SMALLINT NOT NULL, perms_parts_category SMALLINT NOT NULL, perms_parts_description SMALLINT NOT NULL, perms_parts_minamount SMALLINT NOT NULL, perms_parts_footprint SMALLINT NOT NULL, perms_parts_lots SMALLINT NOT NULL, perms_parts_tags SMALLINT NOT NULL, perms_parts_unit SMALLINT NOT NULL, perms_parts_mass SMALLINT NOT NULL, perms_parts_manufacturer SMALLINT NOT NULL, perms_parts_status SMALLINT NOT NULL, perms_parts_mpn SMALLINT NOT NULL, perms_parts_comment SMALLINT NOT NULL, perms_parts_order SMALLINT NOT NULL, perms_parts_orderdetails SMALLINT NOT NULL, perms_parts_prices SMALLINT NOT NULL, perms_parts_parameters SMALLINT NOT NULL, perms_parts_attachements SMALLINT NOT NULL, perms_devices INTEGER NOT NULL, perms_devices_parts INTEGER NOT NULL, perms_storelocations INTEGER NOT NULL, perms_footprints INTEGER NOT NULL, perms_categories INTEGER NOT NULL, perms_suppliers INTEGER NOT NULL, perms_manufacturers INTEGER NOT NULL, perms_attachement_types INTEGER NOT NULL, perms_currencies INTEGER NOT NULL, perms_measurement_units INTEGER NOT NULL, perms_tools INTEGER NOT NULL, perms_labels INTEGER NOT NULL, CONSTRAINT FK_1483A5E9FE54D947 FOREIGN KEY (group_id) REFERENCES "groups" (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_1483A5E938248176 FOREIGN KEY (currency_id) REFERENCES currencies (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_1483A5E96DEDCEC2 FOREIGN KEY (id_preview_attachement) REFERENCES "attachments" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO users (id, group_id, currency_id, id_preview_attachement, disabled, config_theme, pw_reset_token, config_instock_comment_a, config_instock_comment_w, trusted_device_cookie_version, backup_codes, google_authenticator_secret, config_timezone, config_language, email, department, last_name, first_name, need_pw_change, password, name, settings, backup_codes_generation_date, pw_reset_expires, last_modified, datetime_added, perms_system, perms_groups, perms_users, perms_self, perms_system_config, perms_system_database, perms_parts, perms_parts_name, perms_parts_category, perms_parts_description, perms_parts_minamount, perms_parts_footprint, perms_parts_lots, perms_parts_tags, perms_parts_unit, perms_parts_mass, perms_parts_manufacturer, perms_parts_status, perms_parts_mpn, perms_parts_comment, perms_parts_order, perms_parts_orderdetails, perms_parts_prices, perms_parts_parameters, perms_parts_attachements, perms_devices, perms_devices_parts, perms_storelocations, perms_footprints, perms_categories, perms_suppliers, perms_manufacturers, perms_attachement_types, perms_currencies, perms_measurement_units, perms_tools, perms_labels) SELECT id, group_id, currency_id, id_preview_attachement, disabled, config_theme, pw_reset_token, config_instock_comment_a, config_instock_comment_w, trusted_device_cookie_version, backup_codes, google_authenticator_secret, config_timezone, config_language, email, department, last_name, first_name, need_pw_change, password, name, settings, backup_codes_generation_date, pw_reset_expires, last_modified, datetime_added, perms_system, perms_groups, perms_users, perms_self, perms_system_config, perms_system_database, perms_parts, perms_parts_name, perms_parts_category, perms_parts_description, perms_parts_minamount, perms_parts_footprint, perms_parts_lots, perms_parts_tags, perms_parts_unit, perms_parts_mass, perms_parts_manufacturer, perms_parts_status, perms_parts_mpn, perms_parts_comment, perms_parts_order, perms_parts_orderdetails, perms_parts_prices, perms_parts_parameters, perms_parts_attachements, perms_devices, perms_devices_parts, perms_storelocations, perms_footprints, perms_categories, perms_suppliers, perms_manufacturers, perms_attachement_types, perms_currencies, perms_measurement_units, perms_tools, perms_labels FROM __temp__users');
+ $this->addSql('DROP TABLE __temp__users');
+ $this->addSql('CREATE INDEX IDX_1483A5E96DEDCEC2 ON users (id_preview_attachement)');
+ $this->addSql('CREATE INDEX IDX_1483A5E938248176 ON users (currency_id)');
+ $this->addSql('CREATE INDEX IDX_1483A5E9FE54D947 ON users (group_id)');
+ $this->addSql('CREATE UNIQUE INDEX UNIQ_1483A5E95E237E06 ON users (name)');
+ $this->addSql('CREATE INDEX user_idx_username ON users (name)');
+ }
+
+ public function sqLiteDown(Schema $schema): void
+ {
+ $this->addSql('CREATE TEMPORARY TABLE __temp__attachment_types AS SELECT id, parent_id, id_preview_attachement, filetype_filter, comment, not_selectable, name, last_modified, datetime_added FROM "attachment_types"');
+ $this->addSql('DROP TABLE "attachment_types"');
+ $this->addSql('CREATE TABLE "attachment_types" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, filetype_filter CLOB NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL)');
+ $this->addSql('INSERT INTO "attachment_types" (id, parent_id, id_preview_attachement, filetype_filter, comment, not_selectable, name, last_modified, datetime_added) SELECT id, parent_id, id_preview_attachement, filetype_filter, comment, not_selectable, name, last_modified, datetime_added FROM __temp__attachment_types');
+ $this->addSql('DROP TABLE __temp__attachment_types');
+ $this->addSql('CREATE INDEX IDX_EFAED719727ACA70 ON "attachment_types" (parent_id)');
+ $this->addSql('CREATE INDEX IDX_EFAED7196DEDCEC2 ON "attachment_types" (id_preview_attachement)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__attachments AS SELECT id, type_id, original_filename, path, show_in_table, name, last_modified, datetime_added, class_name, element_id FROM "attachments"');
+ $this->addSql('DROP TABLE "attachments"');
+ $this->addSql('CREATE TABLE "attachments" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, type_id INTEGER DEFAULT NULL, original_filename VARCHAR(255) DEFAULT NULL, path VARCHAR(255) NOT NULL, show_in_table BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, class_name VARCHAR(255) NOT NULL, element_id INTEGER NOT NULL)');
+ $this->addSql('INSERT INTO "attachments" (id, type_id, original_filename, path, show_in_table, name, last_modified, datetime_added, class_name, element_id) SELECT id, type_id, original_filename, path, show_in_table, name, last_modified, datetime_added, class_name, element_id FROM __temp__attachments');
+ $this->addSql('DROP TABLE __temp__attachments');
+ $this->addSql('CREATE INDEX IDX_47C4FAD6C54C8C93 ON "attachments" (type_id)');
+ $this->addSql('CREATE INDEX IDX_47C4FAD61F1F2A24 ON "attachments" (element_id)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__categories AS SELECT id, parent_id, id_preview_attachement, partname_hint, partname_regex, disable_footprints, disable_manufacturers, disable_autodatasheets, disable_properties, default_description, default_comment, comment, not_selectable, name, last_modified, datetime_added FROM "categories"');
+ $this->addSql('DROP TABLE "categories"');
+ $this->addSql('CREATE TABLE "categories" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, partname_hint CLOB NOT NULL, partname_regex CLOB NOT NULL, disable_footprints BOOLEAN NOT NULL, disable_manufacturers BOOLEAN NOT NULL, disable_autodatasheets BOOLEAN NOT NULL, disable_properties BOOLEAN NOT NULL, default_description CLOB NOT NULL, default_comment CLOB NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL)');
+ $this->addSql('INSERT INTO "categories" (id, parent_id, id_preview_attachement, partname_hint, partname_regex, disable_footprints, disable_manufacturers, disable_autodatasheets, disable_properties, default_description, default_comment, comment, not_selectable, name, last_modified, datetime_added) SELECT id, parent_id, id_preview_attachement, partname_hint, partname_regex, disable_footprints, disable_manufacturers, disable_autodatasheets, disable_properties, default_description, default_comment, comment, not_selectable, name, last_modified, datetime_added FROM __temp__categories');
+ $this->addSql('DROP TABLE __temp__categories');
+ $this->addSql('CREATE INDEX IDX_3AF34668727ACA70 ON "categories" (parent_id)');
+ $this->addSql('CREATE INDEX IDX_3AF346686DEDCEC2 ON "categories" (id_preview_attachement)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__currencies AS SELECT id, parent_id, id_preview_attachement, exchange_rate, iso_code, comment, not_selectable, name, last_modified, datetime_added FROM currencies');
+ $this->addSql('DROP TABLE currencies');
+ $this->addSql('CREATE TABLE currencies (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, exchange_rate NUMERIC(11, 5) DEFAULT NULL --
+(DC2Type:big_decimal)
+ , iso_code VARCHAR(255) NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL)');
+ $this->addSql('INSERT INTO currencies (id, parent_id, id_preview_attachement, exchange_rate, iso_code, comment, not_selectable, name, last_modified, datetime_added) SELECT id, parent_id, id_preview_attachement, exchange_rate, iso_code, comment, not_selectable, name, last_modified, datetime_added FROM __temp__currencies');
+ $this->addSql('DROP TABLE __temp__currencies');
+ $this->addSql('CREATE INDEX IDX_37C44693727ACA70 ON currencies (parent_id)');
+ $this->addSql('CREATE INDEX IDX_37C446936DEDCEC2 ON currencies (id_preview_attachement)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__device_parts AS SELECT id, id_device, id_part, quantity, mountnames FROM "device_parts"');
+ $this->addSql('DROP TABLE "device_parts"');
+ $this->addSql('CREATE TABLE "device_parts" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, id_device INTEGER DEFAULT NULL, id_part INTEGER DEFAULT NULL, quantity INTEGER NOT NULL, mountnames CLOB NOT NULL)');
+ $this->addSql('INSERT INTO "device_parts" (id, id_device, id_part, quantity, mountnames) SELECT id, id_device, id_part, quantity, mountnames FROM __temp__device_parts');
+ $this->addSql('DROP TABLE __temp__device_parts');
+ $this->addSql('CREATE INDEX IDX_AFC547992F180363 ON "device_parts" (id_device)');
+ $this->addSql('CREATE INDEX IDX_AFC54799C22F6CC4 ON "device_parts" (id_part)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__devices AS SELECT id, parent_id, id_preview_attachement, order_quantity, order_only_missing_parts, comment, not_selectable, name, last_modified, datetime_added FROM "devices"');
+ $this->addSql('DROP TABLE "devices"');
+ $this->addSql('CREATE TABLE "devices" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, order_quantity INTEGER NOT NULL, order_only_missing_parts BOOLEAN NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL)');
+ $this->addSql('INSERT INTO "devices" (id, parent_id, id_preview_attachement, order_quantity, order_only_missing_parts, comment, not_selectable, name, last_modified, datetime_added) SELECT id, parent_id, id_preview_attachement, order_quantity, order_only_missing_parts, comment, not_selectable, name, last_modified, datetime_added FROM __temp__devices');
+ $this->addSql('DROP TABLE __temp__devices');
+ $this->addSql('CREATE INDEX IDX_11074E9A727ACA70 ON "devices" (parent_id)');
+ $this->addSql('CREATE INDEX IDX_11074E9A6DEDCEC2 ON "devices" (id_preview_attachement)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__footprints AS SELECT id, parent_id, id_footprint_3d, id_preview_attachement, comment, not_selectable, name, last_modified, datetime_added FROM "footprints"');
+ $this->addSql('DROP TABLE "footprints"');
+ $this->addSql('CREATE TABLE "footprints" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, id_footprint_3d INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL)');
+ $this->addSql('INSERT INTO "footprints" (id, parent_id, id_footprint_3d, id_preview_attachement, comment, not_selectable, name, last_modified, datetime_added) SELECT id, parent_id, id_footprint_3d, id_preview_attachement, comment, not_selectable, name, last_modified, datetime_added FROM __temp__footprints');
+ $this->addSql('DROP TABLE __temp__footprints');
+ $this->addSql('CREATE INDEX IDX_A34D68A2727ACA70 ON "footprints" (parent_id)');
+ $this->addSql('CREATE INDEX IDX_A34D68A232A38C34 ON "footprints" (id_footprint_3d)');
+ $this->addSql('CREATE INDEX IDX_A34D68A26DEDCEC2 ON "footprints" (id_preview_attachement)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__groups AS SELECT id, parent_id, id_preview_attachement, enforce_2fa, comment, not_selectable, name, last_modified, datetime_added, perms_system, perms_groups, perms_users, perms_self, perms_system_config, perms_system_database, perms_parts, perms_parts_name, perms_parts_category, perms_parts_description, perms_parts_minamount, perms_parts_footprint, perms_parts_lots, perms_parts_tags, perms_parts_unit, perms_parts_mass, perms_parts_manufacturer, perms_parts_status, perms_parts_mpn, perms_parts_comment, perms_parts_order, perms_parts_orderdetails, perms_parts_prices, perms_parts_parameters, perms_parts_attachements, perms_devices, perms_devices_parts, perms_storelocations, perms_footprints, perms_categories, perms_suppliers, perms_manufacturers, perms_attachement_types, perms_currencies, perms_measurement_units, perms_tools, perms_labels FROM "groups"');
+ $this->addSql('DROP TABLE "groups"');
+ $this->addSql('CREATE TABLE "groups" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, enforce_2fa BOOLEAN NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, perms_system INTEGER NOT NULL, perms_groups INTEGER NOT NULL, perms_users INTEGER NOT NULL, perms_self INTEGER NOT NULL, perms_system_config INTEGER NOT NULL, perms_system_database INTEGER NOT NULL, perms_parts BIGINT NOT NULL, perms_parts_name SMALLINT NOT NULL, perms_parts_category SMALLINT NOT NULL, perms_parts_description SMALLINT NOT NULL, perms_parts_minamount SMALLINT NOT NULL, perms_parts_footprint SMALLINT NOT NULL, perms_parts_lots SMALLINT NOT NULL, perms_parts_tags SMALLINT NOT NULL, perms_parts_unit SMALLINT NOT NULL, perms_parts_mass SMALLINT NOT NULL, perms_parts_manufacturer SMALLINT NOT NULL, perms_parts_status SMALLINT NOT NULL, perms_parts_mpn SMALLINT NOT NULL, perms_parts_comment SMALLINT NOT NULL, perms_parts_order SMALLINT NOT NULL, perms_parts_orderdetails SMALLINT NOT NULL, perms_parts_prices SMALLINT NOT NULL, perms_parts_parameters SMALLINT NOT NULL, perms_parts_attachements SMALLINT NOT NULL, perms_devices INTEGER NOT NULL, perms_devices_parts INTEGER NOT NULL, perms_storelocations INTEGER NOT NULL, perms_footprints INTEGER NOT NULL, perms_categories INTEGER NOT NULL, perms_suppliers INTEGER NOT NULL, perms_manufacturers INTEGER NOT NULL, perms_attachement_types INTEGER NOT NULL, perms_currencies INTEGER NOT NULL, perms_measurement_units INTEGER NOT NULL, perms_tools INTEGER NOT NULL, perms_labels INTEGER NOT NULL)');
+ $this->addSql('INSERT INTO "groups" (id, parent_id, id_preview_attachement, enforce_2fa, comment, not_selectable, name, last_modified, datetime_added, perms_system, perms_groups, perms_users, perms_self, perms_system_config, perms_system_database, perms_parts, perms_parts_name, perms_parts_category, perms_parts_description, perms_parts_minamount, perms_parts_footprint, perms_parts_lots, perms_parts_tags, perms_parts_unit, perms_parts_mass, perms_parts_manufacturer, perms_parts_status, perms_parts_mpn, perms_parts_comment, perms_parts_order, perms_parts_orderdetails, perms_parts_prices, perms_parts_parameters, perms_parts_attachements, perms_devices, perms_devices_parts, perms_storelocations, perms_footprints, perms_categories, perms_suppliers, perms_manufacturers, perms_attachement_types, perms_currencies, perms_measurement_units, perms_tools, perms_labels) SELECT id, parent_id, id_preview_attachement, enforce_2fa, comment, not_selectable, name, last_modified, datetime_added, perms_system, perms_groups, perms_users, perms_self, perms_system_config, perms_system_database, perms_parts, perms_parts_name, perms_parts_category, perms_parts_description, perms_parts_minamount, perms_parts_footprint, perms_parts_lots, perms_parts_tags, perms_parts_unit, perms_parts_mass, perms_parts_manufacturer, perms_parts_status, perms_parts_mpn, perms_parts_comment, perms_parts_order, perms_parts_orderdetails, perms_parts_prices, perms_parts_parameters, perms_parts_attachements, perms_devices, perms_devices_parts, perms_storelocations, perms_footprints, perms_categories, perms_suppliers, perms_manufacturers, perms_attachement_types, perms_currencies, perms_measurement_units, perms_tools, perms_labels FROM __temp__groups');
+ $this->addSql('DROP TABLE __temp__groups');
+ $this->addSql('CREATE INDEX IDX_F06D3970727ACA70 ON "groups" (parent_id)');
+ $this->addSql('CREATE INDEX IDX_F06D39706DEDCEC2 ON "groups" (id_preview_attachement)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__label_profiles AS SELECT id, id_preview_attachement, comment, show_in_dropdown, name, last_modified, datetime_added, options_width, options_height, options_barcode_type, options_picture_type, options_supported_element, options_additional_css, options_lines_mode, options_lines FROM label_profiles');
+ $this->addSql('DROP TABLE label_profiles');
+ $this->addSql('CREATE TABLE label_profiles (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, id_preview_attachement INTEGER DEFAULT NULL, comment CLOB NOT NULL, show_in_dropdown BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, options_width DOUBLE PRECISION NOT NULL, options_height DOUBLE PRECISION NOT NULL, options_barcode_type VARCHAR(255) NOT NULL, options_picture_type VARCHAR(255) NOT NULL, options_supported_element VARCHAR(255) NOT NULL, options_additional_css CLOB NOT NULL, options_lines_mode VARCHAR(255) NOT NULL, options_lines CLOB NOT NULL)');
+ $this->addSql('INSERT INTO label_profiles (id, id_preview_attachement, comment, show_in_dropdown, name, last_modified, datetime_added, options_width, options_height, options_barcode_type, options_picture_type, options_supported_element, options_additional_css, options_lines_mode, options_lines) SELECT id, id_preview_attachement, comment, show_in_dropdown, name, last_modified, datetime_added, options_width, options_height, options_barcode_type, options_picture_type, options_supported_element, options_additional_css, options_lines_mode, options_lines FROM __temp__label_profiles');
+ $this->addSql('DROP TABLE __temp__label_profiles');
+ $this->addSql('CREATE INDEX IDX_C93E9CF56DEDCEC2 ON label_profiles (id_preview_attachement)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__log AS SELECT id, id_user, datetime, level, target_id, target_type, extra, type FROM log');
+ $this->addSql('DROP TABLE log');
+ $this->addSql('CREATE TABLE log (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, id_user INTEGER NOT NULL, datetime DATETIME NOT NULL, level BOOLEAN NOT NULL, target_id INTEGER NOT NULL, target_type SMALLINT NOT NULL, extra CLOB NOT NULL --
+(DC2Type:json)
+ , type SMALLINT NOT NULL)');
+ $this->addSql('INSERT INTO log (id, id_user, datetime, level, target_id, target_type, extra, type) SELECT id, id_user, datetime, level, target_id, target_type, extra, type FROM __temp__log');
+ $this->addSql('DROP TABLE __temp__log');
+ $this->addSql('CREATE INDEX IDX_8F3F68C56B3CA4B ON log (id_user)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__manufacturers AS SELECT id, parent_id, id_preview_attachement, address, phone_number, fax_number, email_address, website, auto_product_url, comment, not_selectable, name, last_modified, datetime_added FROM "manufacturers"');
+ $this->addSql('DROP TABLE "manufacturers"');
+ $this->addSql('CREATE TABLE "manufacturers" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, address VARCHAR(255) NOT NULL, phone_number VARCHAR(255) NOT NULL, fax_number VARCHAR(255) NOT NULL, email_address VARCHAR(255) NOT NULL, website VARCHAR(255) NOT NULL, auto_product_url VARCHAR(255) NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL)');
+ $this->addSql('INSERT INTO "manufacturers" (id, parent_id, id_preview_attachement, address, phone_number, fax_number, email_address, website, auto_product_url, comment, not_selectable, name, last_modified, datetime_added) SELECT id, parent_id, id_preview_attachement, address, phone_number, fax_number, email_address, website, auto_product_url, comment, not_selectable, name, last_modified, datetime_added FROM __temp__manufacturers');
+ $this->addSql('DROP TABLE __temp__manufacturers');
+ $this->addSql('CREATE INDEX IDX_94565B12727ACA70 ON "manufacturers" (parent_id)');
+ $this->addSql('CREATE INDEX IDX_94565B126DEDCEC2 ON "manufacturers" (id_preview_attachement)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__measurement_units AS SELECT id, parent_id, id_preview_attachement, unit, is_integer, use_si_prefix, comment, not_selectable, name, last_modified, datetime_added FROM "measurement_units"');
+ $this->addSql('DROP TABLE "measurement_units"');
+ $this->addSql('CREATE TABLE "measurement_units" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, unit VARCHAR(255) DEFAULT NULL, is_integer BOOLEAN NOT NULL, use_si_prefix BOOLEAN NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL)');
+ $this->addSql('INSERT INTO "measurement_units" (id, parent_id, id_preview_attachement, unit, is_integer, use_si_prefix, comment, not_selectable, name, last_modified, datetime_added) SELECT id, parent_id, id_preview_attachement, unit, is_integer, use_si_prefix, comment, not_selectable, name, last_modified, datetime_added FROM __temp__measurement_units');
+ $this->addSql('DROP TABLE __temp__measurement_units');
+ $this->addSql('CREATE INDEX IDX_F5AF83CF727ACA70 ON "measurement_units" (parent_id)');
+ $this->addSql('CREATE INDEX IDX_F5AF83CF6DEDCEC2 ON "measurement_units" (id_preview_attachement)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__orderdetails AS SELECT id, part_id, id_supplier, supplierpartnr, obsolete, supplier_product_url, last_modified, datetime_added FROM "orderdetails"');
+ $this->addSql('DROP TABLE "orderdetails"');
+ $this->addSql('CREATE TABLE "orderdetails" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, part_id INTEGER NOT NULL, id_supplier INTEGER DEFAULT NULL, supplierpartnr VARCHAR(255) NOT NULL, obsolete BOOLEAN NOT NULL, supplier_product_url VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL)');
+ $this->addSql('INSERT INTO "orderdetails" (id, part_id, id_supplier, supplierpartnr, obsolete, supplier_product_url, last_modified, datetime_added) SELECT id, part_id, id_supplier, supplierpartnr, obsolete, supplier_product_url, last_modified, datetime_added FROM __temp__orderdetails');
+ $this->addSql('DROP TABLE __temp__orderdetails');
+ $this->addSql('CREATE INDEX IDX_489AFCDC4CE34BEC ON "orderdetails" (part_id)');
+ $this->addSql('CREATE INDEX IDX_489AFCDCCBF180EB ON "orderdetails" (id_supplier)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__parameters AS SELECT id, symbol, value_min, value_typical, value_max, unit, value_text, param_group, name, last_modified, datetime_added, type, element_id FROM parameters');
+ $this->addSql('DROP TABLE parameters');
+ $this->addSql('CREATE TABLE parameters (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, symbol VARCHAR(255) NOT NULL, value_min DOUBLE PRECISION DEFAULT NULL, value_typical DOUBLE PRECISION DEFAULT NULL, value_max DOUBLE PRECISION DEFAULT NULL, unit VARCHAR(255) NOT NULL, value_text VARCHAR(255) NOT NULL, param_group VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, type SMALLINT NOT NULL, element_id INTEGER NOT NULL)');
+ $this->addSql('INSERT INTO parameters (id, symbol, value_min, value_typical, value_max, unit, value_text, param_group, name, last_modified, datetime_added, type, element_id) SELECT id, symbol, value_min, value_typical, value_max, unit, value_text, param_group, name, last_modified, datetime_added, type, element_id FROM __temp__parameters');
+ $this->addSql('DROP TABLE __temp__parameters');
+ $this->addSql('CREATE INDEX IDX_69348FE1F1F2A24 ON parameters (element_id)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__part_lots AS SELECT id, id_store_location, id_part, description, comment, expiration_date, instock_unknown, amount, needs_refill, last_modified, datetime_added FROM part_lots');
+ $this->addSql('DROP TABLE part_lots');
+ $this->addSql('CREATE TABLE part_lots (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, id_store_location INTEGER DEFAULT NULL, id_part INTEGER NOT NULL, description CLOB NOT NULL, comment CLOB NOT NULL, expiration_date DATETIME DEFAULT NULL, instock_unknown BOOLEAN NOT NULL, amount DOUBLE PRECISION NOT NULL, needs_refill BOOLEAN NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL)');
+ $this->addSql('INSERT INTO part_lots (id, id_store_location, id_part, description, comment, expiration_date, instock_unknown, amount, needs_refill, last_modified, datetime_added) SELECT id, id_store_location, id_part, description, comment, expiration_date, instock_unknown, amount, needs_refill, last_modified, datetime_added FROM __temp__part_lots');
+ $this->addSql('DROP TABLE __temp__part_lots');
+ $this->addSql('CREATE INDEX IDX_EBC8F9435D8F4B37 ON part_lots (id_store_location)');
+ $this->addSql('CREATE INDEX IDX_EBC8F943C22F6CC4 ON part_lots (id_part)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__parts AS SELECT id, id_preview_attachement, id_category, id_footprint, id_part_unit, id_manufacturer, order_orderdetails_id, datetime_added, name, last_modified, needs_review, tags, mass, description, comment, visible, favorite, minamount, manufacturer_product_url, manufacturer_product_number, manufacturing_status, order_quantity, manual_order FROM "parts"');
+ $this->addSql('DROP TABLE "parts"');
+ $this->addSql('CREATE TABLE "parts" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, id_preview_attachement INTEGER DEFAULT NULL, id_category INTEGER NOT NULL, id_footprint INTEGER DEFAULT NULL, id_part_unit INTEGER DEFAULT NULL, id_manufacturer INTEGER DEFAULT NULL, order_orderdetails_id INTEGER DEFAULT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, needs_review BOOLEAN NOT NULL, tags CLOB NOT NULL, mass DOUBLE PRECISION DEFAULT NULL, description CLOB NOT NULL, comment CLOB NOT NULL, visible BOOLEAN NOT NULL, favorite BOOLEAN NOT NULL, minamount DOUBLE PRECISION NOT NULL, manufacturer_product_url VARCHAR(255) NOT NULL, manufacturer_product_number VARCHAR(255) NOT NULL, manufacturing_status VARCHAR(255) DEFAULT NULL, order_quantity INTEGER NOT NULL, manual_order BOOLEAN NOT NULL)');
+ $this->addSql('INSERT INTO "parts" (id, id_preview_attachement, id_category, id_footprint, id_part_unit, id_manufacturer, order_orderdetails_id, datetime_added, name, last_modified, needs_review, tags, mass, description, comment, visible, favorite, minamount, manufacturer_product_url, manufacturer_product_number, manufacturing_status, order_quantity, manual_order) SELECT id, id_preview_attachement, id_category, id_footprint, id_part_unit, id_manufacturer, order_orderdetails_id, datetime_added, name, last_modified, needs_review, tags, mass, description, comment, visible, favorite, minamount, manufacturer_product_url, manufacturer_product_number, manufacturing_status, order_quantity, manual_order FROM __temp__parts');
+ $this->addSql('DROP TABLE __temp__parts');
+ $this->addSql('CREATE INDEX IDX_6940A7FE6DEDCEC2 ON "parts" (id_preview_attachement)');
+ $this->addSql('CREATE INDEX IDX_6940A7FE5697F554 ON "parts" (id_category)');
+ $this->addSql('CREATE INDEX IDX_6940A7FE7E371A10 ON "parts" (id_footprint)');
+ $this->addSql('CREATE INDEX IDX_6940A7FE2626CEF9 ON "parts" (id_part_unit)');
+ $this->addSql('CREATE INDEX IDX_6940A7FE1ECB93AE ON "parts" (id_manufacturer)');
+ $this->addSql('CREATE UNIQUE INDEX UNIQ_6940A7FE81081E9B ON "parts" (order_orderdetails_id)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__pricedetails AS SELECT id, id_currency, orderdetails_id, price, price_related_quantity, min_discount_quantity, manual_input, last_modified, datetime_added FROM "pricedetails"');
+ $this->addSql('DROP TABLE "pricedetails"');
+ $this->addSql('CREATE TABLE "pricedetails" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, id_currency INTEGER DEFAULT NULL, orderdetails_id INTEGER NOT NULL, price NUMERIC(11, 5) NOT NULL --
+(DC2Type:big_decimal)
+ , price_related_quantity DOUBLE PRECISION NOT NULL, min_discount_quantity DOUBLE PRECISION NOT NULL, manual_input BOOLEAN NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL)');
+ $this->addSql('INSERT INTO "pricedetails" (id, id_currency, orderdetails_id, price, price_related_quantity, min_discount_quantity, manual_input, last_modified, datetime_added) SELECT id, id_currency, orderdetails_id, price, price_related_quantity, min_discount_quantity, manual_input, last_modified, datetime_added FROM __temp__pricedetails');
+ $this->addSql('DROP TABLE __temp__pricedetails');
+ $this->addSql('CREATE INDEX IDX_C68C4459398D64AA ON "pricedetails" (id_currency)');
+ $this->addSql('CREATE INDEX IDX_C68C44594A01DDC7 ON "pricedetails" (orderdetails_id)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__storelocations AS SELECT id, parent_id, storage_type_id, id_preview_attachement, is_full, only_single_part, limit_to_existing_parts, comment, not_selectable, name, last_modified, datetime_added FROM "storelocations"');
+ $this->addSql('DROP TABLE "storelocations"');
+ $this->addSql('CREATE TABLE "storelocations" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, storage_type_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, is_full BOOLEAN NOT NULL, only_single_part BOOLEAN NOT NULL, limit_to_existing_parts BOOLEAN NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL)');
+ $this->addSql('INSERT INTO "storelocations" (id, parent_id, storage_type_id, id_preview_attachement, is_full, only_single_part, limit_to_existing_parts, comment, not_selectable, name, last_modified, datetime_added) SELECT id, parent_id, storage_type_id, id_preview_attachement, is_full, only_single_part, limit_to_existing_parts, comment, not_selectable, name, last_modified, datetime_added FROM __temp__storelocations');
+ $this->addSql('DROP TABLE __temp__storelocations');
+ $this->addSql('CREATE INDEX IDX_7517020727ACA70 ON "storelocations" (parent_id)');
+ $this->addSql('CREATE INDEX IDX_7517020B270BFF1 ON "storelocations" (storage_type_id)');
+ $this->addSql('CREATE INDEX IDX_75170206DEDCEC2 ON "storelocations" (id_preview_attachement)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__suppliers AS SELECT id, parent_id, default_currency_id, id_preview_attachement, shipping_costs, address, phone_number, fax_number, email_address, website, auto_product_url, comment, not_selectable, name, last_modified, datetime_added FROM "suppliers"');
+ $this->addSql('DROP TABLE "suppliers"');
+ $this->addSql('CREATE TABLE "suppliers" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, parent_id INTEGER DEFAULT NULL, default_currency_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, shipping_costs NUMERIC(11, 5) DEFAULT NULL --
+(DC2Type:big_decimal)
+ , address VARCHAR(255) NOT NULL, phone_number VARCHAR(255) NOT NULL, fax_number VARCHAR(255) NOT NULL, email_address VARCHAR(255) NOT NULL, website VARCHAR(255) NOT NULL, auto_product_url VARCHAR(255) NOT NULL, comment CLOB NOT NULL, not_selectable BOOLEAN NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL)');
+ $this->addSql('INSERT INTO "suppliers" (id, parent_id, default_currency_id, id_preview_attachement, shipping_costs, address, phone_number, fax_number, email_address, website, auto_product_url, comment, not_selectable, name, last_modified, datetime_added) SELECT id, parent_id, default_currency_id, id_preview_attachement, shipping_costs, address, phone_number, fax_number, email_address, website, auto_product_url, comment, not_selectable, name, last_modified, datetime_added FROM __temp__suppliers');
+ $this->addSql('DROP TABLE __temp__suppliers');
+ $this->addSql('CREATE INDEX IDX_AC28B95C727ACA70 ON "suppliers" (parent_id)');
+ $this->addSql('CREATE INDEX IDX_AC28B95CECD792C0 ON "suppliers" (default_currency_id)');
+ $this->addSql('CREATE INDEX IDX_AC28B95C6DEDCEC2 ON "suppliers" (id_preview_attachement)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__u2f_keys AS SELECT id, user_id, key_handle, public_key, certificate, counter, name, last_modified, datetime_added FROM u2f_keys');
+ $this->addSql('DROP TABLE u2f_keys');
+ $this->addSql('CREATE TABLE u2f_keys (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, user_id INTEGER DEFAULT NULL, key_handle VARCHAR(128) NOT NULL, public_key VARCHAR(255) NOT NULL, certificate CLOB NOT NULL, counter VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL)');
+ $this->addSql('INSERT INTO u2f_keys (id, user_id, key_handle, public_key, certificate, counter, name, last_modified, datetime_added) SELECT id, user_id, key_handle, public_key, certificate, counter, name, last_modified, datetime_added FROM __temp__u2f_keys');
+ $this->addSql('DROP TABLE __temp__u2f_keys');
+ $this->addSql('CREATE INDEX IDX_4F4ADB4BA76ED395 ON u2f_keys (user_id)');
+ $this->addSql('CREATE UNIQUE INDEX user_unique ON u2f_keys (user_id, key_handle)');
+ $this->addSql('CREATE TEMPORARY TABLE __temp__users AS SELECT id, group_id, currency_id, id_preview_attachement, disabled, config_theme, pw_reset_token, config_instock_comment_a, config_instock_comment_w, trusted_device_cookie_version, backup_codes, google_authenticator_secret, config_timezone, config_language, email, department, last_name, first_name, need_pw_change, password, name, settings, backup_codes_generation_date, pw_reset_expires, last_modified, datetime_added, perms_system, perms_groups, perms_users, perms_self, perms_system_config, perms_system_database, perms_parts, perms_parts_name, perms_parts_category, perms_parts_description, perms_parts_minamount, perms_parts_footprint, perms_parts_lots, perms_parts_tags, perms_parts_unit, perms_parts_mass, perms_parts_manufacturer, perms_parts_status, perms_parts_mpn, perms_parts_comment, perms_parts_order, perms_parts_orderdetails, perms_parts_prices, perms_parts_parameters, perms_parts_attachements, perms_devices, perms_devices_parts, perms_storelocations, perms_footprints, perms_categories, perms_suppliers, perms_manufacturers, perms_attachement_types, perms_currencies, perms_measurement_units, perms_tools, perms_labels FROM "users"');
+ $this->addSql('DROP TABLE "users"');
+ $this->addSql('CREATE TABLE "users" (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, group_id INTEGER DEFAULT NULL, currency_id INTEGER DEFAULT NULL, id_preview_attachement INTEGER DEFAULT NULL, disabled BOOLEAN NOT NULL, config_theme VARCHAR(255) DEFAULT NULL, pw_reset_token VARCHAR(255) DEFAULT NULL, config_instock_comment_a CLOB NOT NULL, config_instock_comment_w CLOB NOT NULL, trusted_device_cookie_version INTEGER NOT NULL, backup_codes CLOB NOT NULL --
+(DC2Type:json)
+ , google_authenticator_secret VARCHAR(255) DEFAULT NULL, config_timezone VARCHAR(255) DEFAULT NULL, config_language VARCHAR(255) DEFAULT NULL, email VARCHAR(255) DEFAULT NULL, department VARCHAR(255) DEFAULT NULL, last_name VARCHAR(255) DEFAULT NULL, first_name VARCHAR(255) DEFAULT NULL, need_pw_change BOOLEAN NOT NULL, password VARCHAR(255) DEFAULT NULL, name VARCHAR(180) NOT NULL, settings CLOB NOT NULL --
+(DC2Type:json)
+ , backup_codes_generation_date DATETIME DEFAULT NULL, pw_reset_expires DATETIME DEFAULT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, perms_system INTEGER NOT NULL, perms_groups INTEGER NOT NULL, perms_users INTEGER NOT NULL, perms_self INTEGER NOT NULL, perms_system_config INTEGER NOT NULL, perms_system_database INTEGER NOT NULL, perms_parts BIGINT NOT NULL, perms_parts_name SMALLINT NOT NULL, perms_parts_category SMALLINT NOT NULL, perms_parts_description SMALLINT NOT NULL, perms_parts_minamount SMALLINT NOT NULL, perms_parts_footprint SMALLINT NOT NULL, perms_parts_lots SMALLINT NOT NULL, perms_parts_tags SMALLINT NOT NULL, perms_parts_unit SMALLINT NOT NULL, perms_parts_mass SMALLINT NOT NULL, perms_parts_manufacturer SMALLINT NOT NULL, perms_parts_status SMALLINT NOT NULL, perms_parts_mpn SMALLINT NOT NULL, perms_parts_comment SMALLINT NOT NULL, perms_parts_order SMALLINT NOT NULL, perms_parts_orderdetails SMALLINT NOT NULL, perms_parts_prices SMALLINT NOT NULL, perms_parts_parameters SMALLINT NOT NULL, perms_parts_attachements SMALLINT NOT NULL, perms_devices INTEGER NOT NULL, perms_devices_parts INTEGER NOT NULL, perms_storelocations INTEGER NOT NULL, perms_footprints INTEGER NOT NULL, perms_categories INTEGER NOT NULL, perms_suppliers INTEGER NOT NULL, perms_manufacturers INTEGER NOT NULL, perms_attachement_types INTEGER NOT NULL, perms_currencies INTEGER NOT NULL, perms_measurement_units INTEGER NOT NULL, perms_tools INTEGER NOT NULL, perms_labels INTEGER NOT NULL)');
+ $this->addSql('INSERT INTO "users" (id, group_id, currency_id, id_preview_attachement, disabled, config_theme, pw_reset_token, config_instock_comment_a, config_instock_comment_w, trusted_device_cookie_version, backup_codes, google_authenticator_secret, config_timezone, config_language, email, department, last_name, first_name, need_pw_change, password, name, settings, backup_codes_generation_date, pw_reset_expires, last_modified, datetime_added, perms_system, perms_groups, perms_users, perms_self, perms_system_config, perms_system_database, perms_parts, perms_parts_name, perms_parts_category, perms_parts_description, perms_parts_minamount, perms_parts_footprint, perms_parts_lots, perms_parts_tags, perms_parts_unit, perms_parts_mass, perms_parts_manufacturer, perms_parts_status, perms_parts_mpn, perms_parts_comment, perms_parts_order, perms_parts_orderdetails, perms_parts_prices, perms_parts_parameters, perms_parts_attachements, perms_devices, perms_devices_parts, perms_storelocations, perms_footprints, perms_categories, perms_suppliers, perms_manufacturers, perms_attachement_types, perms_currencies, perms_measurement_units, perms_tools, perms_labels) SELECT id, group_id, currency_id, id_preview_attachement, disabled, config_theme, pw_reset_token, config_instock_comment_a, config_instock_comment_w, trusted_device_cookie_version, backup_codes, google_authenticator_secret, config_timezone, config_language, email, department, last_name, first_name, need_pw_change, password, name, settings, backup_codes_generation_date, pw_reset_expires, last_modified, datetime_added, perms_system, perms_groups, perms_users, perms_self, perms_system_config, perms_system_database, perms_parts, perms_parts_name, perms_parts_category, perms_parts_description, perms_parts_minamount, perms_parts_footprint, perms_parts_lots, perms_parts_tags, perms_parts_unit, perms_parts_mass, perms_parts_manufacturer, perms_parts_status, perms_parts_mpn, perms_parts_comment, perms_parts_order, perms_parts_orderdetails, perms_parts_prices, perms_parts_parameters, perms_parts_attachements, perms_devices, perms_devices_parts, perms_storelocations, perms_footprints, perms_categories, perms_suppliers, perms_manufacturers, perms_attachement_types, perms_currencies, perms_measurement_units, perms_tools, perms_labels FROM __temp__users');
+ $this->addSql('DROP TABLE __temp__users');
+ $this->addSql('CREATE UNIQUE INDEX UNIQ_1483A5E95E237E06 ON "users" (name)');
+ $this->addSql('CREATE INDEX IDX_1483A5E9FE54D947 ON "users" (group_id)');
+ $this->addSql('CREATE INDEX IDX_1483A5E938248176 ON "users" (currency_id)');
+ $this->addSql('CREATE INDEX IDX_1483A5E96DEDCEC2 ON "users" (id_preview_attachement)');
+ }
+}
diff --git a/migrations/Version20221003212851.php b/migrations/Version20221003212851.php
new file mode 100644
index 00000000..3a7379ca
--- /dev/null
+++ b/migrations/Version20221003212851.php
@@ -0,0 +1,50 @@
+addSql('CREATE TABLE webauthn_keys (id INT AUTO_INCREMENT NOT NULL, user_id INT DEFAULT NULL, public_key_credential_id LONGTEXT NOT NULL COMMENT \'(DC2Type:base64)\', type VARCHAR(255) NOT NULL, transports LONGTEXT NOT NULL COMMENT \'(DC2Type:array)\', attestation_type VARCHAR(255) NOT NULL, trust_path LONGTEXT NOT NULL COMMENT \'(DC2Type:trust_path)\', aaguid TINYTEXT NOT NULL COMMENT \'(DC2Type:aaguid)\', credential_public_key LONGTEXT NOT NULL COMMENT \'(DC2Type:base64)\', user_handle VARCHAR(255) NOT NULL, counter INT NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, INDEX IDX_799FD143A76ED395 (user_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
+ $this->addSql('ALTER TABLE webauthn_keys ADD CONSTRAINT FK_799FD143A76ED395 FOREIGN KEY (user_id) REFERENCES `users` (id)');
+ }
+
+ public function mySQLDown(Schema $schema): void
+ {
+ // this down() migration is auto-generated, please modify it to your needs
+ $this->addSql('ALTER TABLE webauthn_keys DROP FOREIGN KEY FK_799FD143A76ED395');
+ $this->addSql('DROP TABLE webauthn_keys');
+ }
+
+ public function sqLiteUp(Schema $schema): void
+ {
+ $this->addSql('CREATE TABLE webauthn_keys (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, user_id INTEGER DEFAULT NULL, public_key_credential_id CLOB NOT NULL --(DC2Type:base64)
+ , type VARCHAR(255) NOT NULL, transports CLOB NOT NULL --(DC2Type:array)
+ , attestation_type VARCHAR(255) NOT NULL, trust_path CLOB NOT NULL --(DC2Type:trust_path)
+ , aaguid CLOB NOT NULL --(DC2Type:aaguid)
+ , credential_public_key CLOB NOT NULL --(DC2Type:base64)
+ , user_handle VARCHAR(255) NOT NULL, counter INTEGER NOT NULL, name VARCHAR(255) NOT NULL, last_modified DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, datetime_added DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL, CONSTRAINT FK_799FD143A76ED395 FOREIGN KEY (user_id) REFERENCES "users" (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('CREATE INDEX IDX_799FD143A76ED395 ON webauthn_keys (user_id)');
+ }
+
+ public function sqLiteDown(Schema $schema): void
+ {
+ $this->addSql('DROP TABLE webauthn_keys');
+ }
+}
diff --git a/package.json b/package.json
index 225ae023..b23e4a63 100644
--- a/package.json
+++ b/package.json
@@ -1,18 +1,22 @@
{
"devDependencies": {
+ "@babel/core": "^7.19.6",
+ "@babel/preset-env": "^7.19.4",
"@fortawesome/fontawesome-free": "^6.1.1",
"@hotwired/stimulus": "^3.0.0",
"@hotwired/turbo": "^7.0.1",
"@popperjs/core": "^2.10.2",
"@symfony/stimulus-bridge": "^3.2.0",
"@symfony/ux-turbo": "file:vendor/symfony/ux-turbo/Resources/assets",
- "@symfony/webpack-encore": "^3.0.0",
+ "@symfony/webpack-encore": "^4.1.0",
"bootstrap": "^5.1.3",
"core-js": "^3.23.0",
"jquery": "^3.5.1",
"popper.js": "^1.14.7",
"regenerator-runtime": "^0.13.9",
+ "webpack": "^5.74.0",
"webpack-bundle-analyzer": "^4.3.0",
+ "webpack-cli": "^4.10.0",
"webpack-notifier": "^1.15.0"
},
"license": "AGPL-3.0-or-later",
@@ -83,7 +87,6 @@
"stimulus-use": "^0.50.0",
"tom-select": "^2.1.0",
"ts-loader": "^9.2.6",
- "typescript": "^4.0.2",
- "u2f-api": "^1.1.1"
+ "typescript": "^4.0.2"
}
}
diff --git a/src/Controller/AdminPages/BaseAdminController.php b/src/Controller/AdminPages/BaseAdminController.php
index dbbf9037..f64a8648 100644
--- a/src/Controller/AdminPages/BaseAdminController.php
+++ b/src/Controller/AdminPages/BaseAdminController.php
@@ -81,6 +81,8 @@ use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Validator\ConstraintViolationList;
use Symfony\Contracts\Translation\TranslatorInterface;
+use function Symfony\Component\Translation\t;
+
abstract class BaseAdminController extends AbstractController
{
protected $entity_class = '';
@@ -419,7 +421,7 @@ abstract class BaseAdminController extends AbstractController
/** @var AbstractPartsContainingRepository $repo */
$repo = $this->entityManager->getRepository($this->entity_class);
if ($repo->getPartsCount($entity) > 0) {
- $this->addFlash('error', 'entity.delete.must_not_contain_parts');
+ $this->addFlash('error', t('entity.delete.must_not_contain_parts', ['%PATH%' => $entity->getFullPath()]));
return false;
}
@@ -442,7 +444,18 @@ abstract class BaseAdminController extends AbstractController
//Check if we need to remove recursively
if ($entity instanceof AbstractStructuralDBElement && $request->get('delete_recursive', false)) {
- $recursionHelper->delete($entity, false);
+ $can_delete = true;
+ //Check if any of the children can not be deleted, cause it contains parts
+ $recursionHelper->execute($entity, function (AbstractStructuralDBElement $element) use (&$can_delete) {
+ if(!$this->deleteCheck($element)) {
+ $can_delete = false;
+ }
+ });
+ if($can_delete) {
+ $recursionHelper->delete($entity, false);
+ } else {
+ return $this->redirectToRoute($this->route_base.'_edit', ['id' => $entity->getID()]);
+ }
} else {
if ($entity instanceof AbstractStructuralDBElement) {
$parent = $entity->getParent();
diff --git a/src/Controller/PartListsController.php b/src/Controller/PartListsController.php
index 7defc282..fdd01821 100644
--- a/src/Controller/PartListsController.php
+++ b/src/Controller/PartListsController.php
@@ -80,6 +80,8 @@ class PartListsController extends AbstractController
*/
public function tableAction(Request $request, PartsTableActionHandler $actionHandler): Response
{
+ $this->denyAccessUnlessGranted('@parts.edit');
+
$redirect = $request->request->get('redirect_back');
$ids = $request->request->get('ids');
$action = $request->request->get('action');
@@ -137,6 +139,8 @@ class PartListsController extends AbstractController
*/
protected function showListWithFilter(Request $request, string $template, ?callable $filter_changer = null, ?callable $form_changer = null, array $additonal_template_vars = [], array $additional_table_vars = []): Response
{
+ $this->denyAccessUnlessGranted('@parts.read');
+
$formRequest = clone $request;
$formRequest->setMethod('GET');
$filter = new PartFilter($this->nodesListBuilder);
diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php
index 020a5e33..a8a2b860 100644
--- a/src/Controller/UserController.php
+++ b/src/Controller/UserController.php
@@ -113,7 +113,10 @@ class UserController extends AdminPages\BaseAdminController
$entity->setGoogleAuthenticatorSecret(null);
$entity->setBackupCodes([]);
//Remove all U2F keys
- foreach ($entity->getU2FKeys() as $key) {
+ foreach ($entity->getLegacyU2FKeys() as $key) {
+ $em->remove($key);
+ }
+ foreach ($entity->getWebAuthnKeys() as $key) {
$em->remove($key);
}
//Invalidate trusted devices
diff --git a/src/Controller/UserSettingsController.php b/src/Controller/UserSettingsController.php
index 0fa35881..27d80c66 100644
--- a/src/Controller/UserSettingsController.php
+++ b/src/Controller/UserSettingsController.php
@@ -44,6 +44,7 @@ namespace App\Controller;
use App\Entity\UserSystem\U2FKey;
use App\Entity\UserSystem\User;
+use App\Entity\UserSystem\WebauthnKey;
use App\Events\SecurityEvent;
use App\Events\SecurityEvents;
use App\Form\TFAGoogleSettingsType;
@@ -130,6 +131,7 @@ class UserSettingsController extends AbstractController
}
if ($this->isCsrfTokenValid('delete'.$user->getId(), $request->request->get('_token'))) {
+ //Handle U2F key removal
if ($request->request->has('key_id')) {
$key_id = $request->request->get('key_id');
$key_repo = $entityManager->getRepository(U2FKey::class);
@@ -138,14 +140,14 @@ class UserSettingsController extends AbstractController
if (null === $u2f) {
$this->addFlash('danger', 'tfa_u2f.u2f_delete.not_existing');
- throw new RuntimeException('Key not existing!');
+ return $this->redirectToRoute('user_settings');
}
//User can only delete its own U2F keys
if ($u2f->getUser() !== $user) {
$this->addFlash('danger', 'tfa_u2f.u2f_delete.access_denied');
- throw new RuntimeException('You can only delete your own U2F keys!');
+ return $this->redirectToRoute('user_settings');
}
$backupCodeManager->disableBackupCodesIfUnused($user);
@@ -153,6 +155,31 @@ class UserSettingsController extends AbstractController
$entityManager->flush();
$this->addFlash('success', 'tfa.u2f.u2f_delete.success');
+ $security_event = new SecurityEvent($user);
+ $this->eventDispatcher->dispatch($security_event, SecurityEvents::U2F_REMOVED);
+ } else if ($request->request->has('webauthn_key_id')) {
+ $key_id = $request->request->get('webauthn_key_id');
+ $key_repo = $entityManager->getRepository(WebauthnKey::class);
+ /** @var WebauthnKey|null $key */
+ $key = $key_repo->find($key_id);
+ if (null === $key) {
+ $this->addFlash('error', 'tfa_u2f.u2f_delete.not_existing');
+
+ return $this->redirectToRoute('user_settings');
+ }
+
+ //User can only delete its own U2F keys
+ if ($key->getUser() !== $user) {
+ $this->addFlash('error', 'tfa_u2f.u2f_delete.access_denied');
+
+ return $this->redirectToRoute('user_settings');
+ }
+
+ $backupCodeManager->disableBackupCodesIfUnused($user);
+ $entityManager->remove($key);
+ $entityManager->flush();
+ $this->addFlash('success', 'tfa.u2f.u2f_delete.success');
+
$security_event = new SecurityEvent($user);
$this->eventDispatcher->dispatch($security_event, SecurityEvents::U2F_REMOVED);
}
diff --git a/src/Controller/WebauthnKeyRegistrationController.php b/src/Controller/WebauthnKeyRegistrationController.php
new file mode 100644
index 00000000..945fc2f0
--- /dev/null
+++ b/src/Controller/WebauthnKeyRegistrationController.php
@@ -0,0 +1,60 @@
+getMethod() === 'POST') {
+ $webauthnResponse = $request->request->get('_auth_code');
+
+ //Retrieve other data from the form, that you want to store with the key
+ $keyName = $request->request->get('keyName');
+ if (empty($keyName)) {
+ $keyName = 'Key ' . date('Y-m-d H:i:s');
+ }
+
+ //Check the response
+ try {
+ $new_key = $registrationHelper->checkRegistrationResponse($webauthnResponse);
+ } catch (\Exception $exception) {
+ $this->addFlash('error', t('tfa_u2f.add_key.registration_error'));
+ return $this->redirectToRoute('webauthn_register');
+ }
+
+ $keyEntity = WebauthnKey::fromRegistration($new_key);
+ $keyEntity->setName($keyName);
+ $keyEntity->setUser($this->getUser());
+
+ $em->persist($keyEntity);
+ $em->flush();
+
+
+ $this->addFlash('success', 'Key registered successfully');
+ return $this->redirectToRoute('user_settings');
+ }
+
+
+ return $this->render(
+ 'Security/Webauthn/webauthn_register.html.twig',
+ [
+ 'registrationRequest' => $registrationHelper->generateRegistrationRequestAsJSON(),
+ ]
+ );
+ }
+}
\ No newline at end of file
diff --git a/src/DataTables/AttachmentDataTable.php b/src/DataTables/AttachmentDataTable.php
index 1ac542f7..91439a2d 100644
--- a/src/DataTables/AttachmentDataTable.php
+++ b/src/DataTables/AttachmentDataTable.php
@@ -226,7 +226,7 @@ final class AttachmentDataTable implements DataTableTypeInterface
private function getQuery(QueryBuilder $builder): void
{
- $builder->distinct()->select('attachment')
+ $builder->select('attachment')
->addSelect('attachment_type')
//->addSelect('element')
->from(Attachment::class, 'attachment')
diff --git a/src/DataTables/LogDataTable.php b/src/DataTables/LogDataTable.php
index 37c0ba13..8842ac3a 100644
--- a/src/DataTables/LogDataTable.php
+++ b/src/DataTables/LogDataTable.php
@@ -297,7 +297,7 @@ class LogDataTable implements DataTableTypeInterface
protected function getQuery(QueryBuilder $builder, array $options): void
{
- $builder->distinct()->select('log')
+ $builder->select('log')
->addSelect('user')
->from(AbstractLogEntry::class, 'log')
->leftJoin('log.user', 'user');
diff --git a/src/DataTables/PartsDataTable.php b/src/DataTables/PartsDataTable.php
index eae7cb6b..16f530dd 100644
--- a/src/DataTables/PartsDataTable.php
+++ b/src/DataTables/PartsDataTable.php
@@ -292,8 +292,8 @@ final class PartsDataTable implements DataTableTypeInterface
private function getQuery(QueryBuilder $builder): void
{
-
- $builder->distinct()->select('part')
+ //Distinct is very slow here, do not add this here (also I think this is not needed here, as the id column is always distinct)
+ $builder->select('part')
->addSelect('category')
->addSelect('footprint')
->addSelect('manufacturer')
diff --git a/src/Entity/Attachments/Attachment.php b/src/Entity/Attachments/Attachment.php
index d0dbc568..b2aaca5c 100644
--- a/src/Entity/Attachments/Attachment.php
+++ b/src/Entity/Attachments/Attachment.php
@@ -34,7 +34,12 @@ use LogicException;
* Class Attachment.
*
* @ORM\Entity(repositoryClass="App\Repository\AttachmentRepository")
- * @ORM\Table(name="`attachments`")
+ * @ORM\Table(name="`attachments`", indexes={
+ * @ORM\Index(name="attachments_idx_id_element_id_class_name", columns={"id", "element_id", "class_name"}),
+ * @ORM\Index(name="attachments_idx_class_name_id", columns={"class_name", "id"}),
+ * @ORM\Index(name="attachment_name_idx", columns={"name"}),
+ * @ORM\Index(name="attachment_element_idx", columns={"class_name", "element_id"})
+ * })
* @ORM\InheritanceType("SINGLE_TABLE")
* @ORM\DiscriminatorColumn(name="class_name", type="string")
* @ORM\DiscriminatorMap({
@@ -104,7 +109,7 @@ abstract class Attachment extends AbstractNamedDBElement
/**
* @var AttachmentType
* @ORM\ManyToOne(targetEntity="AttachmentType", inversedBy="attachments_with_type")
- * @ORM\JoinColumn(name="type_id", referencedColumnName="id")
+ * @ORM\JoinColumn(name="type_id", referencedColumnName="id", nullable=false)
* @Selectable()
* @Assert\NotNull(message="validator.attachment.must_not_be_null")
*/
diff --git a/src/Entity/Attachments/AttachmentType.php b/src/Entity/Attachments/AttachmentType.php
index 3cb0e273..365bac94 100644
--- a/src/Entity/Attachments/AttachmentType.php
+++ b/src/Entity/Attachments/AttachmentType.php
@@ -34,7 +34,10 @@ use Symfony\Component\Validator\Constraints as Assert;
* Class AttachmentType.
*
* @ORM\Entity(repositoryClass="App\Repository\StructuralDBElementRepository")
- * @ORM\Table(name="`attachment_types`")
+ * @ORM\Table(name="`attachment_types`", indexes={
+ * @ORM\Index(name="attachment_types_idx_name", columns={"name"}),
+ * @ORM\Index(name="attachment_types_idx_parent_name", columns={"parent_id", "name"}),
+ * })
*/
class AttachmentType extends AbstractStructuralDBElement
{
diff --git a/src/Entity/Base/AbstractStructuralDBElement.php b/src/Entity/Base/AbstractStructuralDBElement.php
index 7eb4e82e..b4617bad 100644
--- a/src/Entity/Base/AbstractStructuralDBElement.php
+++ b/src/Entity/Base/AbstractStructuralDBElement.php
@@ -93,7 +93,7 @@ abstract class AbstractStructuralDBElement extends AttachmentContainingDBElement
* @NoneOfItsChildren()
* @Groups({"include_parents"})
*/
- protected $parent;
+ protected $parent = null;
/** @var string[] all names of all parent elements as a array of strings,
* the last array element is the name of the element itself
@@ -271,16 +271,17 @@ abstract class AbstractStructuralDBElement extends AttachmentContainingDBElement
*/
public function getSubelements(): iterable
{
- return $this->children;
+ return $this->children ?? new ArrayCollection();
}
/**
+ * @see getSubelements()
* @return Collection';
+ }
+
+ /**
+ * Creates a data URI (RFC 2397).
+ * Based on the Twig implementaion from HTMLExtension
+ *
+ * Length validation is not performed on purpose, validation should
+ * be done before calling this filter.
+ *
+ * @return string The generated data URI
+ */
+ private function dataUri(string $data, string $mime): string
+ {
+ $repr = 'data:';
+
+ $repr .= $mime;
+ if (0 === strpos($mime, 'text/')) {
+ $repr .= ','.rawurlencode($data);
+ } else {
+ $repr .= ';base64,'.base64_encode($data);
+ }
+
+ return $repr;
+ }
+
public function generateSVG(LabelOptions $options, object $target): ?string
{
$barcode = new Barcode();
diff --git a/src/Services/LabelSystem/LabelTextReplacer.php b/src/Services/LabelSystem/LabelTextReplacer.php
index be09e8bd..b0b69aa0 100644
--- a/src/Services/LabelSystem/LabelTextReplacer.php
+++ b/src/Services/LabelSystem/LabelTextReplacer.php
@@ -71,7 +71,7 @@ final class LabelTextReplacer
public function replace(string $lines, object $target): string
{
$patterns = [
- '/(\[\[[A-Z_]+\]\])/' => function ($match) use ($target) {
+ '/(\[\[[A-Z_0-9]+\]\])/' => function ($match) use ($target) {
return $this->handlePlaceholder($match[0], $target);
},
];
diff --git a/src/Services/LabelSystem/PlaceholderProviders/BarcodeProvider.php b/src/Services/LabelSystem/PlaceholderProviders/BarcodeProvider.php
new file mode 100644
index 00000000..573d578b
--- /dev/null
+++ b/src/Services/LabelSystem/PlaceholderProviders/BarcodeProvider.php
@@ -0,0 +1,59 @@
+barcodeGenerator = $barcodeGenerator;
+ $this->barcodeContentGenerator = $barcodeContentGenerator;
+ }
+
+ public function replace(string $placeholder, object $label_target, array $options = []): ?string
+ {
+ if ('[[1D_CONTENT]]' === $placeholder) {
+ try {
+ return $this->barcodeContentGenerator->get1DBarcodeContent($label_target);
+ } catch (\InvalidArgumentException $e) {
+ return 'ERROR!';
+ }
+ }
+
+ if ('[[2D_CONTENT]]' === $placeholder) {
+ try {
+ return $this->barcodeContentGenerator->getURLContent($label_target);
+ } catch (\InvalidArgumentException $e) {
+ return 'ERROR!';
+ }
+ }
+
+ if ('[[BARCODE_QR]]' === $placeholder) {
+ $label_options = new LabelOptions();
+ $label_options->setBarcodeType('qr');
+ return $this->barcodeGenerator->generateHTMLBarcode($label_options, $label_target);
+ }
+
+ if ('[[BARCODE_C39]]' === $placeholder) {
+ $label_options = new LabelOptions();
+ $label_options->setBarcodeType('code39');
+ return $this->barcodeGenerator->generateHTMLBarcode($label_options, $label_target);
+ }
+
+ if ('[[BARCODE_C128]]' === $placeholder) {
+ $label_options = new LabelOptions();
+ $label_options->setBarcodeType('code128');
+ return $this->barcodeGenerator->generateHTMLBarcode($label_options, $label_target);
+ }
+
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/src/Services/LabelSystem/PlaceholderProviders/GlobalProviders.php b/src/Services/LabelSystem/PlaceholderProviders/GlobalProviders.php
index 813595aa..65db3788 100644
--- a/src/Services/LabelSystem/PlaceholderProviders/GlobalProviders.php
+++ b/src/Services/LabelSystem/PlaceholderProviders/GlobalProviders.php
@@ -27,6 +27,8 @@ use App\Entity\UserSystem\User;
use DateTime;
use IntlDateFormatter;
use Locale;
+use Symfony\Component\Routing\Generator\UrlGenerator;
+use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Security\Core\Security;
/**
@@ -36,11 +38,13 @@ final class GlobalProviders implements PlaceholderProviderInterface
{
private string $partdb_title;
private Security $security;
+ private UrlGeneratorInterface $url_generator;
- public function __construct(string $partdb_title, Security $security)
+ public function __construct(string $partdb_title, Security $security, UrlGeneratorInterface $url_generator)
{
$this->partdb_title = $partdb_title;
$this->security = $security;
+ $this->url_generator = $url_generator;
}
public function replace(string $placeholder, object $label_target, array $options = []): ?string
@@ -101,6 +105,10 @@ final class GlobalProviders implements PlaceholderProviderInterface
return $formatter->format($now);
}
+ if ('[[INSTANCE_URL]]' === $placeholder) {
+ return $this->url_generator->generate('homepage', [], UrlGenerator::ABSOLUTE_URL);
+ }
+
return null;
}
}
diff --git a/src/Services/LogSystem/TimeTravel.php b/src/Services/LogSystem/TimeTravel.php
index 6c61a67c..f574d522 100644
--- a/src/Services/LogSystem/TimeTravel.php
+++ b/src/Services/LogSystem/TimeTravel.php
@@ -39,6 +39,7 @@ use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\Mapping\ClassMetadata;
use Doctrine\ORM\Mapping\MappingException;
+use DoctrineExtensions\Query\Mysql\Date;
use Exception;
use InvalidArgumentException;
use ReflectionClass;
@@ -171,6 +172,22 @@ class TimeTravel
}
}
+ /**
+ * This function decodes the array which is created during the json_encode of a datetime object and returns a DateTime object.
+ * @param array $input
+ * @return DateTime
+ * @throws Exception
+ */
+ private function dateTimeDecode(?array $input): ?\DateTime
+ {
+ //Allow null values
+ if ($input === null) {
+ return null;
+ }
+
+ return new \DateTime($input['date'], new \DateTimeZone($input['timezone']));
+ }
+
/**
* Apply the changeset in the given LogEntry to the element.
*
@@ -195,6 +212,10 @@ class TimeTravel
$data = BigDecimal::of($data);
}
+ if (!$data instanceof DateTime && ('datetime' === $metadata->getFieldMapping($field)['type'])) {
+ $data = $this->dateTimeDecode($data);
+ }
+
$this->setField($element, $field, $data);
}
if ($metadata->hasAssociation($field)) {
diff --git a/src/Services/TFA/BackupCodeManager.php b/src/Services/TFA/BackupCodeManager.php
index 4447c211..ae3cae17 100644
--- a/src/Services/TFA/BackupCodeManager.php
+++ b/src/Services/TFA/BackupCodeManager.php
@@ -76,6 +76,10 @@ class BackupCodeManager
return;
}
+ if ($user->isWebAuthnAuthenticatorEnabled()) {
+ return;
+ }
+
$user->setBackupCodes([]);
}
diff --git a/src/Services/Trees/SidebarTreeUpdater.php b/src/Services/Trees/SidebarTreeUpdater.php
new file mode 100644
index 00000000..444723db
--- /dev/null
+++ b/src/Services/Trees/SidebarTreeUpdater.php
@@ -0,0 +1,37 @@
+cache = $treeCache;
+ }
+
+ /**
+ * Returns the time when the sidebar tree was updated the last time.
+ * The frontend uses this information to reload the sidebar tree.
+ * @return \DateTimeInterface
+ */
+ public function getLastTreeUpdate(): \DateTimeInterface
+ {
+ return $this->cache->get(self::CACHE_KEY, function (ItemInterface $item) {
+ $item->expiresAfter(self::TTL);
+
+ //This tag and therfore this whole cache gets cleared by TreeCacheInvalidationListener when a structural element is changed
+ $item->tag('sidebar_tree_update');
+
+ return new \DateTime();
+ });
+ }
+}
\ No newline at end of file
diff --git a/src/Services/UserCacheKeyGenerator.php b/src/Services/UserCacheKeyGenerator.php
index 827479ab..66b88a7d 100644
--- a/src/Services/UserCacheKeyGenerator.php
+++ b/src/Services/UserCacheKeyGenerator.php
@@ -73,13 +73,9 @@ class UserCacheKeyGenerator
$user = $this->security->getUser();
}
- if (!$user instanceof User){
- throw new \RuntimeException('UserCacheKeyGenerator::generateKey() was called without a user, but no user is logged in!');
- }
-
//If the user is null, then treat it as anonymous user.
//When the anonymous user is passed as user then use this path too.
- if (null === $user || User::ID_ANONYMOUS === $user->getID()) {
+ if (null === $user || !($user instanceof User) || User::ID_ANONYMOUS === $user->getID()) {
return 'user$_'.User::ID_ANONYMOUS;
}
diff --git a/symfony.lock b/symfony.lock
index 91b32038..b1db040a 100644
--- a/symfony.lock
+++ b/symfony.lock
@@ -75,12 +75,12 @@
"version": "v0.5.3"
},
"doctrine/doctrine-bundle": {
- "version": "2.5",
+ "version": "2.7",
"recipe": {
"repo": "github.com/symfony/recipes",
- "branch": "master",
+ "branch": "main",
"version": "2.4",
- "ref": "ddddd8249dd55bbda16fa7a45bb7499ef6f8e90e"
+ "ref": "da713d006953b90d1c085c1be480ecdd6c4a95e0"
},
"files": [
"config/packages/doctrine.yaml",
@@ -101,16 +101,16 @@
]
},
"doctrine/doctrine-migrations-bundle": {
- "version": "3.1",
+ "version": "3.2",
"recipe": {
"repo": "github.com/symfony/recipes",
- "branch": "master",
+ "branch": "main",
"version": "3.1",
- "ref": "ee609429c9ee23e22d6fa5728211768f51ed2818"
+ "ref": "1d01ec03c6ecbd67c3375c5478c9a423ae5d6a33"
},
"files": [
- "./config/packages/doctrine_migrations.yaml",
- "./migrations/.gitignore"
+ "config/packages/doctrine_migrations.yaml",
+ "migrations/.gitignore"
]
},
"doctrine/event-manager": {
@@ -176,6 +176,9 @@
"imagine/imagine": {
"version": "1.2.2"
},
+ "jbtronics/2fa-webauthn": {
+ "version": "dev-master"
+ },
"laminas/laminas-code": {
"version": "3.4.1"
},
@@ -252,9 +255,6 @@
"openlss/lib-array2xml": {
"version": "1.0.0"
},
- "paragonie/random_compat": {
- "version": "v9.99.99"
- },
"phenx/php-font-lib": {
"version": "0.5.1"
},
@@ -348,9 +348,6 @@
"psr/simple-cache": {
"version": "1.0.1"
},
- "r/u2f-two-factor-bundle": {
- "version": "dev-scheb/2fa-support"
- },
"roave/security-advisories": {
"version": "dev-master"
},
@@ -397,6 +394,9 @@
"shivas/versioning-bundle": {
"version": "3.1.3"
},
+ "spomky-labs/cbor-bundle": {
+ "version": "v2.0.3"
+ },
"symfony/apache-pack": {
"version": "1.0",
"recipe": {
@@ -652,15 +652,15 @@
"version": "v5.3.4"
},
"symfony/security-bundle": {
- "version": "5.1",
+ "version": "5.4",
"recipe": {
"repo": "github.com/symfony/recipes",
- "branch": "master",
- "version": "5.1",
- "ref": "0a4bae19389d3b9cba1ca0102e3b2bccea724603"
+ "branch": "main",
+ "version": "5.3",
+ "ref": "98f1f2b0d635908c2b40f3675da2d23b1a069d30"
},
"files": [
- "./config/packages/security.yaml"
+ "config/packages/security.yaml"
]
},
"symfony/security-core": {
@@ -757,12 +757,12 @@
]
},
"symfony/webpack-encore-bundle": {
- "version": "1.15",
+ "version": "1.16",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "main",
"version": "1.10",
- "ref": "2e458cc7e6f1df1dad890eb104b81e4f302c9bd4"
+ "ref": "5878c7c28468ca0fdce2497a04cfc66bab0dc3ef"
},
"files": [
"assets/app.js",
@@ -817,6 +817,15 @@
"vimeo/psalm": {
"version": "3.5.1"
},
+ "web-auth/webauthn-symfony-bundle": {
+ "version": "3.3",
+ "recipe": {
+ "repo": "github.com/symfony/recipes-contrib",
+ "branch": "main",
+ "version": "3.0",
+ "ref": "9926090a80c2cceeffe96e6c3312b397ea55d4a7"
+ }
+ },
"webmozart/assert": {
"version": "1.4.0"
},
diff --git a/templates/AdminPages/CompanyAdminBase.html.twig b/templates/AdminPages/CompanyAdminBase.html.twig
index c89372fa..db913ff1 100644
--- a/templates/AdminPages/CompanyAdminBase.html.twig
+++ b/templates/AdminPages/CompanyAdminBase.html.twig
@@ -22,5 +22,6 @@
{% endblock %}
{% block quick_links %}
- {% include 'QuickLinks/_company.html.twig' %}
+ {% import "components/quick_links.macro.html.twig" as quick_links %}
+ {{ quick_links.company(entity) }}
{% endblock %}
\ No newline at end of file
diff --git a/templates/AdminPages/EntityAdminBase.html.twig b/templates/AdminPages/EntityAdminBase.html.twig
index bb5f52ac..25c80466 100644
--- a/templates/AdminPages/EntityAdminBase.html.twig
+++ b/templates/AdminPages/EntityAdminBase.html.twig
@@ -152,7 +152,8 @@
{% if datatable is defined and datatable is not null %}
{% trans %}user.edit.tfa.u2f_keys_count{% endtrans %}: - {% if entity.u2FAuthEnabled %} - {{ entity.u2FKeys | length }} + {% if entity.webAuthnAuthenticatorEnabled %} + {{ (entity.webauthnKeys | length) + (entity.legacyU2FKeys | length) }} {% else %} {% trans %}user.edit.tfa.disabled{% endtrans %} {% endif %} @@ -63,7 +63,7 @@ {% set tfa_disable_disabled = not is_granted('set_password', entity) %} {# Disable button when he has no 2FA activated #} - {% if not entity.u2FAuthEnabled and not entity.googleAuthenticatorEnabled and entity.backupCodes is empty %} + {% if not entity.webAuthnAuthenticatorEnabled and not entity.googleAuthenticatorEnabled and entity.backupCodes is empty %} {% set tfa_disable_disabled = true %} {% endif %} diff --git a/templates/AdminPages/_export_form.html.twig b/templates/AdminPages/_export_form.html.twig index 383a66eb..07b00d43 100644 --- a/templates/AdminPages/_export_form.html.twig +++ b/templates/AdminPages/_export_form.html.twig @@ -1,9 +1,9 @@ -