diff --git a/cmd/serv.go b/cmd/serv.go index dc8952abe..e3aeb41c5 100644 --- a/cmd/serv.go +++ b/cmd/serv.go @@ -316,13 +316,7 @@ func runServ(c *cli.Context) error { // Update user key activity. if keyID > 0 { - key, err := models.GetPublicKeyByID(keyID) - if err != nil { - fail("Internal error", "GetPublicKeyById: %v", err) - } - - key.Updated = time.Now() - if err = models.UpdatePublicKey(key); err != nil { + if err = models.UpdatePublicKeyUpdated(keyID); err != nil { fail("Internal error", "UpdatePublicKey: %v", err) } } diff --git a/models/ssh_key.go b/models/ssh_key.go index ba7007028..75a0120c5 100644 --- a/models/ssh_key.go +++ b/models/ssh_key.go @@ -500,6 +500,20 @@ func UpdatePublicKey(key *PublicKey) error { return err } +// UpdatePublicKeyUpdated updates public key use time. +func UpdatePublicKeyUpdated(id int64) error { + cnt, err := x.ID(id).Cols("updated").Update(&PublicKey{ + Updated: time.Now(), + }) + if err != nil { + return err + } + if cnt != 1 { + return ErrKeyNotExist{id} + } + return nil +} + // deletePublicKeys does the actual key deletion but does not update authorized_keys file. func deletePublicKeys(e *xorm.Session, keyIDs ...int64) error { if len(keyIDs) == 0 {