diff options
author | Marius Halden <marius.h@lden.org> | 2018-05-29 19:37:34 +0200 |
---|---|---|
committer | Marius Halden <marius.h@lden.org> | 2018-05-29 19:37:34 +0200 |
commit | 782457d016084c8de04989dbc824a71899f8b41b (patch) | |
tree | 56d14e1a988396e43c8693ff3486e40d16962add /perllib/Catalyst/Plugin/FixMyStreet/Session/StoreSessions.pm | |
parent | 140d40e3eab4cb1e7aa9f95cbc24a0f13180b606 (diff) | |
parent | 6e2da95bc6a758c0cf070b9ddd51acc769f7acf1 (diff) |
Merge tag 'v2.3.1' into fiksgatami-dev
Diffstat (limited to 'perllib/Catalyst/Plugin/FixMyStreet/Session/StoreSessions.pm')
-rw-r--r-- | perllib/Catalyst/Plugin/FixMyStreet/Session/StoreSessions.pm | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/perllib/Catalyst/Plugin/FixMyStreet/Session/StoreSessions.pm b/perllib/Catalyst/Plugin/FixMyStreet/Session/StoreSessions.pm new file mode 100644 index 000000000..5e7a3cede --- /dev/null +++ b/perllib/Catalyst/Plugin/FixMyStreet/Session/StoreSessions.pm @@ -0,0 +1,23 @@ +package Catalyst::Plugin::FixMyStreet::Session::StoreSessions; +use Moose::Role; +use namespace::autoclean; + +after set_authenticated => sub { + my $c = shift; + my $sessions = $c->user->get_extra_metadata('sessions'); + push @$sessions, $c->sessionid; + $c->user->set_extra_metadata('sessions', $sessions); + $c->user->update; +}; + +before logout => sub { + my $c = shift; + if (my $user = $c->user) { + my $sessions = $user->get_extra_metadata('sessions'); + $sessions = [ grep { $_ ne $c->sessionid } @$sessions ]; + @$sessions ? $user->set_extra_metadata('sessions', $sessions) : $user->unset_extra_metadata('sessions'); + $user->update; + } +}; + +__PACKAGE__; |