Przeglądaj źródła

Merge pull request #587 from eryx/dev

Fix #266
无闻 10 lat temu
rodzic
commit
d21d7171b0
1 zmienionych plików z 6 dodań i 3 usunięć
  1. 6 3
      models/publickey.go

+ 6 - 3
models/publickey.go

@@ -79,9 +79,9 @@ func init() {
 // PublicKey represents a SSH key.
 type PublicKey struct {
 	Id                int64
-	OwnerId           int64  `xorm:"UNIQUE(s) INDEX NOT NULL"`
-	Name              string `xorm:"UNIQUE(s) NOT NULL"`
-	Fingerprint       string
+	OwnerId           int64     `xorm:"UNIQUE(s) INDEX NOT NULL"`
+	Name              string    `xorm:"UNIQUE(s) NOT NULL"`
+	Fingerprint       string    `xorm:"INDEX NOT NULL"`
 	Content           string    `xorm:"TEXT NOT NULL"`
 	Created           time.Time `xorm:"CREATED"`
 	Updated           time.Time
@@ -209,6 +209,9 @@ func AddPublicKey(key *PublicKey) (err error) {
 		return errors.New("not enough output for calculating fingerprint: " + stdout)
 	}
 	key.Fingerprint = strings.Split(stdout, " ")[1]
+	if has, err := x.Get(&PublicKey{Fingerprint: key.Fingerprint}); err == nil && has {
+		return ErrKeyAlreadyExist
+	}
 
 	// Save SSH key.
 	if _, err = x.Insert(key); err != nil {