From b78e03934d057bdb4c628fefb364dda6eb1f260a Mon Sep 17 00:00:00 2001 From: Unknwon Date: Thu, 23 Feb 2017 16:15:25 -0500 Subject: models/access: hasAccess only need userID not user object --- models/access.go | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) (limited to 'models/access.go') 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. -- cgit v1.2.3