mirror of
https://github.com/goharbor/harbor.git
synced 2024-09-27 21:12:42 +02:00
Merge pull request #13989 from wy65701436/fixes-robot-issues
fix robot issues
This commit is contained in:
commit
2b068c3f86
@ -28,10 +28,9 @@ func (r *robot2) Generate(req *http.Request) security.Context {
|
||||
if !strings.HasPrefix(name, config.RobotPrefix()) {
|
||||
return nil
|
||||
}
|
||||
name = strings.TrimPrefix(name, config.RobotPrefix())
|
||||
// The robot name can be used as the unique identifier to locate robot as it contains the project name.
|
||||
robots, err := robot_ctl.Ctl.List(req.Context(), q.New(q.KeyWords{
|
||||
"name": name,
|
||||
"name": strings.TrimPrefix(name, config.RobotPrefix()),
|
||||
}), &robot_ctl.Option{
|
||||
WithPermission: true,
|
||||
})
|
||||
|
@ -15,6 +15,7 @@ import (
|
||||
"github.com/goharbor/harbor/src/server/v2.0/handler/model"
|
||||
"github.com/goharbor/harbor/src/server/v2.0/models"
|
||||
operation "github.com/goharbor/harbor/src/server/v2.0/restapi/operations/robot"
|
||||
"math"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
@ -254,11 +255,11 @@ func (rAPI *robotAPI) requireAccess(ctx context.Context, level string, projectID
|
||||
// more validation
|
||||
func (rAPI *robotAPI) validate(d int64, level string, permissions []*models.Permission) error {
|
||||
if !isValidDuration(d) {
|
||||
return errors.New(nil).WithMessage("bad request error duration input").WithCode(errors.BadRequestCode)
|
||||
return errors.New(nil).WithMessage("bad request error duration input: %d", d).WithCode(errors.BadRequestCode)
|
||||
}
|
||||
|
||||
if !isValidLevel(level) {
|
||||
return errors.New(nil).WithMessage("bad request error level input").WithCode(errors.BadRequestCode)
|
||||
return errors.New(nil).WithMessage("bad request error level input: %s", level).WithCode(errors.BadRequestCode)
|
||||
}
|
||||
|
||||
if len(permissions) == 0 {
|
||||
@ -337,7 +338,7 @@ func isValidLevel(l string) bool {
|
||||
}
|
||||
|
||||
func isValidDuration(d int64) bool {
|
||||
return d >= int64(-1)
|
||||
return d >= int64(-1) && d < math.MaxInt32
|
||||
}
|
||||
|
||||
func isValidSec(sec string) bool {
|
||||
|
@ -1,6 +1,7 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"math"
|
||||
"testing"
|
||||
)
|
||||
|
||||
@ -62,6 +63,18 @@ func TestValidDuration(t *testing.T) {
|
||||
9999,
|
||||
true,
|
||||
},
|
||||
{"duration max",
|
||||
math.MaxInt32 - 1,
|
||||
true,
|
||||
},
|
||||
{"duration max",
|
||||
math.MaxInt32,
|
||||
false,
|
||||
},
|
||||
{"duration 999999999999",
|
||||
999999999999,
|
||||
false,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
|
Loading…
Reference in New Issue
Block a user