From 0a270cac94f98183e4dec2eccd3621370bf770e9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andrej=20Rama=C5=A1euski?= <andrej@x2.cz>
Date: Mon, 1 Aug 2022 22:45:26 +0200
Subject: [PATCH] Relation user-shortcut, user object in stash

---
 lib/PZ.pm                     | 13 +++++++++----
 lib/PZ/Controller/Shortcut.pm |  2 +-
 lib/PZ/Schema/Result/User.pm  |  5 +++++
 3 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/lib/PZ.pm b/lib/PZ.pm
index c9eae00..6f92d06 100644
--- a/lib/PZ.pm
+++ b/lib/PZ.pm
@@ -43,7 +43,11 @@ sub startup {
         autoload_user => 1,
         load_user => sub {
             my $c = shift;
-            return $c->session->{user};
+            my $user = $c->schema->resultset('User')->find({
+                id => $c->session->{user}{id},
+            });
+            return $user;
+#           return $c->session->{user};
         },
         validate_user => sub {
             my $c = shift;
@@ -61,12 +65,13 @@ sub startup {
     # router
     my $r = $self->routes;
 
-    $r->get('/')->to(cb => sub { shift->render('index'); });
-    $r->post('/')->to('Shortcut#create');
-
     $r->get('/login')->to('OIDC#callback');
     $r->get('/logout')->to('OIDC#do_logout');
 
+    $r->get('/')->to(cb => sub { shift->render('index'); });
+    $r->post('/')->to('Shortcut#create');
+    $r->get('/shortcuts')->to('Shortcut#list');
+
     $r->get('/:shortcut')->to('Shortcut#redirect');
     $r->get('/:shortcut/qr.png')->to('Shortcut#qr');
 
diff --git a/lib/PZ/Controller/Shortcut.pm b/lib/PZ/Controller/Shortcut.pm
index e7a9e30..cfdb233 100644
--- a/lib/PZ/Controller/Shortcut.pm
+++ b/lib/PZ/Controller/Shortcut.pm
@@ -34,7 +34,7 @@ sub create ($c) {
     }
 
     my %data = (
-        user_id => $c->current_user->{id},
+        user_id => $c->current_user->id,
         deleted => undef,
         url     => $url,
     );
diff --git a/lib/PZ/Schema/Result/User.pm b/lib/PZ/Schema/Result/User.pm
index 58034cc..14b1102 100644
--- a/lib/PZ/Schema/Result/User.pm
+++ b/lib/PZ/Schema/Result/User.pm
@@ -39,6 +39,11 @@ __PACKAGE__->add_unique_constraint(
     'token' => [qw(token)]
 );
 
+__PACKAGE__->has_many(
+    shortcuts => 'PZ::Schema::Result::Shortcut',
+    { 'foreign.user_id' => 'self.id', },
+);
+
 sub set_token {
     my $self = shift;
     my $new  = shift;
-- 
GitLab