Admin: Added user deletion route and button

This commit is contained in:
gmemstr 2017-11-20 21:47:29 -08:00
parent b812b8be26
commit f3779aa4bd
6 changed files with 58 additions and 5 deletions

View file

@ -35,12 +35,14 @@ There are a couple options for getting Pogo up and running.
## Building
_Note: [This requires a valid Go enviornment setup!](https://golang.org/doc/install)_
```
# Clone the repository
git clone https://github.com/gmemstr/pogo
# Go get the repository
go get github.com/gmemstr/pogo
# Go to directory
cd pogo
cd $GOPATH/src/github.com/gmemstr/pogo
# Get godep
go get github.com/tools/godep

View file

@ -18,6 +18,7 @@ import (
"database/sql"
_ "github.com/mattn/go-sqlite3"
"github.com/gorilla/mux"
"github.com/gmemstr/pogo/common"
)
@ -169,6 +170,52 @@ func EditUser() common.Handler {
}
}
func DeleteUser() common.Handler {
return func(rc *common.RouterContext, w http.ResponseWriter, r *http.Request) *common.HTTPError {
db, err := sql.Open("sqlite3", "assets/config/users.db")
if err != nil {
return &common.HTTPError{
Message: fmt.Sprintf("error opening sqlite3 file: %v", err),
StatusCode: http.StatusInternalServerError,
}
}
statement, err := db.Prepare("DELETE FROM users WHERE id=?")
if err != nil {
return &common.HTTPError{
Message: fmt.Sprintf("error preparing sqlite3 statement: %v", err),
StatusCode: http.StatusInternalServerError,
}
}
if err != nil {
return &common.HTTPError{
Message: err.Error(),
StatusCode: http.StatusBadRequest,
}
}
vars := mux.Vars(r)
id := vars["id"]
if id == "1" {
w.Write([]byte("<script>window.location = '/admin#/msg/Cannot%20Delete%20Admin%20User';</script>"))
db.Close()
return nil
}
_, err = statement.Exec(id)
if err != nil {
return &common.HTTPError{
Message: fmt.Sprintf("error executing sqlite3 statement: %v", err),
StatusCode: http.StatusInternalServerError,
}
}
w.Write([]byte("<script>window.location = '/admin#/msg/Deleted%20User';</script>"))
db.Close()
return nil
}
}
func ListUsers() common.Handler {
return func(rc *common.RouterContext, w http.ResponseWriter, r *http.Request) *common.HTTPError {

Binary file not shown.

View file

@ -118,6 +118,7 @@ const useredit = {
<input name="id" id="id" :value="user.id" type="hidden">
<br />
<input type="submit" value="Save"></form>
<a v-bind:href="'/admin/deleteuser/'+user.id+''">Delete User</a>
</div>
</div>`,
data() {

View file

@ -92,7 +92,10 @@ func Init() *mux.Router {
auth.RequireAuthorization(),
admin.AddUser(),
)).Methods("POST")
r.Handle("/admin/deleteuser/{id}", Handle(
auth.RequireAuthorization(),
admin.DeleteUser(),
)).Methods("GET")
r.Handle("/admin/edit", Handle(
auth.RequireAuthorization(),
admin.EditEpisode(),

View file

@ -23,6 +23,6 @@ func main() {
// Define routes
// We're live
r := router.Init()
fmt.Println("Listening on port :3000")
fmt.Println("Your Pogo instance is live on port :3000")
log.Fatal(http.ListenAndServe(":3000", r))
}