mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-11-24 03:21:49 +01:00
add publickey list
This commit is contained in:
parent
e246f2188e
commit
8e821c75d7
6 changed files with 45 additions and 6 deletions
|
@ -77,6 +77,12 @@ func AddPublicKey(key *PublicKey) error {
|
||||||
return nil
|
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 {
|
func SaveAuthorizedKeyFile(key *PublicKey) error {
|
||||||
p := filepath.Join(sshPath, "authorized_keys")
|
p := filepath.Join(sshPath, "authorized_keys")
|
||||||
f, err := os.OpenFile(p, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600)
|
f, err := os.OpenFile(p, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0600)
|
||||||
|
|
|
@ -11,26 +11,46 @@ import (
|
||||||
"github.com/martini-contrib/render"
|
"github.com/martini-contrib/render"
|
||||||
|
|
||||||
"github.com/gogits/gogs/models"
|
"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" {
|
if req.Method == "GET" {
|
||||||
r.HTML(200, "user/publickey_add", map[string]interface{}{
|
r.HTML(200, "user/publickey_add", map[string]interface{}{
|
||||||
"Title": "Add Public Key",
|
"Title": "Add Public Key",
|
||||||
|
"IsSigned": IsSignedIn(session),
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
k := &models.PublicKey{OwnerId: 1,
|
k := &models.PublicKey{OwnerId: SignedInId(session),
|
||||||
Name: req.FormValue("keyname"),
|
Name: req.FormValue("keyname"),
|
||||||
Content: req.FormValue("key_content"),
|
Content: req.FormValue("key_content"),
|
||||||
}
|
}
|
||||||
err := models.AddPublicKey(k)
|
err := models.AddPublicKey(k)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
r.HTML(403, "status/403", map[string]interface{}{
|
r.HTML(403, "status/403", map[string]interface{}{
|
||||||
"Title": fmt.Sprintf("%v", err),
|
"Title": fmt.Sprintf("%v", err),
|
||||||
|
"IsSigned": IsSignedIn(session),
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
r.HTML(200, "user/publickey_added", map[string]interface{}{})
|
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),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
<img src="http://1.gravatar.com/avatar/{{.Avatar}}?s=28" alt="user-avatar" title="username"/>
|
<img src="http://1.gravatar.com/avatar/{{.Avatar}}?s=28" alt="user-avatar" title="username"/>
|
||||||
</a>
|
</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="/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}}
|
{{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>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{{template "base/head" .}}
|
{{template "base/head" .}}
|
||||||
{{template "base/navbar" .}}
|
{{template "base/navbar" .}}
|
||||||
<div class="container">
|
<div class="container" id="gogs-body">
|
||||||
<form action="/user/publickey/add" method="post" class="form-horizontal">
|
<form action="/user/publickey/add" method="post" class="form-horizontal">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label class="col-md-4 control-label">Name of this public key: </label>
|
<label class="col-md-4 control-label">Name of this public key: </label>
|
||||||
|
|
12
templates/user/publickey_list.tmpl
Normal file
12
templates/user/publickey_list.tmpl
Normal file
|
@ -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" .}}
|
1
web.go
1
web.go
|
@ -65,6 +65,7 @@ func runWeb(*cli.Context) {
|
||||||
m.Get("/user/profile", user.Profile) // should be /username
|
m.Get("/user/profile", user.Profile) // should be /username
|
||||||
m.Any("/user/delete", user.Delete)
|
m.Any("/user/delete", user.Delete)
|
||||||
m.Any("/user/publickey/add", user.AddPublicKey)
|
m.Any("/user/publickey/add", user.AddPublicKey)
|
||||||
|
m.Any("/user/publickey/list", user.ListPublicKey)
|
||||||
m.Any("/repo/create", repo.Create)
|
m.Any("/repo/create", repo.Create)
|
||||||
m.Any("/repo/delete", repo.Delete)
|
m.Any("/repo/delete", repo.Delete)
|
||||||
m.Any("/repo/list", repo.List)
|
m.Any("/repo/list", repo.List)
|
||||||
|
|
Loading…
Reference in a new issue