Account created on 26 September 2008, over 15 years ago
  • Senior Developer / CTO at werk21 
#

Merge Requests

Recent comments

🇩🇪Germany jan kellermann

And it looks good! Thank you very much!

❌ Current weighted contribution credit tier would qualify you for Silver Drupal Certified Partner if you were a part of the program.
Learn more about being a Drupal Certified Partner.
🇩🇪Germany jan kellermann

The patch resolves the problem.
This seems a follow up from https://www.drupal.org/project/tome/issues/3406138 🐛 The 'core_version_requirement' constraint (^9 || ^10) requires the 'core' key not be set Needs review

🇩🇪Germany jan kellermann

If you need this token you can use the attended patch.

🇩🇪Germany jan kellermann

Works for me. Created MR for only change order in dev-tree.

🇩🇪Germany jan kellermann

This bug is fixed in https://www.drupal.org/project/panelizer/issues/3352704 🐛 Drupal 10 compatibility fixes follow up Fixed and already committed to 8.x-4.x-dev so we can close this ticket.

🇩🇪Germany jan kellermann

Big sorry, was a patch for a local patch. Closing ticket.

🇩🇪Germany jan kellermann

Thank you for your work. This version works for us.

🇩🇪Germany jan kellermann

Thank you. Patch solved the problem. Works for me.

🇩🇪Germany jan kellermann

I tested the patch and it resolved the problem. Thank you for your work!

(I can reproduce with editing the content type "basic page". After saving the form i get a WPOD.)

It was only a quick check and I could not test the whole system so I do not set the status to "Reviewed".

🇩🇪Germany jan kellermann

@matslats the last commit for D10 wirh the "half fix" for this issue is only available in Tag 2.0.0-beta3 but not in 2.0.x-branch, so I dont open a merge request. If you merged the commit to 2.0.x I can crate a MR (or you patch this without MR). Best regards.

🇩🇪Germany jan kellermann

In version 2.0.0-beta3 this issue is partly patched in https://git.drupalcode.org/project/area_print/-/commit/cbdfbd4c06fb191c8...
The 2nd replacement I put in the patch #3.
Status stay on reviewed.

🇩🇪Germany jan kellermann

I was having issues with unconverted special characters and created a feature request for optional transliteration using transliteration from Drupal core.
Please check the patch in #3398948 https://www.drupal.org/project/search_api_glossary/issues/3398948 Add Transliteration as option Needs review .
I think having a transliteration option is better than transliterating by default, so I can't set this issue to Reviewed status.

🇩🇪Germany jan kellermann

Unfortunalety I cannot test against 2.x (only 3.x is available). So I created a MR of existing code.
The code is running on a complex drupal since several months without problems.
Many thanks to @andy_w

🇩🇪Germany jan kellermann

Fixed little bug if $field_configurations contains no key fields (for 2.x-dev).

🇩🇪Germany jan kellermann

We have the same problem with module alert_message on the same code position: calling an entity-query in handle() in the middleware.
We can reproduce after saving an entity (via structure menu) in the backend while alter_message is enabled.

I guess after clearing caches there is not the complete drupal code available for the middleware stack. And shield calls via `handle()` > `bypass()` > `basicAuthRequestAuthenticate()` the module `basic_auth` which calls an entity-query.

In alert_message is the same problem here: https://git.drupalcode.org/project/alert_message/-/blob/1.0.x/src/StackM...

So i think it could be more a conceptional problem with the middleware and core; or - if intended - the middleware must avoid entity queries.

🇩🇪Germany jan kellermann

Thank you very much! I can confirm this patch also.

Notice for people who want to add this patch: Remove #3325442 before because it is included in this patch already.

🇩🇪Germany jan kellermann

I would like to support @gisle. To process the data you need an opt-in, not an opt-out. And you must inform about your privacy policy. And I'm not sure where the data is processed (India is not allowed and I didn't find miniorange or xecurify.com on https://www.dataprivacyframework.gov/).

