added docker compose

This commit is contained in:
z1glr
2025-02-04 20:57:48 +01:00
parent 3f9a190795
commit 3227073470
14 changed files with 140 additions and 48 deletions

View File

@@ -30,13 +30,13 @@ func (a *Handler) postAvailability() {
if err := a.C.BodyParser(&body); err != nil {
a.Status = fiber.StatusBadRequest
logger.Log().Msgf("can't parse body: %v", err)
logger.Info().Msgf("can't parse body: %v", err)
// validate the body
} else if err := validate.Struct(&body); err != nil {
a.Status = fiber.StatusBadRequest
logger.Log().Msgf("invalid body: %v", err)
logger.Info().Msgf("invalid body: %v", err)
} else if err := availabilities.Add(body); err != nil {
a.Status = fiber.StatusInternalServerError
@@ -60,13 +60,13 @@ func (a *Handler) patchAvailabilitiy() {
if err := a.C.BodyParser(&body); err != nil {
a.Status = fiber.StatusBadRequest
logger.Log().Msgf("can't parse body: %v", err)
logger.Info().Msgf("can't parse body: %v", err)
// validate the body
} else if err := validate.Struct(&body); err != nil {
a.Status = fiber.StatusBadRequest
logger.Log().Msgf("invalid body: %v", err)
logger.Info().Msgf("invalid body: %v", err)
} else if err := availabilities.Update(body); err != nil {
a.Status = fiber.StatusInternalServerError
@@ -84,7 +84,7 @@ func (a *Handler) deleteAvailability() {
// parse the query
} else if taskID := a.C.QueryInt("availabilityID", -1); taskID == -1 {
logger.Log().Msg("availability-deletion failed: invalid query: doesn't include \"availabilityID\"")
logger.Info().Msg("availability-deletion failed: invalid query: doesn't include \"availabilityID\"")
a.Status = fiber.StatusBadRequest

View File

@@ -24,13 +24,13 @@ func (a *Handler) postEvent() {
if err := a.C.BodyParser(&body); err != nil {
a.Status = fiber.StatusBadRequest
logger.Log().Msgf("can't parse body: %v", err)
logger.Info().Msgf("can't parse body: %v", err)
// validate the parsed body
} else if err := validate.Struct(body); err != nil {
a.Status = fiber.StatusBadRequest
logger.Log().Msgf("invalid body: %v", err)
logger.Info().Msgf("invalid body: %v", err)
// create the event
} else if err := events.Create(body); err != nil {
@@ -52,13 +52,13 @@ func (a *Handler) patchEvent() {
if err := a.C.BodyParser(&body); err != nil {
a.Status = fiber.StatusBadRequest
logger.Log().Msgf("can't parse body: %v", err)
logger.Info().Msgf("can't parse body: %v", err)
// validate the body
} else if err := validate.Struct(body); err != nil {
a.Status = fiber.StatusBadRequest
logger.Log().Msgf("ivnalid body: %v", err)
logger.Info().Msgf("ivnalid body: %v", err)
// update the event
} else if err := events.Update(body); err != nil {
@@ -99,7 +99,7 @@ func (a *Handler) getEventUserAssignmentAvailability() {
if events, err := a.UserName.WithUserAvailability(); err != nil {
a.Status = fiber.StatusBadRequest
logger.Log().Msgf("getting events with tasks and user-availability failed: %v", err)
logger.Info().Msgf("getting events with tasks and user-availability failed: %v", err)
} else {
a.Data = events
}
@@ -130,7 +130,7 @@ func (a *Handler) getEventsUserAssigned() {
if events, err := a.UserName.GetAssignedEvents(); err != nil {
a.Status = fiber.StatusBadRequest
logger.Log().Msgf("retrieval of user-assigned-events failed: %v", err)
logger.Info().Msgf("retrieval of user-assigned-events failed: %v", err)
} else {
a.Data = events
}
@@ -141,7 +141,7 @@ func (a *Handler) putEventUserAvailability() {
if eventID := a.C.QueryInt("eventID", -1); eventID == -1 {
a.Status = fiber.StatusBadRequest
logger.Log().Msg("setting user-event-availability failed: query is missing \"eventID\"")
logger.Info().Msg("setting user-event-availability failed: query is missing \"eventID\"")
} else {
// parse the body
body := a.C.Body()
@@ -149,7 +149,7 @@ func (a *Handler) putEventUserAvailability() {
if availabilityID, err := strconv.Atoi(string(body)); err != nil {
a.Status = fiber.StatusBadRequest
logger.Log().Msgf("setting user-event-availability failed: can't get parse: %v", err)
logger.Info().Msgf("setting user-event-availability failed: can't get parse: %v", err)
} else {
// if there was already a task assigned for this user-event-combi, remove it
var taskIDs []int
@@ -200,23 +200,23 @@ func (a *Handler) putEventAssignment() {
} else if taskID := tasks.TaskID(a.C.QueryInt("taskID", -1)); taskID == -1 {
a.Status = fiber.StatusBadRequest
logger.Log().Msg("setting event-assignment failed: query is missing \"taskID\"")
logger.Info().Msg("setting event-assignment failed: query is missing \"taskID\"")
// parse the body
} else if userName := users.UserName(a.C.Body()); userName == "" {
a.Status = fiber.StatusBadRequest
logger.Log().Msg("setting event-assignment failed: body is missing")
logger.Info().Msg("setting event-assignment failed: body is missing")
// check wether the user has actually entered an availability for the event
} else if availabilityID, err := userName.GetUserAvailability(eventID); err != nil {
a.Status = fiber.StatusBadRequest
logger.Log().Msgf("setting event-assignment failed: can't check users availability: %v", err)
logger.Info().Msgf("setting event-assignment failed: can't check users availability: %v", err)
} else if availabilityID == nil {
a.Status = fiber.StatusConflict
logger.Log().Msgf("setting event-assignment failed: user %q isn't available for event with eventID = %d", userName, eventID)
logger.Info().Msgf("setting event-assignment failed: user %q isn't available for event with eventID = %d", userName, eventID)
// check wether the user can be assigned for this task
} else if check, err := userName.CheckTask(taskID); err != nil {
@@ -226,7 +226,7 @@ func (a *Handler) putEventAssignment() {
} else if !check {
a.Status = fiber.StatusBadRequest
logger.Log().Msgf("setting event-assignment failed: task with taskID = %d is not possible for user", taskID)
logger.Info().Msgf("setting event-assignment failed: task with taskID = %d is not possible for user", taskID)
// set the availability in the database
} else if err := eventID.SetAssignment(taskID, userName); err != nil {
@@ -273,7 +273,7 @@ func (a *Handler) deleteEvent() {
a.Status = fiber.StatusForbidden
// -1 can't be valid
} else if eventId := a.C.QueryInt("eventID", -1); eventId == -1 {
logger.Log().Msgf("event-delete failed: \"eventID\" is missing in query")
logger.Info().Msgf("event-delete failed: \"eventID\" is missing in query")
a.Status = fiber.StatusBadRequest
} else if err := events.Delete(eventId); err != nil {
@@ -282,6 +282,6 @@ func (a *Handler) deleteEvent() {
a.Status = fiber.StatusInternalServerError
} else {
logger.Log().Msgf("deleted event with eventID %d", eventId)
logger.Info().Msgf("deleted event with eventID %d", eventId)
}
}

View File

@@ -1,7 +1,10 @@
package router
import (
"errors"
"fmt"
"os"
"path/filepath"
"time"
"github.com/go-playground/validator/v10"
@@ -129,6 +132,25 @@ func init() {
app.Post("/api/login", handleLogin)
app.Get("/api/logout", handleLogout)
app.Use(func(c *fiber.Ctx) error {
path := c.Path()
if _, err := os.Stat(filepath.Join("html", path)); errors.Is(err, os.ErrNotExist) {
htmlPath := path + ".html"
if _, err := os.Stat(filepath.Join("html", htmlPath)); err == nil {
c.Path(htmlPath)
} else {
logger.Debug().Msgf("%q", err)
}
}
c.Next()
return nil
})
app.Static("/", "html")
// register the registered endpoints
for method, handlers := range endpoints {
for address, handler := range handlers {
@@ -146,7 +168,7 @@ func init() {
} else if !loggedIn {
args.Status = fiber.StatusUnauthorized
logger.Log().Msgf("user not authorized")
logger.Info().Msgf("user not authorized")
} else {
handler(&args)
}

View File

@@ -18,7 +18,7 @@ func (a *Handler) getTasks() {
func (a *Handler) postTask() {
// check admin
if !a.Admin {
logger.Log().Msgf("user is not admin")
logger.Info().Msgf("user is not admin")
a.Status = fiber.StatusUnauthorized
} else {
@@ -26,13 +26,13 @@ func (a *Handler) postTask() {
var task tasks.Task
if err := a.C.BodyParser(&task); err != nil {
logger.Log().Msgf("can't parse body: %v", err)
logger.Info().Msgf("can't parse body: %v", err)
a.Status = fiber.StatusBadRequest
// validate the body
} else if err := validate.Struct(&task); err != nil {
logger.Log().Msgf("invalid body: %v", err)
logger.Info().Msgf("invalid body: %v", err)
a.Status = fiber.StatusBadRequest
@@ -48,7 +48,7 @@ func (a *Handler) postTask() {
func (a *Handler) patchTask() {
// check admin
if !a.Admin {
logger.Log().Msgf("user is not admin")
logger.Info().Msgf("user is not admin")
a.Status = fiber.StatusUnauthorized
} else {
@@ -56,13 +56,13 @@ func (a *Handler) patchTask() {
var task tasks.TaskDB
if err := a.C.BodyParser(&task); err != nil {
logger.Log().Msgf("can't parse body: %v", err)
logger.Info().Msgf("can't parse body: %v", err)
a.Status = fiber.StatusBadRequest
// validate the body
} else if err := validate.Struct(&task); err != nil {
logger.Log().Msgf("invalid body: %v", err)
logger.Info().Msgf("invalid body: %v", err)
a.Status = fiber.StatusBadRequest
@@ -84,7 +84,7 @@ func (a *Handler) deleteTask() {
// parse the query
} else if taskID := a.C.QueryInt("taskID", -1); taskID == -1 {
logger.Log().Msg("task-deletion failed: invalid query: doesn't include \"taskID\"")
logger.Info().Msg("task-deletion failed: invalid query: doesn't include \"taskID\"")
a.Status = fiber.StatusBadRequest

View File

@@ -10,7 +10,7 @@ func (a *Handler) getUsers() {
if !a.Admin {
a.Status = fiber.StatusForbidden
logger.Log().Msgf("user is no admin")
logger.Info().Msgf("user is no admin")
} else if users, err := users.Get(); err != nil {
a.Status = fiber.StatusInternalServerError
@@ -26,7 +26,7 @@ func (a *Handler) postUser() {
if !a.Admin {
a.Status = fiber.StatusForbidden
logger.Log().Msgf("user is no admin")
logger.Info().Msgf("user is no admin")
} else {
// parse the body
var body users.UserAdd
@@ -54,7 +54,7 @@ func (a *Handler) putPassword() {
var body users.UserChangePassword
if err := a.C.BodyParser(&body); err != nil {
logger.Log().Msgf("can't parse body: %v", err)
logger.Info().Msgf("can't parse body: %v", err)
a.Status = fiber.StatusBadRequest
@@ -98,7 +98,7 @@ func (a *Handler) patchUser() {
if !a.Admin {
a.Status = fiber.StatusForbidden
logger.Log().Msgf("user is no admin")
logger.Info().Msgf("user is no admin")
} else {
// parse the body
var body struct {
@@ -109,7 +109,7 @@ func (a *Handler) patchUser() {
if err := a.C.BodyParser(&body); err != nil {
a.Status = fiber.StatusBadRequest
logger.Log().Msgf("can't parse body: %v", err)
logger.Info().Msgf("can't parse body: %v", err)
// prevent to demoting self from admin
} else if !body.Admin && body.UserName == a.UserName {
@@ -196,19 +196,19 @@ func (a *Handler) deleteUser() {
// get the username from the query
} else if userName := a.C.Query("userName"); userName == "" {
logger.Log().Msg("user-deletion failed: query is missing \"userName\"")
logger.Info().Msg("user-deletion failed: query is missing \"userName\"")
a.Status = fiber.StatusBadRequest
// check wether the user tries to delete himself
} else if users.UserName(userName) == a.UserName {
logger.Log().Msg("user-deletion failed: self-deletion is illegal")
logger.Info().Msg("user-deletion failed: self-deletion is illegal")
a.Status = fiber.StatusBadRequest
// check wether the user tries to delete the admin
} else if userName == "admin" {
logger.Log().Msg("user-deletion failed: admin-deletion is illegal")
logger.Info().Msg("user-deletion failed: admin-deletion is illegal")
a.Status = fiber.StatusBadRequest