add delete user

This commit is contained in:
sentriz
2019-04-24 11:08:22 +01:00
parent 620114a24c
commit 145fa21d39
6 changed files with 52 additions and 10 deletions

View File

@@ -101,6 +101,7 @@ func setAdminRoutes(mux *http.ServeMux) {
"home": extendFromBox(userT, box, "pages/home.tmpl"),
"change_own_password": extendFromBox(userT, box, "pages/change_own_password.tmpl"),
"change_password": extendFromBox(userT, box, "pages/change_password.tmpl"),
"delete_user": extendFromBox(userT, box, "pages/delete_user.tmpl"),
"create_user": extendFromBox(userT, box, "pages/create_user.tmpl"),
"update_lastfm_api_key": extendFromBox(userT, box, "pages/update_lastfm_api_key.tmpl"),
}
@@ -128,6 +129,8 @@ func setAdminRoutes(mux *http.ServeMux) {
mux.HandleFunc("/admin/unlink_lastfm_do", withUserWare(cont.ServeUnlinkLastFMDo))
mux.HandleFunc("/admin/change_password", withAdminWare(cont.ServeChangePassword))
mux.HandleFunc("/admin/change_password_do", withAdminWare(cont.ServeChangePasswordDo))
mux.HandleFunc("/admin/delete_user", withAdminWare(cont.ServeDeleteUser))
mux.HandleFunc("/admin/delete_user_do", withAdminWare(cont.ServeDeleteUserDo))
mux.HandleFunc("/admin/create_user", withAdminWare(cont.ServeCreateUser))
mux.HandleFunc("/admin/create_user_do", withAdminWare(cont.ServeCreateUserDo))
mux.HandleFunc("/admin/update_lastfm_api_key", withAdminWare(cont.ServeUpdateLastFMAPIKey))

1
go.mod
View File

@@ -16,6 +16,7 @@ require (
github.com/gobuffalo/packr/v2 v2.2.0
github.com/gofrs/uuid v3.2.0+incompatible // indirect
github.com/golangci/golangci-lint v1.16.0 // indirect
github.com/gorilla/securecookie v1.1.1
github.com/gorilla/sessions v1.1.3
github.com/jinzhu/gorm v1.9.2
github.com/jinzhu/inflection v0.0.0-20180308033659-04140366298a // indirect

View File

@@ -158,6 +158,31 @@ func (c *Controller) ServeChangePasswordDo(w http.ResponseWriter, r *http.Reques
http.Redirect(w, r, "/admin/home", http.StatusSeeOther)
}
func (c *Controller) ServeDeleteUser(w http.ResponseWriter, r *http.Request) {
username := r.URL.Query().Get("user")
if username == "" {
http.Error(w, "please provide a username", 400)
return
}
var user db.User
err := c.DB.Where("name = ?", username).First(&user).Error
if gorm.IsRecordNotFoundError(err) {
http.Error(w, "couldn't find a user with that name", 400)
return
}
var data templateData
data.SelectedUser = &user
renderTemplate(w, r, c.Templates["delete_user"], &data)
}
func (c *Controller) ServeDeleteUserDo(w http.ResponseWriter, r *http.Request) {
username := r.URL.Query().Get("user")
var user db.User
c.DB.Where("name = ?", username).First(&user)
c.DB.Delete(&user)
http.Redirect(w, r, "/admin/home", http.StatusSeeOther)
}
func (c *Controller) ServeCreateUser(w http.ResponseWriter, r *http.Request) {
renderTemplate(w, r, c.Templates["create_user"], nil)
}

View File

@@ -109,10 +109,6 @@ a:hover {
background-color: #f4433669;
}
.happy {
background-color: #4caf5069;
}
i.mdi {
font-size: 14px;
}

View File

@@ -0,0 +1,15 @@
{{ define "title" }}home{{ end }}
{{ define "user" }}
<div class="padded box mono">
<div class="box-title">
<i class="mdi mdi-account-remove"></i> deleting user {{ .SelectedUser.Name }}
</div>
<div class="right">
are you sure?
</div>
<form action="/admin/delete_user_do?user={{ .SelectedUser.Name }}" method="post">
<input type="submit" value="yes">
</form>
</div>
{{ end }}

View File

@@ -20,12 +20,12 @@
<a href="/admin/update_lastfm_api_key">update api key</a><br/>
{{ end }}
{{ if .CurrentLastFMAPIKey }}
<span class="light">current status</span>
{{ if .User.LastFMSession }}
<span class="light">current status</span>
<span class="happy">linked</span>
linked
<span class="light">&#124;</span>
<a href="/admin/unlink_lastfm_do">unlink</a><br/>
{{ else }}
<span class="light">current status</span>
<span class="angry">unlinked</span>
<a href="https://www.last.fm/api/auth/?api_key={{ .CurrentLastFMAPIKey }}&cb={{ .RequestRoot }}/admin/link_lastfm_do">link</a><br/>
{{ end }}
@@ -43,9 +43,11 @@
<div class="right">
{{ range $user := .AllUsers }}
<i>{{ $user.Name }}</i>
<span class="light">created</span>
{{ $user.CreatedAt.Format "jan 02, 2006" }}
<a href="/admin/change_password?user={{ $user.Name }}">change password</a><br/>
<span class="light">{{ $user.CreatedAt.Format "jan 02, 2006" }}</span>
<span class="light">&#124;</span>
<a href="/admin/change_password?user={{ $user.Name }}">change password</a>
<span class="light">&#124;</span>
<a href="/admin/delete_user?user={{ $user.Name }}">delete</a><br/>
{{ end }}
<a href="/admin/create_user" class="button">create new</a>
</div>