Improved user management routes
Change-Id: I3310e03a96565f6c02fe48710c1ef4e48e6fe115
diff --git a/lib/Kalamar/Plugin/KalamarUser.pm b/lib/Kalamar/Plugin/KalamarUser.pm
index 209b8cb..8d12d30 100644
--- a/lib/Kalamar/Plugin/KalamarUser.pm
+++ b/lib/Kalamar/Plugin/KalamarUser.pm
@@ -54,6 +54,7 @@
# Login successful
if (my $res = $tx->success) {
+
my $jwt = $res->json;
my $auth = $jwt->{token_type} . ' ' . $jwt->{token};
@@ -92,6 +93,7 @@
my $c = shift;
my $param = shift;
+ # 'info' is useless!
return unless $param =~ m/^details|settings$/;
# The user may be logged in
@@ -110,14 +112,16 @@
my $tx = $plugin->build_authorized_tx($auth, 'GET', 'user/' . $param);
$tx = $plugin->ua->start($tx);
+
unless ($value = $tx->success) {
-# warn $tx->code;
return;
}
# else {
# warn $c->dumper($value->json);
# };
- $value = $value->json;
+ if ($value) {
+ $value = $value->json;
+ };
$chi->set($user . '_' . $param => $value);
};
@@ -127,6 +131,42 @@
}
);
+ $mojo->helper(
+ 'user.set' => sub {
+ my $c = shift;
+ my $param = shift;
+
+ # 'info' is useless!
+ return unless $param =~ m/^details|settings$/;
+
+ my $json_obj = shift;
+
+ # The user may be logged in
+ my $auth = ($c->stash('auth') || $c->session('auth')) or return;
+
+ # Get namespaced cache
+ my $chi = $c->chi('user');
+
+ # Get user and check, if the user is real
+ my $user = $chi->get($auth);
+
+ # Build a JSON transaction object
+ my $tx = $plugin->build_authorized_tx(
+ $auth, 'POST', 'user/' . $param, json => $json_obj
+ );
+
+ # Start
+ $tx = $plugin->ua->start($tx);
+
+ my $res = $tx->success or return;
+
+ # Kill all caches!!
+ $chi->remove($user . '_' . $param);
+
+ # Return value
+ return $res->json;
+ }
+ );
# Logout
$mojo->helper(
@@ -162,6 +202,7 @@
my $url = Mojo::URL->new($plugin->api)->path($path);
+
$header->{Authorization} = $auth;
return $ua->build_tx($method, $url => $header => @values);