Session messages (or flash messages) implementation
By
landitus, in General Support
-
Recently Browsing 0 members
No registered users viewing this page.
-
Similar Content
-
addHookBefore('Session::redirect', ...) not working if template-settings-based PW redirects are usedBy theoretic
Hi guys and ladies! And thanks for Processwire!
It appears i've got an interesting issue concerning the template-settings-based PW redirects dealing with access control. Any PW template has some access control options i.e. "Login redirect URL or page ID to render". If this option is used for a page having a template with this option filled, a redirect will occur if user is not logged in and/or has insufficient access rights.
I like to hook PW events. In one of my current projects i decided to write an addHookBefore('Session::redirect', ...) which should store the page we are being redirected from. With "regular" redirects like $session->redirect('/somewhere/') this hook works like a charm. But it was strange to see that it doesn't work with the template-settings-based redirect.
I'm too dumb to dive deep inside PW and to examine the whole PW session mechanism. But it could be rather logical if ANY redirect ( no matter template-settings-based or using $session->redirect() ) could be hooked in the same manner.
Okay okay i can forget about template-settings-based redirect and write my own. Just a couple of lines of code, and it works. But it's less elegant than hooking the template-settings-based redirects.
So am i missing something? It this behavior a bug, or is it intended by PW team? Thanks in advance for any comment!
-
By fliwire
Hi, after redirect to payment page processwire session lost because of samesite cookies changed default to "lax".
https://web.dev/samesite-cookies-explained/
tried to hook session::init but not works ?
$wire->addHookBefore("Session::init", function (HookEvent $event) { ini_set('session.cookie_samesite', 'None'); session_set_cookie_params(['samesite' => 'None']); });
set by htaccess works
<ifmodule mod_headers.c> Header always edit Set-Cookie ^(.*)$ $1;SameSite=None;Secure </ifmodule>
-
By Entil`zha
Hi,
For some reason when I try to read and clear messages or errors in template I'll get the messages but they won't clear and will show after next page load.
I following code in my head.inc which is included in every template.
$messages = $wire->messages('clear all'); foreach ($messages as $m) { echo '<div class="alert alert-success alert-dismissible" role="alert">'; echo '<p class="badge badge-pill badge-success">OK</p> ' . $m->text; echo '<button type="button" class="close" data-dismiss="alert" aria-label="Close">'; echo '<span aria-hidden="true">×</span>'; echo '</button>'; echo '</div>'; } I'll get all the messages but they don't get cleared.
Only way to clear messages is to load page from admin area.
-
By derelektrischemoench
Hi guys,
I'm facing a somewhat strange issue here which I can't quite wrap my head around.
I have a PW site in development which runs on three machines simultaneously, one staging server which is accessible as a preview instance for my customer, my PC and my laptop.
I have three completely identical settings on each of the three machines (same apache version, same php version, same codebase, same database); however on my PC I am unable to log into the backend. I get no error message or anything, when I try to login; i just get redirected to the login page. I have already enabled database driven sessions (I enabled them on my laptop, then I dumped the database and copied it to my pc); I have cleared the cache directory; I cleared the sessions in the database; I cleared my browser caches, I tried different browsers, all to no avail; I am unable to login when using my pc, the instances all have the same .htaccess.
Is there something I'm missing here or does anyone have a clue as to what my issue here might be? I'm using processwire 3.0.123
Thanks for any input, greetings
derelektrischemoench
//edit: I've noticed something interesting; despite the directories of my web folders being the same layout; when I open the admin page i get a 404 on the processwire/ resource in the networks panel of chrome; on my laptop I get a 200.... I guess this is where my problem is; but why?
-
By derelektrischemoench
Hi guys,
I'm facing a somewhat strange issue here which I can't quite wrap my head around.
I have a PW site in development which runs on three machines simultaneously, one staging server which is accessible as a preview instance for my customer, my PC and my laptop.
I have three completely identical settings on each of the three machines (same apache version, same php version, same codebase, same database); however on my PC I am unable to log into the backend. I get no error message or anything, when I try to login; i just get redirected to the login page. I have already enabled database driven sessions (I enabled them on my laptop, then I dumped the database and copied it to my pc); I have cleared the cache directory; I cleared the sessions in the database; I cleared my browser caches, I tried different browsers, all to no avail; I am unable to login when using my pc, the instances all have the same .htaccess.
Is there something I'm missing here or does anyone have a clue as to what my issue here might be? I'm using processwire 3.0.123
Thanks for any input, greetings
derelektrischemoench
-