added scanner
parent
23035918fc
commit
7d77d089a2
|
@ -32,6 +32,7 @@ func InitDatabase() {
|
|||
db.AutoMigrate(&structs.UserSession{})
|
||||
db.AutoMigrate(&structs.GroupTasks{})
|
||||
db.AutoMigrate(&structs.GroupTaskSteps{})
|
||||
db.AutoMigrate(&structs.Scanner{})
|
||||
|
||||
//createUser()
|
||||
}
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
package structs
|
||||
|
||||
import "time"
|
||||
|
||||
type Scanner struct {
|
||||
Id string // this id is used for ui
|
||||
Session string // this session is used for api calls
|
||||
Name string
|
||||
UsedByUserId string
|
||||
UserAgent string
|
||||
LastUsed time.Time
|
||||
RegisteredAt time.Time
|
||||
}
|
||||
|
||||
type ScannerRequest struct {
|
||||
ScannerName string
|
||||
}
|
||||
|
||||
type ScannerResponse struct {
|
||||
Id string
|
||||
Session string
|
||||
}
|
|
@ -1,12 +1,14 @@
|
|||
package utils
|
||||
|
||||
const (
|
||||
minUsername = "2"
|
||||
maxUsername = "20"
|
||||
minPassword = "6"
|
||||
MinPassword = 6
|
||||
maxPassword = "64"
|
||||
MaxPassword = 64
|
||||
minUsername = "2"
|
||||
maxUsername = "20"
|
||||
minPassword = "6"
|
||||
MinPassword = 6
|
||||
maxPassword = "64"
|
||||
MaxPassword = 64
|
||||
minScannerName = "3"
|
||||
maxScannerName = "16"
|
||||
|
||||
LenHeaderXAuthorization = 36
|
||||
lenHeaderXAuthorization = "36"
|
||||
|
@ -41,8 +43,9 @@ const (
|
|||
|
||||
var (
|
||||
generalRules = map[string]string{
|
||||
"Username": "required,min=" + minUsername + ",max=" + maxUsername,
|
||||
"Password": "required", // length is checked later because sent in base64
|
||||
"SessionId": "required,len" + lenHeaderXAuthorization,
|
||||
"Username": "required,min=" + minUsername + ",max=" + maxUsername,
|
||||
"Password": "required", // length is checked later because sent in base64
|
||||
"SessionId": "required,len=" + lenHeaderXAuthorization,
|
||||
"ScannerName": "required,min=" + minScannerName + ",max=" + maxScannerName,
|
||||
}
|
||||
)
|
||||
|
|
|
@ -30,5 +30,8 @@ func ValidateStruct(event interface{}) []*ErrorResponse {
|
|||
}
|
||||
|
||||
func ValidatorInit() {
|
||||
Validate.RegisterStructValidationMapRules(generalRules, structs.UserLoginRequest{}, structs.UserSignOutSessionRequest{})
|
||||
Validate.RegisterStructValidationMapRules(generalRules,
|
||||
structs.UserLoginRequest{},
|
||||
structs.UserSignOutSessionRequest{},
|
||||
structs.ScannerRequest{})
|
||||
}
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
package jxscanner
|
||||
|
||||
import (
|
||||
"janex/admin-dashboard-backend/modules/database"
|
||||
"janex/admin-dashboard-backend/modules/structs"
|
||||
"janex/admin-dashboard-backend/modules/utils"
|
||||
"janex/admin-dashboard-backend/routers/router/api/v1/user"
|
||||
"time"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/savsgio/gotils/uuid"
|
||||
)
|
||||
|
||||
func AddScanner(c *fiber.Ctx) error {
|
||||
var body structs.ScannerRequest
|
||||
|
||||
if err := c.BodyParser(&body); err != nil {
|
||||
log.Error().Msg("Failed to parse body, err: " + err.Error())
|
||||
return c.Status(fiber.StatusBadRequest).JSON(err)
|
||||
}
|
||||
|
||||
if err := utils.ValidateStruct(body); err != nil {
|
||||
log.Error().Msgf("Failed to validate body, err: %s", err)
|
||||
return c.SendStatus(fiber.StatusBadRequest)
|
||||
}
|
||||
|
||||
id := uuid.V4()
|
||||
session, err := user.GenerateSession()
|
||||
|
||||
if err != nil {
|
||||
log.Error().Msgf("Failed to create session for scanner: %v", err)
|
||||
return c.SendStatus(fiber.StatusInternalServerError)
|
||||
}
|
||||
|
||||
database.DB.Create(&structs.Scanner{
|
||||
Id: id,
|
||||
Session: session,
|
||||
Name: body.ScannerName,
|
||||
UserAgent: string(c.Context().UserAgent()),
|
||||
RegisteredAt: time.Now(),
|
||||
})
|
||||
|
||||
return c.JSON(structs.ScannerResponse{Id: id, Session: session})
|
||||
}
|
|
@ -53,7 +53,7 @@ func UserLogin(c *fiber.Ctx) error {
|
|||
return c.SendStatus(fiber.StatusBadRequest)
|
||||
}
|
||||
|
||||
session, err := generateSession()
|
||||
session, err := GenerateSession()
|
||||
|
||||
if err != nil {
|
||||
return c.SendStatus(fiber.StatusInternalServerError)
|
||||
|
@ -97,7 +97,7 @@ func validatePasswordLength(password string) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func generateSession() (string, error) {
|
||||
func GenerateSession() (string, error) {
|
||||
var letters = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
|
||||
|
||||
r := make([]byte, 36)
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
"janex/admin-dashboard-backend/modules/database"
|
||||
"janex/admin-dashboard-backend/modules/structs"
|
||||
"janex/admin-dashboard-backend/modules/utils"
|
||||
"janex/admin-dashboard-backend/routers/router/api/v1/jxscanner"
|
||||
"janex/admin-dashboard-backend/routers/router/api/v1/user"
|
||||
|
||||
"github.com/gofiber/fiber/v2"
|
||||
|
@ -18,6 +19,9 @@ func SetupRoutes(app *fiber.App) {
|
|||
u.Delete("/session/:idForDeletion", userSessionValidation, user.SignOutSession)
|
||||
u.Post("/avatar", userSessionValidation, user.UpdateAvatar)
|
||||
|
||||
s := v1.Group("/scanner")
|
||||
s.Post("/", jxscanner.AddScanner)
|
||||
|
||||
app.Static("/", "./public")
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue