admin-dashboard-backend/modules/utils/globals.go

269 lines
12 KiB
Go

package utils
const (
minUsername = "2"
maxUsername = "20"
MinUsername = 2
MaxUsername = 20
minPassword = "6"
MinPassword = 6
maxPassword = "64"
MaxPassword = 64
minScannerName = "3"
maxScannerName = "16"
MinRoleDisplayName = 3
MaxRoleDisplayName = 30
MaxRoleDescription = 80
MaxEquipmentDocumentationTitleLength = "60"
MaxEquipmentDocumentationNoteLength = 2000
MaxNoficationTitleLength = "255"
MinUserApiKeyNameLength = 2
MaxUserApiKeyNameLength = 30
LenHeaderXAuthorization = 36
lenHeaderXAuthorization = "36"
LenUserId = 36
LenHeaderXApiKey = 36
HeaderXAuthorization = "X-Authorization"
HeaderXApiKey = "X-Api-Key"
MaxAvatarSize = 5 * 1024 * 1024 // 5 MB
GroupTaskLockedTime = 3
SessionExpiresAtTime = 7 * 24 * 60 * 60 // 1 week
LogTypeInfo = 0
LogTypeError = 1
ConnectionStateOffline = 0
ConnectionStateOnline = 1
EquipmentDocumentationsPaginationLimit = 3
GroupTasksPaginationLimit = 5
NotificationsPaginationLimit = 10
)
var (
AcceptedAvatarFileTypes = []string{
"image/png",
"image/jpeg",
"image/jpg",
"image/gif"}
)
// commands sent to web clients
const (
SentCmdInitUserSocketConnection = 1
SentCmdUpdateConnectedUsers = 2
SentCmdNewGroupTaskStarted = 3
SentCmdNewGroupTaskStep = 4
SentCmdUpdateGroupTaskStep = 5
SentCmdUpdateGroupTask = 6
SentCmdReloadingGroupTasks = 7
SentCmdGroupTasksReloaded = 8
SentCmdUpdateUserSessions = 9
SentCmdUpdateAllUsersUserAvatar = 10
SentCmdNewScanner = 11
SentCmdDeleteScanner = 12
SentCmdUpdateScannerUsedBy = 13
SentCmdScanResult = 14
SentCmdUpdateScannerLastUsed = 15
SentCmdTaskLocked = 16
SentCmdTaskUnlocked = 17
SentCmdUserProfileUpdated = 18
SentCmdAdminAreaNewRoleCreated = 19
SentCmdAdminAreaRoleUpdated = 20
SentCmdAdminAreaUpdateRoleSortingOrder = 21
SentCmdAdminAreaRoleDeleted = 22
SentCmdAllUsersUserRoleUpdated = 23
SentCmdRolePermissionsUpdated = 24
SentCmdErrorNoPermissions = 25
SentCmdAllUsersNewUserCreated = 26
SentCmdAllUsersUserDeleted = 27
SentCmdAllUsersUserDeactivation = 28
SentCmdGroupTasksCategoryGroupChanges = 29
SentCmdNewUserApiKeyCreated = 30
SentCmdDeletedUserApiKey = 31
SentCmdNewApiKeyUsageCount = 32
SentCmdInstallingPythonPackages = 33
SentCmdInstallingPythonPackagesFailed = 34
SentCmdInstallingPythonPackagesFinished = 35
SentCmdInstallingGlobalPythonPackages = 36
SentCmdInstallingGlobalPythonPackagesFailed = 37
SentCmdInstallingGlobalPythonPackagesFinished = 38
SentCmdUpdateUsers = 39
SentCmdNewNotification = 41
SentCmdAllNotificationsDeleted = 42
SentCmdOneNotificationDeleted = 43
SentCmdAdminAreaManageCheckedForAvailableCategories = 44
SentCmdAdminAreaManageLogManagerServerConnectionAdded = 45
SentCmdAdminAreaManageLogManagerServerConnectionRemoved = 46
)
// commands received from web clients
const (
ReceivedCmdStartGroupTasks = 1
ReceivedCmdTaskFailedTryAgainRunTaskStep = 2
ReceivedCmdTaskContinueTaskStep = 3
ReceivedCmdReloadGroupTasks = 4
ReceivedCmdTaskLocking = 5
ReceivedCmdUpdateUserProfile = 6
ReceivedCmdAdminAreaCreateNewRole = 7
ReceivedCmdAdminAreaUpdateRole = 8
ReceivedCmdAdminAreaUpdateRoleSortingOrder = 9
ReceivedCmdAdminAreaDeleteRole = 10
ReceivedCmdAllUsersUpdateUserRole = 11
ReceivedCmdAllUsersCreateNewUser = 12
ReceivedCmdAllUsersDeleteUser = 13
ReceivedCmdAllUsersUserDeactivation = 14
ReceivedCmdScannersUseScanners = 15
ReceivedCmdScannersDisconnectScanner = 16
ReceivedCmdHandleUserActionTaskStep = 18
ReceivedCmdCreateNewUserApiKey = 19
ReceivedCmdDeleteUserApiKey = 20
ReceivedCmdGroupTasksInstallPythonPackages = 21
ReceivedCmdGroupTasksInstallGlobalPythonPackages = 22
ReceivedCmdSubscribeToTopic = 23
ReceivedCmdDeleteAllNotifications = 24
ReceivedCmdDeleteOneNotification = 25
ReceivedCmdAdminAreaManageCheckWhichCategoriesAreAvailable = 26
ReceivedCmdAdminAreaManageAddLogManagerServerConnection = 27
ReceivedCmdAdminAreaManageDeleteLogManagerServerConnection = 28
)
const (
GroupTasksStatusFinished uint8 = 1
GroupTasksStatusRunning uint8 = 2
GroupTasksStatusCanceled uint8 = 3
GroupTasksStatusFailed uint8 = 4
GroupTasksStatusInputRequired uint8 = 5
GroupTasksStatusPaused uint8 = 6
GroupTasksStatusUndoEnded uint8 = 7
)
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,
"ScannerName": "required,min=" + minScannerName + ",max=" + maxScannerName,
}
groupTaskRules = map[string]string{
"Category": "required",
"GroupId": "required",
"Description": "required",
"GlobalInputs": "required",
}
equipmentRules = map[string]string{
"StockItemId": "required,numericstring",
"Type": "required,number",
"Title": "required,max=" + MaxEquipmentDocumentationTitleLength,
"Notes": "required",
}
notificationRules = map[string]string{
"Type": "required,number",
"Title": "required,max=" + MaxNoficationTitleLength,
}
)
const (
_equipmentDocumentation = "equipment_documentation."
PermissionEquipmentDocumentationView = _equipmentDocumentation + "view"
PermissionEquipmentDocumentationEdit = _equipmentDocumentation + "edit"
PermissionEquipmentDocumentationCreate = _equipmentDocumentation + "create"
_groupTasks = "group_tasks."
PermissionGroupTasksOverviewXYNewTask = _groupTasks + "overview.XY.new_task"
PermissionGroupTasksOverviewXYReloadGroupConfig = _groupTasks + "overview.XY.reload_group_config"
PermissionGroupTasksOverviewXYInstallPythonPackages = _groupTasks + "overview.XY.install_python_packages"
PermissionGroupTasksOverviewXYView = _groupTasks + "overview.XY.view"
PermissionGroupTasksHistory = _groupTasks + "history"
PermissionGroupTasksInstallGlobalPythonPackages = _groupTasks + "install_global_python_packages"
PermissionGroupTasksCheckingForCategoryGroupChanges = _groupTasks + "checking_for_category_group_changes"
PermissionAllUsersCreateNewUser = "all_users.create_new_user"
PermissionAllUsersActionChangeRole = "all_users.action.change_role"
PermissionAllUsersActionDeleteUser = "all_users.action.delete_user"
PermissionAllUsersActionUserDeactivation = "all_users.action.user_deactivation"
PermissionScannerUseScanners = "scanner.use_scanners"
_adminArea = "admin_area."
_adminAreaRoles = _adminArea + "roles."
PermissionAdminAreaCreateNewRole = _adminAreaRoles + "create_new_role"
PermissionAdminAreaUpdateRole = _adminAreaRoles + "update_role"
PermissionAdminAreaDeleteRole = _adminAreaRoles + "delete_role"
PermissionAdminAreaMoveRoleUpDown = _adminAreaRoles + "move_role_up_down"
PermissionAdminAreaLogs = _adminArea + "logs"
_adminAreaManage = _adminArea + "manage."
PermissionAdminAreaManageCheckWhichCategoriesAreAvailable = _adminAreaManage + "check_which_categories_are_available"
PermissionAdminAreaManageAddLogManagerServerConnection = _adminAreaManage + "add_log_manager_server_connection"
PermissionAdminAreaManageRemoveLogManagerServerConnection = _adminAreaManage + "remove_log_manager_server_connection"
PermissionUserProfileApiKeys = "user_profile.api_keys"
_consoles = "consoles."
PermissionConsolesView = _consoles + "view"
PermissionRoboticsRobotsView = "robotics.robots.view"
PermissionsRoboticsRobotsViewRobotsAddresses = "robotics.robots.view_robots_addresses"
PermissionsRoboticsRobotsEditRobotName = "robotics.robots.edit_robot_name"
PermissionsRoboticsRobotsDisconnectRobot = "robotics.robots.disconnect_robot"
PermissionsRoboticsRobotsEnablePermitJoin = "robotics.robots.enable_permit_join"
PermissionsRoboticsRobotsAuthorizeDenyUnauthorizedRobots = "robotics.robots.authorize_deny_unauthorized_robots"
)
var SystemPermissions = []string{
PermissionEquipmentDocumentationView,
PermissionEquipmentDocumentationEdit,
PermissionEquipmentDocumentationCreate,
PermissionGroupTasksHistory,
PermissionGroupTasksInstallGlobalPythonPackages,
PermissionGroupTasksCheckingForCategoryGroupChanges,
PermissionAllUsersActionChangeRole,
PermissionAllUsersActionDeleteUser,
PermissionAllUsersActionUserDeactivation,
PermissionAllUsersCreateNewUser,
PermissionScannerUseScanners,
PermissionAdminAreaCreateNewRole,
PermissionAdminAreaUpdateRole,
PermissionAdminAreaDeleteRole,
PermissionAdminAreaMoveRoleUpDown,
PermissionAdminAreaLogs,
PermissionAdminAreaManageCheckWhichCategoriesAreAvailable,
PermissionAdminAreaManageAddLogManagerServerConnection,
PermissionAdminAreaManageRemoveLogManagerServerConnection,
PermissionUserProfileApiKeys,
PermissionConsolesView,
PermissionRoboticsRobotsView,
PermissionsRoboticsRobotsViewRobotsAddresses,
PermissionsRoboticsRobotsEditRobotName,
PermissionsRoboticsRobotsDisconnectRobot,
PermissionsRoboticsRobotsEnablePermitJoin,
PermissionsRoboticsRobotsAuthorizeDenyUnauthorizedRobots,
}
var DynamicGroupTasksPermissions = []string{
PermissionGroupTasksOverviewXYNewTask,
PermissionGroupTasksOverviewXYReloadGroupConfig,
PermissionGroupTasksOverviewXYInstallPythonPackages,
PermissionGroupTasksOverviewXYView,
}
// This represents the paths registered on the api.
// Available paths which are used for the websocket topic subscription
// to only send messages to clients who are subscribed to the topic
const (
// this is path is dynamic because there are more params after the /v1/grouptasks/
SubscribedDynamicTopicGroupTasks = "/group-tasks/"
// these paths are static - there are no params after the path
SubscribedTopicAdminAreaRoles = "/admin-area/roles"
SubscribedTopicUsers = "/users"
SubscribedTopicUserProfile = "/user-profile"
SubscribedTopicConsoles = "/consoles"
SubscribedTopicAdminAreaManage = "/admin-area/manage"
)