diff options
-rw-r--r-- | models/publickey.go | 6 | ||||
-rw-r--r-- | routers/user/ssh.go | 28 | ||||
-rw-r--r-- | templates/base/navbar.tmpl | 2 | ||||
-rw-r--r-- | templates/user/publickey_add.tmpl | 2 | ||||
-rw-r--r-- | templates/user/publickey_list.tmpl | 12 | ||||
-rw-r--r-- | web.go | 1 |
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 @@ -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) |