So - please - remove this feature at all. Open source software is not the place to collect privacy data.

🇩🇪Germany jan kellermann

tldr

Add 2 options to prevent information disclosure. The patch is a proof of concept with several todos.

a) email verification disabled

Dont show information that name or mail address are in use, just got to the front page and send an information mail to the account holder.

b) email verification enabled

Introducing a two-step registration.

- In 1st step only ask for mail address and consent to policy privacy. If mail address is in use you get a passwort reset link.
- In 2nd step after getting mail create your account.

Long version

I am not sure if this can be fixed without fundamental changes. The register-form is rudimentary. You have information disclosures, you have no consent for processing privacy data per default, you have no automatic routines for deletion unconfirmed users.

We can mitigate each single point - but everytime many custom solutions or contrib modules may break. And I think almost every page has a custom solution because the register form provides only basic functionality.

In an ideal world you have a two-step register process:

1) In the 1st step the user enter their mail address and consent to the privacy policy of the site. They get on the screen in any case: "Thank you for registration. We send you a mail to the given address." Then a mail with register-token or password-reset will be send. (In a real ideal world this double-opt-in would be a service in core and the data would be saved encrypted). Yes, we need a flood-protection. No user user entity will be created at this point (so we have no problem with no-deletion of orphaned users (privacy violation!).).

2) In the 2nd step the user can create their profile. If the site is working with user names (better use only mail address) you have to inform all users that they will be visible to other registered users (and they may use an anonymous nick name).

But this would break many (most?) existing solutions.

My proposal is to add a info-text and add 2 new options to the account settings formular.

The patch is a proof of concept to show the possible process.

Open todos:

- Account-Settings-Form: The states are not working correct - please click on and off to disable correctly.
- two-step: Encrypt / Decrypt data in keystore.
- two-step: No mail is sent after 1st step, you will be instead redirected to the generated URL to register
- two-step: Remove data form keystore.
- Send mail if registration fails in process without email verification.

The patch should apply to D10.1

Please take this as an offer for discussion.

🇩🇪Germany jan kellermann

We have this problem when page_cache is deserializing a form because somewhere on the way the RequestStack is empty.
We use open social and memcache, so several parts of code can cause this bug. The form is the enroll-action-form embedded in a block.

The MR 3646 mitigated this problem.

TypeError: Drupal\Core\Routing\RequestContext::fromRequest(): Argument #1 ($request) must be of type Symfony\Component\HttpFoundation\Request, null given, [...]
Drupal\Core\Routing\RequestContext->fromRequest() (Line: 28)
Drupal\Core\Routing\RequestContext->fromRequestStack()
call_user_func_array() (Line: 276)
Drupal\Component\DependencyInjection\Container->createService() (Line: 177)
Drupal\Component\DependencyInjection\Container->get() (Line: 434)
Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters() (Line: 273)
Drupal\Component\DependencyInjection\Container->createService() (Line: 449)
Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters() (Line: 237)
Drupal\Component\DependencyInjection\Container->createService() (Line: 177)
Drupal\Component\DependencyInjection\Container->get() (Line: 434)
Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters() (Line: 237)
Drupal\Component\DependencyInjection\Container->createService() (Line: 177)
Drupal\Component\DependencyInjection\Container->get() (Line: 434)
Drupal\Component\DependencyInjection\Container->resolveServicesAndParameters() (Line: 237)
Drupal\Component\DependencyInjection\Container->createService() (Line: 177)
Drupal\Component\DependencyInjection\Container->get() (Line: 89)
Drupal\Core\Form\FormBase->__wakeup()
Memcached->getMulti() (Line: 71)
Drupal\memcache\Driver\MemcachedDriver->getMulti() (Line: 144)
Drupal\memcache\MemcacheBackend->getMultiple() (Line: 136)
Drupal\memcache\MemcacheBackend->get() (Line: 306)
Drupal\page_cache\StackMiddleware\PageCache->get() (Line: 124)
Drupal\page_cache\StackMiddleware\PageCache->lookup() (Line: 82)
Drupal\page_cache\StackMiddleware\PageCache->handle() (Line: 48)
Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle() (Line: 51)
Drupal\Core\StackMiddleware\NegotiationMiddleware->handle() (Line: 23)
Stack\StackedHttpKernel->handle() (Line: 718)
Drupal\Core\DrupalKernel->handle() (Line: 19)
🇩🇪Germany jan kellermann

