summaryrefslogtreecommitdiffstats
path: root/models
diff options
context:
space:
mode:
authorUnknwon <joe2010xtmf@163.com>2014-11-12 06:48:50 -0500
committerUnknwon <joe2010xtmf@163.com>2014-11-12 06:48:50 -0500
commit8c9338a5377c60c84cdee1f5781b3de5933bb3b0 (patch)
tree57de36743bf8b9c8eaa0ff51172180b834354c4d /models
parent21b9d5fa1f4014b30619d221f5d665509d373147 (diff)
downloadgitea-8c9338a5377c60c84cdee1f5781b3de5933bb3b0.tar.gz
gitea-8c9338a5377c60c84cdee1f5781b3de5933bb3b0.zip
add personal access token panel #12
Diffstat (limited to 'models')
-rw-r--r--models/models.go3
-rw-r--r--models/publickey.go6
-rw-r--r--models/token.go69
3 files changed, 74 insertions, 4 deletions
diff --git a/models/models.go b/models/models.go
index b4f5f0a2db..92a579dfcc 100644
--- a/models/models.go
+++ b/models/models.go
@@ -39,7 +39,8 @@ var (
)
func init() {
- tables = append(tables, new(User), new(PublicKey), new(Follow), new(Oauth2),
+ tables = append(tables,
+ new(User), new(PublicKey), new(Follow), new(Oauth2), new(AccessToken),
new(Repository), new(Watch), new(Star), new(Action), new(Access),
new(Issue), new(Comment), new(Attachment), new(IssueUser), new(Label), new(Milestone),
new(Mirror), new(Release), new(LoginSource), new(Webhook),
diff --git a/models/publickey.go b/models/publickey.go
index 762d7333fa..f5e487fdbb 100644
--- a/models/publickey.go
+++ b/models/publickey.go
@@ -236,10 +236,10 @@ func GetPublicKeyById(keyId int64) (*PublicKey, error) {
return key, nil
}
-// ListPublicKey returns a list of all public keys that user has.
-func ListPublicKey(uid int64) ([]*PublicKey, error) {
+// ListPublicKeys returns a list of public keys belongs to given user.
+func ListPublicKeys(uid int64) ([]*PublicKey, error) {
keys := make([]*PublicKey, 0, 5)
- err := x.Find(&keys, &PublicKey{OwnerId: uid})
+ err := x.Where("owner_id=?", uid).Find(&keys)
if err != nil {
return nil, err
}
diff --git a/models/token.go b/models/token.go
new file mode 100644
index 0000000000..909d05e072
--- /dev/null
+++ b/models/token.go
@@ -0,0 +1,69 @@
+// 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 (
+ "errors"
+ "time"
+
+ "github.com/gogits/gogs/modules/base"
+ "github.com/gogits/gogs/modules/uuid"
+)
+
+var (
+ ErrAccessTokenNotExist = errors.New("Access token does not exist")
+)
+
+// AccessToken represents a personal access token.
+type AccessToken struct {
+ Id int64
+ Uid int64
+ Name string
+ Sha1 string `xorm:"UNIQUE VARCHAR(40)"`
+ Created time.Time `xorm:"CREATED"`
+ Updated time.Time
+ HasRecentActivity bool `xorm:"-"`
+ HasUsed bool `xorm:"-"`
+}
+
+// NewAccessToken creates new access token.
+func NewAccessToken(t *AccessToken) error {
+ t.Sha1 = base.EncodeSha1(uuid.NewV4().String())
+ _, err := x.Insert(t)
+ return err
+}
+
+// GetAccessTokenBySha returns access token by given sha1.
+func GetAccessTokenBySha(sha string) (*AccessToken, error) {
+ t := &AccessToken{Sha1: sha}
+ has, err := x.Get(t)
+ if err != nil {
+ return nil, err
+ } else if !has {
+ return nil, ErrAccessTokenNotExist
+ }
+ return t, nil
+}
+
+// ListAccessTokens returns a list of access tokens belongs to given user.
+func ListAccessTokens(uid int64) ([]*AccessToken, error) {
+ tokens := make([]*AccessToken, 0, 5)
+ err := x.Where("uid=?", uid).Desc("id").Find(&tokens)
+ if err != nil {
+ return nil, err
+ }
+
+ for _, t := range tokens {
+ t.HasUsed = t.Updated.After(t.Created)
+ t.HasRecentActivity = t.Updated.Add(7 * 24 * time.Hour).After(time.Now())
+ }
+ return tokens, nil
+}
+
+// DeleteAccessTokenById deletes access token by given ID.
+func DeleteAccessTokenById(id int64) error {
+ _, err := x.Id(id).Delete(new(AccessToken))
+ return err
+}