diff options
author | ᴜɴᴋɴᴡᴏɴ <u@gogs.io> | 2020-10-06 15:43:28 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-06 15:43:28 +0800 |
commit | 2eaf1d693ae08c0312dd1f977f81675f418f3770 (patch) | |
tree | b42a26180e813918a05a676bd18e13a3a1bb73ec /internal/context/repo.go | |
parent | a92d818aa35583594a6b3098f4e1e1f4edec17dd (diff) |
db: migrate access table to use GORM (#6371)
Diffstat (limited to 'internal/context/repo.go')
-rw-r--r-- | internal/context/repo.go | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/internal/context/repo.go b/internal/context/repo.go index c1b9ea30..b280a37e 100644 --- a/internal/context/repo.go +++ b/internal/context/repo.go @@ -170,22 +170,24 @@ func RepoAssignment(pages ...bool) macaron.Handler { if c.IsLogged && c.User.IsAdmin { c.Repo.AccessMode = db.AccessModeOwner } else { - mode, err := db.UserAccessMode(c.UserID(), c.Repo.Repository) - if err != nil { - c.Error(err, "get user access mode") - return - } - c.Repo.AccessMode = mode + c.Repo.AccessMode = db.Perms.AccessMode(c.UserID(), repo.ID, + db.AccessModeOptions{ + OwnerID: repo.OwnerID, + Private: repo.IsPrivate, + }, + ) } // If the authenticated user has no direct access, see if the repository is a fork // and whether the user has access to the base repository. - if c.Repo.AccessMode == db.AccessModeNone && c.Repo.Repository.IsFork { - mode, err := db.UserAccessMode(c.UserID(), c.Repo.Repository.BaseRepo) - if err != nil { - c.Error(err, "get user access mode of base repository") - return - } + if c.Repo.AccessMode == db.AccessModeNone && repo.BaseRepo != nil { + mode := db.Perms.AccessMode(c.UserID(), repo.BaseRepo.ID, + db.AccessModeOptions{ + OwnerID: repo.BaseRepo.OwnerID, + Private: repo.BaseRepo.IsPrivate, + }, + ) + // Users shouldn't have indirect access level higher than write. if mode > db.AccessModeWrite { mode = db.AccessModeWrite |