We may (optionally) consider sending an email when an account is suspended.
Then we have no information disclosure and the account is informed that someone tried something bad and can inform the administrator.

🇩🇪Germany jan kellermann

You cannot write "The account has been temporarily blocked." because then you say that this account exists and you have a privacy data breach!

But this means you have to count the password-requests for every mail address - regardless of whether this account exists or not. If you count only the requests for existing accounts a malicious robot can examine which user accounts exists or not. Imagine this e.g. for a HIV/AIDS Selfhelp portal!

Please be careful with such information to avoid an information disclosure and a privacy violation.

🇩🇪Germany jan kellermann

Patch #17 works for me. Fine!

Maybe you can choose $settings['memcache']['key_prefix']; as $settings['memcache']['persistent'] per default? In shared environment it could be great to have a pconnection for each drupal. Maybe this could be a hint in the README.

Thank you for your work.

🇩🇪Germany jan kellermann

@bnjmnm

> it may be possible to simply use localStorage and not have to use Cookies at all

Any change in the browser needs explicetly to opt in before the change is made. Changes in the browser means cookies, localStorage and every data saved in the browser.

See german law here: https://dsgvo-gesetz.de/ttdsg/25-ttdsg/

🇩🇪Germany jan kellermann

In Europe we have Data Protection Rights (GDPR) and in germany we have a law calles TTDSG for cookies. by this law the user has explicetly to opt in BEFORE a cookie is set - except it is absolutely needed to deliver service (like Session-Cookie). With this idea for additional cookies any Drupal Site in germany needs an additional opt-in for this cookie, because "reducing repaints" is not "absolutely needed to deliver service". Maybe you can do this optional in a theme. But please no unnecessary cookies in core.

From my view not a good idea.

🇩🇪Germany jan kellermann

For me the expected behaviour is, that links that are not accessable are not shown on my page. Therefore I think the apporach of the patch is correct. In every menu we have the same behaviour.

The problem is, that we mixed up an API call (getLanguageSwitchLinks()) and the block for languageswitcher.

I think, we need a 3rd parameter for getLanguageSwitchLinks() with checkAccess=TRUE. Then everyone can get all languageswitch-links via API and can write their own code and show what their want.

For the languageswitch-block I think the expected default behaviour is not to show unaccessable links. It could be a solution to add an option "show link to homepage for missing or unaccessable links". Than the sitebuilder can decide what to do with missing links. But to do this by default like in patch #10/16 seems to invasive for me.

To fix this for current installations I would prefer patch #2, so they can change inaccessable links by their own before access check. But in the long way we should differentiate between API-call and block - and they should write their own block.

Your patch is good for everyone who needs this functionality as soon as possible back! Thank you for this, I am sure the patch is a big help for them. But I dont think this should merged in core.

🇩🇪Germany jan kellermann

At Drupal 9.5 we have this error:

Error: Class "Drupal\panelizer\Plugin\PanelsStorage\ContextDefinition" not found in Drupal\panelizer\Plugin\PanelsStorage\PanelizerDefaultPanelsStorage->getEntityContext() (line 128 of .../modules/contrib/panelizer/src/Plugin/PanelsStorage/PanelizerDefaultPanelsStorage.php).

We attached a new patch for Drupal 9.5 and panelizer 8.x-4.4

Production build 0.69.0 2024