Added delete user action to user admin api, and made it work in UI, Closes #1466, #1446

This commit is contained in:
Torkel Ödegaard
2015-02-11 16:47:22 +01:00
parent 17f1224a5d
commit 71f09ddd94
6 changed files with 32 additions and 5 deletions

View File

@@ -8,9 +8,6 @@ import (
)
func AdminSearchUsers(c *middleware.Context) {
// query := c.QueryStrings("q")
// page := c.QueryStrings("p")
query := m.SearchUsersQuery{Query: "", Page: 0, Limit: 20}
if err := bus.Dispatch(&query); err != nil {
c.JsonApiErr(500, "Failed to fetch users", err)
@@ -93,3 +90,16 @@ func AdminUpdateUser(c *middleware.Context, form dtos.AdminUpdateUserForm) {
c.JsonOK("User updated")
}
func AdminDeleteUser(c *middleware.Context) {
userId := c.ParamsInt64(":id")
cmd := m.DeleteUserCommand{UserId: userId}
if err := bus.Dispatch(&cmd); err != nil {
c.JsonApiErr(500, "Failed to delete user", err)
return
}
c.JsonOK("User deleted")
}

View File

@@ -98,6 +98,7 @@ func Register(r *macaron.Macaron) {
r.Get("/users/:id", AdminGetUser)
r.Post("/users", bind(dtos.AdminCreateUserForm{}), AdminCreateUser)
r.Put("/users/:id", bind(dtos.AdminUpdateUserForm{}), AdminUpdateUser)
r.Delete("/users/:id", AdminDeleteUser)
}, reqGrafanaAdmin)
// rendering

View File

@@ -50,6 +50,10 @@ type UpdateUserCommand struct {
UserId int64 `json:"-"`
}
type DeleteUserCommand struct {
UserId int64
}
type SetUsingAccountCommand struct {
UserId int64
AccountId int64

View File

@@ -1,6 +1,7 @@
package sqlstore
import (
"fmt"
"strings"
"time"
@@ -23,6 +24,7 @@ func init() {
bus.AddHandler("sql", GetSignedInUser)
bus.AddHandler("sql", SearchUsers)
bus.AddHandler("sql", GetUserAccounts)
bus.AddHandler("sql", DeleteUser)
}
func getAccountIdForNewUser(userEmail string, sess *session) (int64, error) {
@@ -256,3 +258,11 @@ func SearchUsers(query *m.SearchUsersQuery) error {
err := sess.Find(&query.Result)
return err
}
func DeleteUser(cmd *m.DeleteUserCommand) error {
return inTransaction(func(sess *xorm.Session) error {
var rawSql = fmt.Sprintf("DELETE FROM %s WHERE id=?", x.Dialect().Quote("user"))
_, err := sess.Exec(rawSql, cmd.UserId)
return err
})
}

View File

@@ -24,7 +24,9 @@ function (angular) {
title: 'Delete user',
text: 'Are you sure you want to delete user: ' + user.login,
onConfirm: function() {
backendSrv.delete('/api/admin/users/delete/' + user.id);
backendSrv.delete('/api/admin/users/' + user.id).then(function() {
$scope.getUsers();
});
}
});
};

View File

@@ -33,7 +33,7 @@
Edit
</a>
&nbsp;&nbsp;
<a ng-click="delete(variable)" class="btn btn-danger btn-small">
<a ng-click="deleteUser(user)" class="btn btn-danger btn-small">
<i class="fa fa-remove"></i>
</a>
</td>