diff of 27deb0036f61acf439f16045b7ee26c5d24328c7

27deb0036f61acf439f16045b7ee26c5d24328c7
diff --git a/resources/sql/user-fns.sql b/resources/sql/user-fns.sql
index 7f695c5..3785556 100644
--- a/resources/sql/user-fns.sql
+++ b/resources/sql/user-fns.sql
@@ -18,31 +18,26 @@ GROUP BY
   u.id;
 
 -- name: query-users*
--- :? :1 
-SELECT u.Username, u.Nickname, u.ID as UserID, u.Password, u.Img_location, ug.ID as GroupID, ug.Name as GroupName, gm.PrimaryGroup, json_agg(DISTINCT perm.action) "permissions"
+-- returns: :array-hash
+SELECT u.Username, u.Nickname, u.Img_location, ug.Name as "primary-group-name", gm.PrimaryGroup, u.ID as userid, json_agg(DISTINCT perm.action) as "permissions"
 FROM blog.Users u
 JOIN blog.GroupMapping gm ON u.ID = gm.UserID
 JOIN blog.UserGroup ug ON ug.ID = gm.GroupID
 JOIN blog.grouppermissions gp ON gp.groupid = gm.groupid
 JOIN blog.permission perm ON perm.id = gp.permissionid
-WHERE u.Username = $1 AND u.Password = $2;
+WHERE u.Username = $1 AND u.Password = $2
+GROUP BY u.Username, u.Nickname, u.Img_location, ug.Name, gm.PrimaryGroup, u.ID;
 
--- name: get-user-view-data*
-SELECT u.Username, u.Nickname, u.Img_location, ug.Name as "primary-group-name", gm.PrimaryGroup, u.ID as userid, perm.action
+-- name: query-user-for-session
+-- returns: :array-hash 
+SELECT u.Username, u.Nickname, u.Img_location, ug.Name as "primary-group-name", gm.PrimaryGroup, u.ID as userid, json_agg(DISTINCT perm.action) as "permissions"
 FROM blog.Users u
 JOIN blog.GroupMapping gm ON u.ID = gm.UserID
 JOIN blog.UserGroup ug ON ug.ID = gm.GroupID
 JOIN blog.grouppermissions gp ON gp.groupid = gm.groupid
 JOIN blog.permission perm ON perm.id = gp.permissionid
-WHERE u.ID = :user-id;
-
--- name: user-groups*
-SELECT ug.ID, ug.Name, ug.Description
-FROM blog.Users u
-LEFT JOIN blog.GroupMapping um ON um.UserID = u.ID
-LEFT JOIN blog.UserGroup ug ON um.GroupID = ug.ID
-WHERE u.Username = :username;
-
+WHERE u.id = $1
+GROUP BY u.Username, u.Nickname, u.Img_location, ug.Name, gm.PrimaryGroup, u.ID;
 
 -- name: can?*
 -- :? :1
diff --git a/src/routes/login-routes.lisp b/src/routes/login-routes.lisp
index 1bc92bb..7f87f58 100644
--- a/src/routes/login-routes.lisp
+++ b/src/routes/login-routes.lisp
@@ -1,25 +1,30 @@
 (defpackage murja.routes.login-routes
   (:use :cl)
-  (:import-from :murja.middleware.auth :@authenticated)
+  (:import-from :murja.middleware.auth :@authenticated :*user*)
   (:import-from :murja.middleware.db :@transaction)
    
   (:import-from :murja.middleware.json :@json)
   (:import-from :easy-routes :defroute)
-  (:import-from :com.inuoe.jzon :parse))
+  (:import-from :com.inuoe.jzon :parse :stringify))
 
 (in-package :murja.routes.login-routes)
 
-(defroute post-login ("/api/login" :method :post :decorators (@transaction @json)) ()
+(defun sha-512 (str)
+  (ironclad:byte-array-to-hex-string
+    (ironclad:digest-sequence :sha512
+                              (ironclad:ascii-string-to-byte-array str))))
+
+(defroute post-login ("/api/login/login" :method :post :decorators (@transaction @json)) ()
   (let* ((body-params (parse (hunchentoot:raw-post-data :force-text t)))
 	 (username (gethash "username" body-params))
 	 (password (gethash "password" body-params))
-	 (user-row (select-user-by-login username (sha-512 password))))
+	 (user-row (murja.users.user-db:select-user-by-login username (sha-512 password))))
     (if (and user-row
 	     (string= (gethash "username" user-row) username))
 	(progn
 	  (setf (hunchentoot:session-value :logged-in-username) username)
-	  (setf (hunchentoot:session-value :logged-in-user-id) (gethash "id" user-row))
-	  (stringify data-for-frontend))
+	  (setf (hunchentoot:session-value :logged-in-user-id) (gethash "userid" user-row))
+	  (stringify user-row))
 
 	(progn 
 	  (setf (hunchentoot:return-code*) 401)
@@ -29,7 +34,7 @@
 								      @json
 								      @authenticated)) ()
   (if *user*
-      (com.inuoe.jzon:stringify *user*)
+      (com.inuoe.jzon:stringify (murja.users.user-db:get-session-user-by-id (gethash "id" *user*)))
       (progn
 	(setf (hunchentoot:return-code*) 401)
 	nil)))
diff --git a/src/users/user-db.lisp b/src/users/user-db.lisp
index e892cd9..f2b67ed 100644
--- a/src/users/user-db.lisp
+++ b/src/users/user-db.lisp
@@ -1,5 +1,6 @@
 (defpackage :murja.users.user-db
   (:use :cl :postmodern)
+  (:export :get-session-user-by-id :select-user-by-login)
   (:import-from :halisql :defqueries))
 
 (in-package :murja.users.user-db)
@@ -16,7 +17,12 @@
 (defun get-user-by-id (id)
   (jsonize-key (aref (get-user-by-id* id) 0) "permissions"))
 
+(defun get-session-user-by-id (id)
+  (jsonize-key (aref (query-user-for-session id) 0) "permissions"))
+
 (defun select-user-by-login (username password-sha)
-  (jsonize-key (aref (query-users* username password-sha) 0) "permissions"))
+  (let ((usr (first (coerce  (query-users* username password-sha) 'list))))
+    (when usr
+      (jsonize-key usr "permissions"))))
 
   ;;(postmodern:connect-toplevel "blogdb" "blogadmin" "blog" "localhost")