Updated time.Time `xorm:"updated"`
}
+var (
+ ErrKeyAlreadyExist = errors.New("Public key already exist")
+)
+
func GenAuthorizedKey(keyId int64, key string) string {
return fmt.Sprintf(tmplPublicKey, appPath, keyId, key)
}
func AddPublicKey(key *PublicKey) (err error) {
+ // Check if public key name has been used.
+ has, err := orm.Get(key)
+ if err != nil {
+ return err
+ } else if has {
+ return ErrKeyAlreadyExist
+ }
+
// Calculate fingerprint.
tmpPath := filepath.Join(os.TempDir(), fmt.Sprintf("%d", time.Now().Nanosecond()),
"id_rsa.pub")
}
if err := models.AddPublicKey(k); err != nil {
+ if err.Error() == models.ErrKeyAlreadyExist.Error() {
+ ctx.RenderWithErr("Public key name has been used", "user/publickey", &form)
+ return
+ }
ctx.Handle(200, "ssh.AddPublicKey", err)
return
} else {