diff options
author | zhsso <zhssoge@gmail.com> | 2014-04-10 14:20:58 -0400 |
---|---|---|
committer | zhsso <zhssoge@gmail.com> | 2014-04-10 14:20:58 -0400 |
commit | a4cbe79567072befd96cf1b7eb319de1e2809ca3 (patch) | |
tree | 3dff34e53f34632532fd7a05e00e6f06b3e7fb82 /models/access.go | |
parent | f3ed11d177d76bcb1850c6670c1516d25a66eb2c (diff) |
fix
Diffstat (limited to 'models/access.go')
-rw-r--r-- | models/access.go | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/models/access.go b/models/access.go new file mode 100644 index 00000000..2c090015 --- /dev/null +++ b/models/access.go @@ -0,0 +1,62 @@ +// Copyright 2014 The Gogs Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package models + +import ( + "strings" + "time" + + "github.com/lunny/xorm" +) + +// Access types. +const ( + AU_READABLE = iota + 1 + AU_WRITABLE +) + +// Access represents the accessibility of user to repository. +type Access struct { + Id int64 + UserName string `xorm:"unique(s)"` + RepoName string `xorm:"unique(s)"` + Mode int `xorm:"unique(s)"` + Created time.Time `xorm:"created"` +} + +// AddAccess adds new access record. +func AddAccess(access *Access) error { + access.UserName = strings.ToLower(access.UserName) + access.RepoName = strings.ToLower(access.RepoName) + _, err := orm.Insert(access) + return err +} + +// UpdateAccess updates access information. +func UpdateAccess(access *Access) error { + access.UserName = strings.ToLower(access.UserName) + access.RepoName = strings.ToLower(access.RepoName) + _, err := orm.Id(access.Id).Update(access) + return err +} + +// UpdateAccess updates access information with session for rolling back. +func UpdateAccessWithSession(sess *xorm.Session, access *Access) error { + if _, err := sess.Id(access.Id).Update(access); err != nil { + sess.Rollback() + return err + } + return nil +} + +// HasAccess returns true if someone can read or write to given repository. +func HasAccess(userName, repoName string, mode int) (bool, error) { + return orm.Get(&Access{ + Id: 0, + UserName: strings.ToLower(userName), + RepoName: strings.ToLower(repoName), + Mode: mode, + }) +} |