From 34145c990d4fd9f278f29cdf9c61378a75e9b934 Mon Sep 17 00:00:00 2001 From: ᴜɴᴋɴᴡᴏɴ <u@gogs.io> Date: Sat, 4 Apr 2020 21:14:15 +0800 Subject: lfs: implement HTTP routes (#6035) * Bootstrap with GORM * Fix lint error * Set conn max lifetime to one minute * Fallback to use gorm v1 * Define HTTP routes * Finish authentication * Save token updated * Add docstring * Finish authorization * serveBatch rundown * Define types in lfsutil * Finish Batch * authutil * Finish basic * Formalize response error * Fix lint errors * authutil: add tests * dbutil: add tests * lfsutil: add tests * strutil: add tests * Formalize 401 response --- internal/db/access.go | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) (limited to 'internal/db/access.go') diff --git a/internal/db/access.go b/internal/db/access.go index 63911f8e..551c29d7 100644 --- a/internal/db/access.go +++ b/internal/db/access.go @@ -13,22 +13,22 @@ import ( type AccessMode int const ( - ACCESS_MODE_NONE AccessMode = iota // 0 - ACCESS_MODE_READ // 1 - ACCESS_MODE_WRITE // 2 - ACCESS_MODE_ADMIN // 3 - ACCESS_MODE_OWNER // 4 + AccessModeNone AccessMode = iota // 0 + AccessModeRead // 1 + AccessModeWrite // 2 + AccessModeAdmin // 3 + AccessModeOwner // 4 ) func (mode AccessMode) String() string { switch mode { - case ACCESS_MODE_READ: + case AccessModeRead: return "read" - case ACCESS_MODE_WRITE: + case AccessModeWrite: return "write" - case ACCESS_MODE_ADMIN: + case AccessModeAdmin: return "admin" - case ACCESS_MODE_OWNER: + case AccessModeOwner: return "owner" default: return "none" @@ -39,15 +39,15 @@ func (mode AccessMode) String() string { func ParseAccessMode(permission string) AccessMode { switch permission { case "write": - return ACCESS_MODE_WRITE + return AccessModeWrite case "admin": - return ACCESS_MODE_ADMIN + return AccessModeAdmin default: - return ACCESS_MODE_READ + return AccessModeRead } } -// Access represents the highest access level of a user to the repository. The only access type +// Access represents the highest access level of a user to a repository. The only access type // that is not in this table is the real owner of a repository. In case of an organization // repository, the members of the owners team are in this table. type Access struct { @@ -58,10 +58,10 @@ type Access struct { } func userAccessMode(e Engine, userID int64, repo *Repository) (AccessMode, error) { - mode := ACCESS_MODE_NONE + mode := AccessModeNone // Everyone has read access to public repository if !repo.IsPrivate { - mode = ACCESS_MODE_READ + mode = AccessModeRead } if userID <= 0 { @@ -69,7 +69,7 @@ func userAccessMode(e Engine, userID int64, repo *Repository) (AccessMode, error } if userID == repo.OwnerID { - return ACCESS_MODE_OWNER, nil + return AccessModeOwner, nil } access := &Access{ @@ -93,6 +93,7 @@ func hasAccess(e Engine, userID int64, repo *Repository, testMode AccessMode) (b } // HasAccess returns true if someone has the request access level. User can be nil! +// Deprecated: Use Perms.HasAccess instead. func HasAccess(userID int64, repo *Repository, testMode AccessMode) (bool, error) { return hasAccess(x, userID, repo, testMode) } @@ -136,7 +137,7 @@ func (user *User) GetAccessibleRepositories(limit int) (repos []*Repository, _ e } func maxAccessMode(modes ...AccessMode) AccessMode { - max := ACCESS_MODE_NONE + max := AccessModeNone for _, mode := range modes { if mode > max { max = mode @@ -205,7 +206,7 @@ func (repo *Repository) recalculateTeamAccesses(e Engine, ignTeamID int64) (err // Owner team gets owner access, and skip for teams that do not // have relations with repository. if t.IsOwnerTeam() { - t.Authorize = ACCESS_MODE_OWNER + t.Authorize = AccessModeOwner } else if !t.hasRepository(e, repo.ID) { continue } -- cgit v1.2.3