Skip to content
Snippets Groups Projects
Commit bccece53 authored by Florent Gluck's avatar Florent Gluck
Browse files

Ongoing work on tplEdit

parent c4622e78
No related branches found
No related tags found
No related merge requests found
package caps
import (
"errors"
)
type Capabilities map[string]int
const (
......@@ -93,22 +97,22 @@ func IsVMAccessCapValid(cap string) bool {
return exists
}
// Returns true if all user capabilities are valid.
func AreUserCapsValid(caps Capabilities) bool {
// Validates all user capabilities.
func ValidateUserCaps(caps Capabilities) error {
for cap, _ := range caps {
if (!IsUserCapValid(cap)) {
return false
return errors.New("Invalid capability: "+cap)
}
}
return true
return nil
}
// Returns true if all VM access capabilities are valid.
func AreVMAccessCapsValid(caps Capabilities) bool {
// Validates all VM access capabilities.
func ValidateVMAccessCaps(caps Capabilities) error {
for cap, _ := range caps {
if (!IsVMAccessCapValid(cap)) {
return false
return errors.New("Invalid capability: "+cap)
}
}
return true
return nil
}
......@@ -252,7 +252,6 @@ func (r *RouterTemplates)EditTemplateByID(c echo.Context) error {
if err := decodeJson(c, &p); err != nil {
return echo.NewHTTPError(http.StatusBadRequest, err.Error())
}
if err := r.tpl.EditTemplate(tplID, p.Name, p.Access); err != nil {
return echo.NewHTTPError(http.StatusBadRequest, err.Error())
}
......@@ -264,6 +263,9 @@ func (r *RouterTemplates)EditTemplateByID(c echo.Context) error {
}
if template.Owner == user.Email {
if err := decodeJson(c, &p); err != nil {
return echo.NewHTTPError(http.StatusBadRequest, err.Error())
}
if err := r.tpl.EditTemplate(tplID, p.Name, p.Access); err != nil {
return echo.NewHTTPError(http.StatusBadRequest, err.Error())
}
......
......@@ -139,8 +139,8 @@ func (r *RouterUsers) SetUserCaps(c echo.Context) error {
}
// Checks capabilities are valid.
if !caps.AreUserCapsValid(params.Caps) {
return echo.NewHTTPError(http.StatusBadRequest, "Invalid capability")
if err := caps.ValidateUserCaps(params.Caps); err != nil {
return echo.NewHTTPError(http.StatusBadRequest, err.Error())
}
// Retrieves the user for which the capabilities must be udpated.
......
package users
import (
"errors"
"nexus-server/caps"
"github.com/go-playground/validator/v10"
)
......@@ -31,8 +30,8 @@ func NewEmptyUser() *User {
// Checks that the User structure's fields are valid.
func (user *User) Validate() error {
// Checks the capabilities are valid
if !caps.AreUserCapsValid(user.Caps) {
return errors.New("Invalid capability")
if err := caps.ValidateUserCaps(user.Caps); err != nil {
return err
}
validate := validator.New()
......
......@@ -6,8 +6,8 @@ import (
const (
major = 1
minor = 2
bugfix = 1
minor = 3
bugfix = 0
)
type Version struct {
......
......@@ -160,8 +160,8 @@ func (vm *VM)validate() error {
if err != nil {
return errors.New("Invalid email")
}
if !caps.AreVMAccessCapsValid(accessCaps) {
return errors.New("Invalid capability")
if err := caps.ValidateVMAccessCaps(accessCaps); err != nil {
return err
}
}
......
......@@ -324,8 +324,8 @@ func (vms *VMs)EditVM(vmID uuid.UUID, name string, cpus, ram int, nic NicType) e
// loggedUserEmail is the email of the currently logged user
// userMail is the email of the user for which to modify the access
func (vms *VMs)SetVMAccess(vmID uuid.UUID, loggedUserEmail, userEmail string, newAccess caps.Capabilities) error {
if !caps.AreVMAccessCapsValid(newAccess) {
return errors.New("Invalid capability")
if err := caps.ValidateVMAccessCaps(newAccess); err != nil {
return err
}
vms.rwlock.Lock()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment