summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--models/publickey.go6
-rw-r--r--routers/user/ssh.go28
-rw-r--r--templates/base/navbar.tmpl2
-rw-r--r--templates/user/publickey_add.tmpl2
-rw-r--r--templates/user/publickey_list.tmpl12
-rw-r--r--web.go1
6 files changed, 45 insertions, 6 deletions
diff --git a/models/publickey.go b/models/publickey.go
index 49863d8c0b..ea5af8816b 100644
--- a/models/publickey.go
+++ b/models/publickey.go
@@ -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)
diff --git a/routers/user/ssh.go b/routers/user/ssh.go
index 7b5a1d325b..9e9cf009fe 100644
--- a/routers/user/ssh.go
+++ b/routers/user/ssh.go
@@ -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),
+ })
+}
diff --git a/templates/base/navbar.tmpl b/templates/base/navbar.tmpl
index 323759ba18..565fb30c82 100644
--- a/templates/base/navbar.tmpl
+++ b/templates/base/navbar.tmpl
@@ -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>
diff --git a/templates/user/publickey_add.tmpl b/templates/user/publickey_add.tmpl
index 5ab25b7235..b6757d1f63 100644
--- a/templates/user/publickey_add.tmpl
+++ b/templates/user/publickey_add.tmpl
@@ -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
index 0000000000..fbd640b4bf
--- /dev/null
+++ b/templates/user/publickey_list.tmpl
@@ -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 b89f8cca64..34892b129d 100644
--- 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)