diff options
author | Unknwon <u@gogs.io> | 2017-02-23 16:15:25 -0500 |
---|---|---|
committer | Unknwon <u@gogs.io> | 2017-02-23 16:15:25 -0500 |
commit | b78e03934d057bdb4c628fefb364dda6eb1f260a (patch) | |
tree | 79fe27f1a575f088a45b658709dac1f07eb0e9fc /models/access.go | |
parent | 3c0d162961d3704c5a98f0f0606fbb95971db358 (diff) |
models/access: hasAccess only need userID not user object
Diffstat (limited to 'models/access.go')
-rw-r--r-- | models/access.go | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/models/access.go b/models/access.go index e780c3d0..0844a0fe 100644 --- a/models/access.go +++ b/models/access.go @@ -57,41 +57,45 @@ type Access struct { Mode AccessMode } -func accessLevel(e Engine, u *User, repo *Repository) (AccessMode, error) { +func accessLevel(e Engine, userID int64, repo *Repository) (AccessMode, error) { mode := ACCESS_MODE_NONE + // Everyone has read access to public repository if !repo.IsPrivate { mode = ACCESS_MODE_READ } - if u == nil { + if userID <= 0 { return mode, nil } - if u.ID == repo.OwnerID { + if userID == repo.OwnerID { return ACCESS_MODE_OWNER, nil } - a := &Access{UserID: u.ID, RepoID: repo.ID} - if has, err := e.Get(a); !has || err != nil { + access := &Access{ + UserID: userID, + RepoID: repo.ID, + } + if has, err := e.Get(access); !has || err != nil { return mode, err } - return a.Mode, nil + return access.Mode, nil } // AccessLevel returns the Access a user has to a repository. Will return NoneAccess if the -// user does not have access. User can be nil! -func AccessLevel(u *User, repo *Repository) (AccessMode, error) { - return accessLevel(x, u, repo) +// user does not have access. +func AccessLevel(userID int64, repo *Repository) (AccessMode, error) { + return accessLevel(x, userID, repo) } -func hasAccess(e Engine, u *User, repo *Repository, testMode AccessMode) (bool, error) { - mode, err := accessLevel(e, u, repo) +func hasAccess(e Engine, userID int64, repo *Repository, testMode AccessMode) (bool, error) { + mode, err := accessLevel(e, userID, repo) return mode >= testMode, err } // HasAccess returns true if someone has the request access level. User can be nil! -func HasAccess(u *User, repo *Repository, testMode AccessMode) (bool, error) { - return hasAccess(x, u, repo, testMode) +func HasAccess(userID int64, repo *Repository, testMode AccessMode) (bool, error) { + return hasAccess(x, userID, repo, testMode) } // GetRepositoryAccesses finds all repositories with their access mode where a user has access but does not own. |