diff --git a/.github/workflows/jobs.yaml b/.github/workflows/jobs.yaml index 843c977d8..6cbf29bdd 100644 --- a/.github/workflows/jobs.yaml +++ b/.github/workflows/jobs.yaml @@ -29,7 +29,7 @@ jobs: strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -98,7 +98,7 @@ jobs: strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -224,10 +224,10 @@ jobs: lint-job: name: Checking Lint - runs-on: [self-hosted] + runs-on: [ self-hosted ] strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -251,7 +251,7 @@ jobs: runs-on: self-hosted strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -300,7 +300,7 @@ jobs: runs-on: self-hosted strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -366,7 +366,7 @@ jobs: runs-on: self-hosted strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -404,7 +404,7 @@ jobs: runs-on: [ self-hosted, vm-docker, xvfb-run ] strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -501,7 +501,7 @@ jobs: runs-on: [ self-hosted, vm-docker, xvfb-run ] strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -591,7 +591,7 @@ jobs: runs-on: [ self-hosted, vm-docker, xvfb-run ] strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -683,7 +683,7 @@ jobs: timeout-minutes: 5 strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -761,7 +761,7 @@ jobs: runs-on: [ self-hosted, vm-docker, xvfb-run ] strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -839,7 +839,7 @@ jobs: runs-on: [ self-hosted, vm-docker, xvfb-run ] strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -917,7 +917,7 @@ jobs: runs-on: [ self-hosted, vm-docker, xvfb-run ] strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -995,7 +995,7 @@ jobs: runs-on: [ self-hosted, vm-docker, xvfb-run ] strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -1073,7 +1073,7 @@ jobs: runs-on: [ self-hosted, vm-docker, xvfb-run ] strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -1257,7 +1257,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -1295,7 +1295,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -1333,7 +1333,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -1371,7 +1371,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -1409,7 +1409,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -1447,7 +1447,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -1485,7 +1485,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -1523,7 +1523,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -1569,7 +1569,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -1616,7 +1616,7 @@ jobs: strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} @@ -1728,7 +1728,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - go-version: [ 1.18.x, 1.19.x ] + go-version: [ 1.18.x ] os: [ ubuntu-latest ] steps: - name: Set up Go ${{ matrix.go-version }} on ${{ matrix.os }} diff --git a/restapi/errors.go b/restapi/errors.go index 5f4a0a50a..2d55547af 100644 --- a/restapi/errors.go +++ b/restapi/errors.go @@ -81,6 +81,12 @@ func ErrorWithContext(ctx context.Context, err ...interface{}) *models.Error { var exists bool if len(err) > 0 { if err1, exists = err[0].(error); exists { + var lastError error + if len(err) > 1 { + if err2, lastExists := err[1].(error); lastExists { + lastError = err2 + } + } if err1.Error() == ErrForbidden.Error() { errorCode = 403 } @@ -95,6 +101,11 @@ func ErrorWithContext(ctx context.Context, err ...interface{}) *models.Error { errorCode = 401 errorMessage = ErrInvalidLogin.Error() } + // If the last error is ErrInvalidLogin, this is a login failure + if errors.Is(lastError, ErrInvalidLogin) { + errorCode = 401 + errorMessage = err1.Error() + } if strings.Contains(err1.Error(), ErrLoginNotAllowed.Error()) { errorCode = 400 errorMessage = ErrLoginNotAllowed.Error() diff --git a/restapi/errors_test.go b/restapi/errors_test.go index 561693627..1c61a5dfb 100644 --- a/restapi/errors_test.go +++ b/restapi/errors_test.go @@ -96,11 +96,11 @@ func TestError(t *testing.T) { } tests = append(tests, testError{ - name: "passing multiple errors", + name: "passing multiple errors but ErrInvalidLogin is last", args: args{ err: []interface{}{ErrDefault, ErrInvalidLogin}, }, - want: &models.Error{Code: int32(500), Message: swag.String(ErrDefault.Error()), DetailedMessage: swag.String(ErrDefault.Error())}, + want: &models.Error{Code: int32(401), Message: swag.String(ErrDefault.Error()), DetailedMessage: swag.String(ErrDefault.Error())}, }) for _, tt := range tests { t.Run(tt.name, func(t *testing.T) {