]> source.dussan.org Git - gitea.git/commitdiff
add publickey list
authorLunny Xiao <xiaolunwen@gmail.com>
Fri, 7 Mar 2014 03:34:41 +0000 (11:34 +0800)
committerLunny Xiao <xiaolunwen@gmail.com>
Fri, 7 Mar 2014 03:34:41 +0000 (11:34 +0800)
models/publickey.go
routers/user/ssh.go
templates/base/navbar.tmpl
templates/user/publickey_add.tmpl
templates/user/publickey_list.tmpl [new file with mode: 0644]
web.go

index 49863d8c0b8faf53a7f0171d533743c4e17c3497..ea5af8816bbe76e41b6fadedfc58dcefce6117b6 100644 (file)
@@ -77,6 +77,12 @@ func AddPublicKey(key *PublicKey) error {
        return nil
 }
 
+func ListPublicKey(userId int64) ([]PublicKey, error) {
+       keys := make([]PublicKey, 0)
+       err := orm.Find(&keys, &PublicKey{OwnerId: userId})
+       return keys, err
+}
+
 func SaveAuthorizedKeyFile(key *PublicKey) error {
        p := filepath.Join(sshPath, "authorized_keys")
        f, err := os.OpenFile(p, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600)
index 7b5a1d325b0cf95addf621217ab8d02a0ce67448..9e9cf009fe1d0c3dca693ef33b58ab2a15ec9463 100644 (file)
@@ -11,26 +11,46 @@ import (
        "github.com/martini-contrib/render"
 
        "github.com/gogits/gogs/models"
+       "github.com/martini-contrib/sessions"
 )
 
-func AddPublicKey(req *http.Request, r render.Render) {
+func AddPublicKey(req *http.Request, r render.Render, session sessions.Session) {
        if req.Method == "GET" {
                r.HTML(200, "user/publickey_add", map[string]interface{}{
-                       "Title": "Add Public Key",
+                       "Title":    "Add Public Key",
+                       "IsSigned": IsSignedIn(session),
                })
                return
        }
 
-       k := &models.PublicKey{OwnerId: 1,
+       k := &models.PublicKey{OwnerId: SignedInId(session),
                Name:    req.FormValue("keyname"),
                Content: req.FormValue("key_content"),
        }
        err := models.AddPublicKey(k)
        if err != nil {
                r.HTML(403, "status/403", map[string]interface{}{
-                       "Title": fmt.Sprintf("%v", err),
+                       "Title":    fmt.Sprintf("%v", err),
+                       "IsSigned": IsSignedIn(session),
                })
        } else {
                r.HTML(200, "user/publickey_added", map[string]interface{}{})
        }
 }
+
+func ListPublicKey(req *http.Request, r render.Render, session sessions.Session) {
+       keys, err := models.ListPublicKey(SignedInId(session))
+       if err != nil {
+               r.HTML(200, "base/error", map[string]interface{}{
+                       "Error":    fmt.Sprintf("%v", err),
+                       "IsSigned": IsSignedIn(session),
+               })
+               return
+       }
+
+       r.HTML(200, "user/publickey_list", map[string]interface{}{
+               "Title":    "repositories",
+               "Keys":     keys,
+               "IsSigned": IsSignedIn(session),
+       })
+}
index 323759ba186ade8ab949308ca833575d3693d2d1..565fb30c82406c1c3f02b56b17566472f33a1e3f 100644 (file)
@@ -10,7 +10,7 @@
                 <img src="http://1.gravatar.com/avatar/{{.Avatar}}?s=28" alt="user-avatar" title="username"/>
             </a>
             <a class="navbar-right gogs-nav-item" href="/repo/create" data-toggle="tooltip" data-placement="bottom" title="New Repository"><i class="fa fa-plus fa-lg"></i></a>
-            <a class="navbar-right gogs-nav-item" href="#"  data-toggle="tooltip" data-placement="bottom" title="Setting"><i class="fa fa-cogs fa-lg"></i></a>
+            <a class="navbar-right gogs-nav-item" href="/user/publickey/list"  data-toggle="tooltip" data-placement="bottom" title="Setting"><i class="fa fa-cogs fa-lg"></i></a>
             {{else}}<a id="gogs-nav-signin" class="gogs-nav-item navbar-right navbar-btn btn btn-danger" href="/user/login/">Sign in</a>{{end}}
         </nav>
     </div>
index 5ab25b7235989b0705e3c2a7c96e8598c6418b77..b6757d1f636cc1bb2f026dcc391bcc6ea4e7dfb8 100644 (file)
@@ -1,6 +1,6 @@
 {{template "base/head" .}}
 {{template "base/navbar" .}}
-<div class="container">
+<div class="container" id="gogs-body">
        <form action="/user/publickey/add" method="post" class="form-horizontal">
                <div class="form-group">
                        <label class="col-md-4 control-label">Name of this public key: </label>
diff --git a/templates/user/publickey_list.tmpl b/templates/user/publickey_list.tmpl
new file mode 100644 (file)
index 0000000..fbd640b
--- /dev/null
@@ -0,0 +1,12 @@
+{{template "base/head" .}}
+{{template "base/navbar" .}}
+<div class="container" id="gogs-body">
+<div><a href="/user/publickey/add">Add publick key</a></div>
+       <ul>
+       {{range .Keys}}
+               <li>{{.Name}}</li>
+               <li>{{.Content}}</li>
+       {{end}}
+       </ul>
+</div>
+{{template "base/footer" .}}
\ No newline at end of file
diff --git a/web.go b/web.go
index b89f8cca64c1686ca008091709398c06d94e419a..34892b129dc04af5c78ba52a9282bec32d065386 100644 (file)
--- a/web.go
+++ b/web.go
@@ -65,6 +65,7 @@ func runWeb(*cli.Context) {
        m.Get("/user/profile", user.Profile) // should be /username
        m.Any("/user/delete", user.Delete)
        m.Any("/user/publickey/add", user.AddPublicKey)
+       m.Any("/user/publickey/list", user.ListPublicKey)
        m.Any("/repo/create", repo.Create)
        m.Any("/repo/delete", repo.Delete)
        m.Any("/repo/list", repo.List)