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);