diff --git a/modules/utils/globals.go b/modules/utils/globals.go index 0ea4333..5ce9d85 100644 --- a/modules/utils/globals.go +++ b/modules/utils/globals.go @@ -78,6 +78,8 @@ const ( ReceivedCmdAllUsersCreateNewUser = 12 ReceivedCmdAllUsersDeleteUser = 13 ReceivedCmdAllUsersUserDeactivation = 14 + ReceivedCmdScannersUseScanners = 15 + ReceivedCmdScannersDisconnectScanner = 16 ) const ( diff --git a/routers/router/api/v1/jxscanner/scanner.go b/routers/router/api/v1/jxscanner/scanner.go index de0ff9c..40d8386 100644 --- a/routers/router/api/v1/jxscanner/scanner.go +++ b/routers/router/api/v1/jxscanner/scanner.go @@ -111,29 +111,3 @@ func DeleteScanner(c *fiber.Ctx) error { return c.SendStatus(fiber.StatusOK) } - -func UpdateScannerUsedByUserId(c *fiber.Ctx) error { - scannerId := c.Params("scannerId") - - if len(scannerId) != 36 { - log.Error().Msgf("Error parsing scanner id: %v", scannerId) - return c.SendStatus(fiber.StatusBadRequest) - } - - usedByUserId := c.Locals("userId").(string) - - database.DB.Model(&structs.Scanner{}).Where("id = ?", scannerId).Updates(structs.Scanner{UsedByUserId: usedByUserId}) - - socketclients.BroadcastMessage(structs.SendSocketMessage{ - Cmd: utils.SentCmdUpdateScannerUsedBy, - Body: struct { - ScannerId string - UsedByUserId string - }{ - ScannerId: scannerId, - UsedByUserId: usedByUserId, - }, - }) - - return c.SendStatus(fiber.StatusOK) -} diff --git a/routers/router/router.go b/routers/router/router.go index f9699d3..e8b0b43 100644 --- a/routers/router/router.go +++ b/routers/router/router.go @@ -23,7 +23,6 @@ func SetupRoutes(app *fiber.App) { s.Post("/", jxscanner.AddScanner) s.Post("/scan", scannerSessionValidation, jxscanner.ScanResult) s.Delete("/", scannerSessionValidation, jxscanner.DeleteScanner) - s.Patch("/:scannerId", userSessionValidation, jxscanner.UpdateScannerUsedByUserId) app.Static("/", "./public") } diff --git a/socketclients/socketclients.go b/socketclients/socketclients.go index 303accc..e28f7fb 100644 --- a/socketclients/socketclients.go +++ b/socketclients/socketclients.go @@ -787,3 +787,18 @@ func AllUsersUserDeactivation(userId string, deactivate bool) { }, }) } + +func ScannersUpdateScannerUsedByUserId(userId string, scannerId string) { + database.DB.Model(&structs.Scanner{}).Where("id = ?", scannerId).Updates(structs.Scanner{UsedByUserId: userId}) + + BroadcastMessage(structs.SendSocketMessage{ + Cmd: utils.SentCmdUpdateScannerUsedBy, + Body: struct { + ScannerId string + UsedByUserId string + }{ + ScannerId: scannerId, + UsedByUserId: userId, + }, + }) +} diff --git a/socketserver/hub.go b/socketserver/hub.go index 6f33d3f..bc0a05e 100644 --- a/socketserver/hub.go +++ b/socketserver/hub.go @@ -283,6 +283,22 @@ func RunHub() { socketclients.AllUsersUserDeactivation(receivedMessage.Body["UserId"].(string), receivedMessage.Body["Deactivation"].(bool)) break + case utils.ReceivedCmdScannersUseScanners: + if !socketclients.HasPermission(data.Conn.Locals("userId").(string), utils.PermissionScannerUseScanners) { + socketclients.SendErrorMessageNoPermissions(data.Conn.Locals("sessionId").(string)) + break + } + + socketclients.ScannersUpdateScannerUsedByUserId(data.Conn.Locals("userId").(string), receivedMessage.Body["ScannerId"].(string)) + break + case utils.ReceivedCmdScannersDisconnectScanner: + if !socketclients.HasPermission(data.Conn.Locals("userId").(string), utils.PermissionScannerUseScanners) { + socketclients.SendErrorMessageNoPermissions(data.Conn.Locals("sessionId").(string)) + break + } + + socketclients.ScannersUpdateScannerUsedByUserId("", receivedMessage.Body["ScannerId"].(string)) + break default: log.Error().Msgf("Received unknown message: %v", receivedMessage)