Skip to content

Commit 7ac964a

Browse files
committed
Merge remote-tracking branch 'giteaofficial/main'
* giteaofficial/main: Fix oauth setting list bug (go-gitea#19682) Delete user related oauth stuff on user deletion too (go-gitea#19677) Move access and repo permission to models/perm/access (go-gitea#19350) Tidy up `<head>` template (go-gitea#19678) Update go tool dependencies (go-gitea#19676) Update JS dependencies (go-gitea#19675)
2 parents 4b153ba + ea38e90 commit 7ac964a

File tree

96 files changed

+3726
-2743
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

96 files changed

+3726
-2743
lines changed

.eslintrc

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ extends:
1818
- plugin:vue/recommended
1919

2020
env:
21-
es2021: true
21+
es2022: true
2222
node: true
2323

2424
globals:
@@ -174,6 +174,7 @@ rules:
174174
no-confusing-arrow: [0]
175175
no-console: [1, {allow: [info, warn, error]}]
176176
no-const-assign: [2]
177+
no-constant-binary-expression: [2]
177178
no-constant-condition: [0]
178179
no-constructor-return: [2]
179180
no-continue: [0]
@@ -384,12 +385,14 @@ rules:
384385
unicorn/no-thenable: [2]
385386
unicorn/no-this-assignment: [2]
386387
unicorn/no-unreadable-array-destructuring: [0]
388+
unicorn/no-unreadable-iife: [2]
387389
unicorn/no-unsafe-regex: [0]
388390
unicorn/no-unused-properties: [2]
389391
unicorn/no-useless-fallback-in-spread: [2]
390392
unicorn/no-useless-length-check: [2]
391393
unicorn/no-useless-promise-resolve-reject: [2]
392394
unicorn/no-useless-spread: [2]
395+
unicorn/no-useless-switch-case: [2]
393396
unicorn/no-useless-undefined: [0]
394397
unicorn/no-zero-fractions: [2]
395398
unicorn/number-literal-case: [0]
@@ -411,7 +414,9 @@ rules:
411414
unicorn/prefer-json-parse-buffer: [0]
412415
unicorn/prefer-math-trunc: [2]
413416
unicorn/prefer-modern-dom-apis: [0]
417+
unicorn/prefer-modern-math-apis: [2]
414418
unicorn/prefer-module: [2]
419+
unicorn/prefer-native-coercion-functions: [2]
415420
unicorn/prefer-negative-index: [2]
416421
unicorn/prefer-node-append: [0]
417422
unicorn/prefer-node-protocol: [0]

.golangci.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,3 @@ issues:
162162
- path: models/user/openid.go
163163
linters:
164164
- golint
165-
- linters:
166-
- staticcheck
167-
text: "strings.Title is deprecated: The rule Title uses for word boundaries does not handle Unicode punctuation properly. Use golang.org/x/text/cases instead."

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ XGO_VERSION := go-1.18.x
2929
AIR_PACKAGE ?= github.com/cosmtrek/air@v1.29.0
3030
EDITORCONFIG_CHECKER_PACKAGE ?= github.com/editorconfig-checker/editorconfig-checker/cmd/editorconfig-checker@2.4.0
3131
ERRCHECK_PACKAGE ?= github.com/kisielk/errcheck@v1.6.0
32-
GOFUMPT_PACKAGE ?= mvdan.cc/gofumpt@v0.3.0
33-
GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/cmd/golangci-lint@v1.44.2
32+
GOFUMPT_PACKAGE ?= mvdan.cc/gofumpt@v0.3.1
33+
GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/cmd/golangci-lint@v1.46.0
3434
GXZ_PAGAGE ?= github.com/ulikunitz/xz/cmd/gxz@v0.5.10
3535
MISSPELL_PACKAGE ?= github.com/client9/misspell/cmd/misspell@v0.3.4
3636
SWAGGER_PACKAGE ?= github.com/go-swagger/go-swagger/cmd/swagger@v0.29.0

integrations/api_repo_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import (
1212
"testing"
1313

1414
"code.gitea.io/gitea/models"
15+
"code.gitea.io/gitea/models/db"
16+
access_model "code.gitea.io/gitea/models/perm/access"
1517
repo_model "code.gitea.io/gitea/models/repo"
1618
"code.gitea.io/gitea/models/unittest"
1719
user_model "code.gitea.io/gitea/models/user"
@@ -205,7 +207,7 @@ func TestAPISearchRepo(t *testing.T) {
205207
assert.Len(t, repoNames, expected.count)
206208
for _, repo := range body.Data {
207209
r := getRepo(t, repo.ID)
208-
hasAccess, err := models.HasAccess(userID, r)
210+
hasAccess, err := access_model.HasAccess(db.DefaultContext, userID, r)
209211
assert.NoError(t, err, "Error when checking if User: %d has access to %s: %v", userID, repo.FullName, err)
210212
assert.True(t, hasAccess, "User: %d does not have access to %s", userID, repo.FullName)
211213

integrations/delete_user_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111

1212
"code.gitea.io/gitea/models"
1313
"code.gitea.io/gitea/models/organization"
14+
access_model "code.gitea.io/gitea/models/perm/access"
1415
repo_model "code.gitea.io/gitea/models/repo"
1516
"code.gitea.io/gitea/models/unittest"
1617
user_model "code.gitea.io/gitea/models/user"
@@ -21,7 +22,7 @@ func assertUserDeleted(t *testing.T, userID int64) {
2122
unittest.AssertNotExistsBean(t, &user_model.Follow{UserID: userID})
2223
unittest.AssertNotExistsBean(t, &user_model.Follow{FollowID: userID})
2324
unittest.AssertNotExistsBean(t, &repo_model.Repository{OwnerID: userID})
24-
unittest.AssertNotExistsBean(t, &models.Access{UserID: userID})
25+
unittest.AssertNotExistsBean(t, &access_model.Access{UserID: userID})
2526
unittest.AssertNotExistsBean(t, &organization.OrgUser{UID: userID})
2627
unittest.AssertNotExistsBean(t, &models.IssueUser{UID: userID})
2728
unittest.AssertNotExistsBean(t, &organization.TeamUser{UID: userID})

jest.config.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
export default {
22
rootDir: 'web_src',
33
setupFilesAfterEnv: ['jest-extended/all'],
4-
testEnvironment: 'jsdom',
4+
testEnvironment: '@happy-dom/jest-environment',
55
testMatch: ['<rootDir>/**/*.test.js'],
66
testTimeout: 20000,
77
transform: {
8-
'\\.svg$': 'jest-raw-loader',
8+
'\\.svg$': '<rootDir>/js/testUtils/jestRawLoader.js',
99
},
1010
verbose: false,
1111
};

models/action.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616

1717
"code.gitea.io/gitea/models/db"
1818
"code.gitea.io/gitea/models/organization"
19+
access_model "code.gitea.io/gitea/models/perm/access"
1920
repo_model "code.gitea.io/gitea/models/repo"
2021
"code.gitea.io/gitea/models/unit"
2122
user_model "code.gitea.io/gitea/models/user"
@@ -510,7 +511,7 @@ func notifyWatchers(ctx context.Context, actions ...*Action) error {
510511
permPR[i] = false
511512
continue
512513
}
513-
perm, err := GetUserRepoPermission(ctx, repo, user)
514+
perm, err := access_model.GetUserRepoPermission(ctx, repo, user)
514515
if err != nil {
515516
permCode[i] = false
516517
permIssue[i] = false

models/auth/oauth2.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package auth
66

77
import (
8+
"context"
89
"crypto/sha256"
910
"encoding/base32"
1011
"encoding/base64"
@@ -18,6 +19,7 @@ import (
1819

1920
uuid "github.com/google/uuid"
2021
"golang.org/x/crypto/bcrypt"
22+
"xorm.io/builder"
2123
"xorm.io/xorm"
2224
)
2325

@@ -576,3 +578,21 @@ func GetActiveOAuth2SourceByName(name string) (*Source, error) {
576578

577579
return authSource, nil
578580
}
581+
582+
func DeleteOAuth2RelictsByUserID(ctx context.Context, userID int64) error {
583+
deleteCond := builder.Select("id").From("oauth2_grant").Where(builder.Eq{"oauth2_grant.user_id": userID})
584+
585+
if _, err := db.GetEngine(ctx).In("grant_id", deleteCond).
586+
Delete(&OAuth2AuthorizationCode{}); err != nil {
587+
return err
588+
}
589+
590+
if err := db.DeleteBeans(ctx,
591+
&OAuth2Application{UID: userID},
592+
&OAuth2Grant{UserID: userID},
593+
); err != nil {
594+
return fmt.Errorf("DeleteBeans: %v", err)
595+
}
596+
597+
return nil
598+
}

models/branches.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"code.gitea.io/gitea/models/db"
1414
"code.gitea.io/gitea/models/organization"
1515
"code.gitea.io/gitea/models/perm"
16+
access_model "code.gitea.io/gitea/models/perm/access"
1617
repo_model "code.gitea.io/gitea/models/repo"
1718
"code.gitea.io/gitea/models/unit"
1819
user_model "code.gitea.io/gitea/models/user"
@@ -79,7 +80,7 @@ func (protectBranch *ProtectedBranch) CanUserPush(userID int64) bool {
7980
} else if repo, err := repo_model.GetRepositoryByID(protectBranch.RepoID); err != nil {
8081
log.Error("repo_model.GetRepositoryByID: %v", err)
8182
return false
82-
} else if writeAccess, err := HasAccessUnit(user, repo, unit.TypeCode, perm.AccessModeWrite); err != nil {
83+
} else if writeAccess, err := access_model.HasAccessUnit(db.DefaultContext, user, repo, unit.TypeCode, perm.AccessModeWrite); err != nil {
8384
log.Error("HasAccessUnit: %v", err)
8485
return false
8586
} else {
@@ -104,7 +105,7 @@ func (protectBranch *ProtectedBranch) CanUserPush(userID int64) bool {
104105
}
105106

106107
// IsUserMergeWhitelisted checks if some user is whitelisted to merge to this branch
107-
func IsUserMergeWhitelisted(ctx context.Context, protectBranch *ProtectedBranch, userID int64, permissionInRepo Permission) bool {
108+
func IsUserMergeWhitelisted(ctx context.Context, protectBranch *ProtectedBranch, userID int64, permissionInRepo access_model.Permission) bool {
108109
if !protectBranch.EnableMergeWhitelist {
109110
// Then we need to fall back on whether the user has write permission
110111
return permissionInRepo.CanWrite(unit.TypeCode)
@@ -139,7 +140,7 @@ func isUserOfficialReviewer(ctx context.Context, protectBranch *ProtectedBranch,
139140

140141
if !protectBranch.EnableApprovalsWhitelist {
141142
// Anyone with write access is considered official reviewer
142-
writeAccess, err := hasAccessUnit(ctx, user, repo, unit.TypeCode, perm.AccessModeWrite)
143+
writeAccess, err := access_model.HasAccessUnit(ctx, user, repo, unit.TypeCode, perm.AccessModeWrite)
143144
if err != nil {
144145
return false, err
145146
}
@@ -424,7 +425,7 @@ func updateApprovalWhitelist(ctx context.Context, repo *repo_model.Repository, c
424425

425426
whitelist = make([]int64, 0, len(newWhitelist))
426427
for _, userID := range newWhitelist {
427-
if reader, err := IsRepoReader(ctx, repo, userID); err != nil {
428+
if reader, err := access_model.IsRepoReader(ctx, repo, userID); err != nil {
428429
return nil, err
429430
} else if !reader {
430431
continue
@@ -449,7 +450,7 @@ func updateUserWhitelist(ctx context.Context, repo *repo_model.Repository, curre
449450
if err != nil {
450451
return nil, fmt.Errorf("GetUserByID [user_id: %d, repo_id: %d]: %v", userID, repo.ID, err)
451452
}
452-
perm, err := GetUserRepoPermission(ctx, repo, user)
453+
perm, err := access_model.GetUserRepoPermission(ctx, repo, user)
453454
if err != nil {
454455
return nil, fmt.Errorf("GetUserRepoPermission [user_id: %d, repo_id: %d]: %v", userID, repo.ID, err)
455456
}

models/fixture_generation.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"strings"
1010

1111
"code.gitea.io/gitea/models/db"
12+
access_model "code.gitea.io/gitea/models/perm/access"
1213
repo_model "code.gitea.io/gitea/models/repo"
1314
)
1415

@@ -22,14 +23,14 @@ func GetYamlFixturesAccess() (string, error) {
2223

2324
for _, repo := range repos {
2425
repo.MustOwner()
25-
if err := RecalculateAccesses(repo); err != nil {
26+
if err := access_model.RecalculateAccesses(db.DefaultContext, repo); err != nil {
2627
return "", err
2728
}
2829
}
2930

3031
var b strings.Builder
3132

32-
accesses := make([]*Access, 0, 200)
33+
accesses := make([]*access_model.Access, 0, 200)
3334
if err := db.GetEngine(db.DefaultContext).OrderBy("user_id, repo_id").Find(&accesses); err != nil {
3435
return "", err
3536
}

0 commit comments

Comments
 (0)