From 3de6ecf5797b66c201c3938f7fb9499f58516734 Mon Sep 17 00:00:00 2001 From: konrad Date: Tue, 6 Mar 2018 15:33:18 +0100 Subject: [PATCH] Added viewing logs via api --- models/log_action.go | 9 +++++++++ routes/api/v1/logs.go | 24 ++++++++++++++++++++++++ routes/routes.go | 3 +++ 3 files changed, 36 insertions(+) create mode 100644 routes/api/v1/logs.go diff --git a/models/log_action.go b/models/log_action.go index 474e2bb..aa2051f 100644 --- a/models/log_action.go +++ b/models/log_action.go @@ -29,3 +29,12 @@ func logAction(actionType ActionType, user *User, itemID int64) (err error) { _, err = x.Insert(UserLog{Log: actionType, UserID: user.ID, ItemID: itemID}) return } + +func GetAllLogs() (logs []UserLog, err error) { + err = x.OrderBy("id DESC").Find(&logs) + if err != nil { + return logs, err + } + + return logs, err +} diff --git a/routes/api/v1/logs.go b/routes/api/v1/logs.go new file mode 100644 index 0000000..3bdf361 --- /dev/null +++ b/routes/api/v1/logs.go @@ -0,0 +1,24 @@ +package v1 + +import ( + "github.com/labstack/echo" + "git.kolaente.de/konrad/Library/models" + "net/http" +) + +func ShowLogs(c echo.Context) error { + + // Check if the user is admin + if !models.IsAdmin(c) { + return echo.ErrUnauthorized + } + + // Get the logs + logs, err := models.GetAllLogs() + + if err != nil { + return c.JSON(http.StatusInternalServerError, models.Message{"Error getting logs."}) + } + + return c.JSON(http.StatusOK, logs) +} \ No newline at end of file diff --git a/routes/routes.go b/routes/routes.go index 3f1d13c..97f30f7 100644 --- a/routes/routes.go +++ b/routes/routes.go @@ -119,6 +119,9 @@ func RegisterRoutes(e *echo.Echo) { a.DELETE("/users/:id", apiv1.UserDelete) a.POST("/users/:id/password", apiv1.UserChangePassword) + // View logs + a.GET("/logs", apiv1.ShowLogs) + /* Alles nur mit Api machen, davor dann einen onepager mit vue.js.