Ver Fonte

add del publickey

Lunny Xiao há 11 anos atrás
pai
commit
3ca7a33907
2 ficheiros alterados com 46 adições e 0 exclusões
  1. 5 0
      models/publickey.go
  2. 41 0
      routers/user/ssh.go

+ 5 - 0
models/publickey.go

@@ -77,6 +77,11 @@ func AddPublicKey(key *PublicKey) error {
 	return nil
 }
 
+func DeletePublicKey(key *PublicKey) error {
+	_, err := orm.Delete(key)
+	return err
+}
+
 func ListPublicKey(userId int64) ([]PublicKey, error) {
 	keys := make([]PublicKey, 0)
 	err := orm.Find(&keys, &PublicKey{OwnerId: userId})

+ 41 - 0
routers/user/ssh.go

@@ -6,6 +6,7 @@ package user
 
 import (
 	"net/http"
+	"strconv"
 
 	"github.com/martini-contrib/render"
 	"github.com/martini-contrib/sessions"
@@ -38,6 +39,46 @@ func AddPublicKey(req *http.Request, data base.TmplData, r render.Render, sessio
 	}
 }
 
+func DelPublicKey(req *http.Request, data base.TmplData, r render.Render, session sessions.Session) {
+	data["Title"] = "Del Public Key"
+
+	if req.Method == "GET" {
+		r.HTML(200, "user/publickey_add", data)
+		return
+	}
+
+	if req.Method == "DELETE" {
+		id, err := strconv.ParseInt(req.FormValue("id"), 10, 64)
+		if err != nil {
+			data["ErrorMsg"] = err
+			log.Error("ssh.DelPublicKey: %v", err)
+			r.JSON(200, map[string]interface{}{
+				"ok":  false,
+				"err": err.Error(),
+			})
+			return
+		}
+
+		k := &models.PublicKey{
+			Id:      id,
+			OwnerId: auth.SignedInId(session),
+		}
+		err = models.DeletePublicKey(k)
+		if err != nil {
+			data["ErrorMsg"] = err
+			log.Error("ssh.DelPublicKey: %v", err)
+			r.JSON(200, map[string]interface{}{
+				"ok":  false,
+				"err": err.Error(),
+			})
+		} else {
+			r.JSON(200, map[string]interface{}{
+				"ok": true,
+			})
+		}
+	}
+}
+
 func ListPublicKey(req *http.Request, data base.TmplData, r render.Render, session sessions.Session) {
 	data["Title"] = "Public Keys"