aboutsummaryrefslogtreecommitdiff
path: root/models/access.go
diff options
context:
space:
mode:
authorzhsso <zhssoge@gmail.com>2014-04-10 14:20:58 -0400
committerzhsso <zhssoge@gmail.com>2014-04-10 14:20:58 -0400
commita4cbe79567072befd96cf1b7eb319de1e2809ca3 (patch)
tree3dff34e53f34632532fd7a05e00e6f06b3e7fb82 /models/access.go
parentf3ed11d177d76bcb1850c6670c1516d25a66eb2c (diff)
fix
Diffstat (limited to 'models/access.go')
-rw-r--r--models/access.go62
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,
+ })
+}