aboutsummaryrefslogtreecommitdiff
path: root/models/access.go
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2017-02-23 16:15:25 -0500
committerUnknwon <u@gogs.io>2017-02-23 16:15:25 -0500
commitb78e03934d057bdb4c628fefb364dda6eb1f260a (patch)
tree79fe27f1a575f088a45b658709dac1f07eb0e9fc /models/access.go
parent3c0d162961d3704c5a98f0f0606fbb95971db358 (diff)
models/access: hasAccess only need userID not user object
Diffstat (limited to 'models/access.go')
-rw-r--r--models/access.go30
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.