mirror of
https://github.com/usememos/memos.git
synced 2025-02-27 06:51:31 +08:00
feat: add delete user api
This commit is contained in:
parent
07d9649b22
commit
0c2adfa1d2
4 changed files with 55 additions and 1 deletions
|
@ -73,3 +73,7 @@ type UserFind struct {
|
|||
Name *string `json:"name"`
|
||||
OpenID *string
|
||||
}
|
||||
|
||||
type UserDelete struct {
|
||||
ID int
|
||||
}
|
||||
|
|
|
@ -44,6 +44,11 @@ func (s *Server) registerUserRoutes(g *echo.Group) {
|
|||
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to fetch user list").SetInternal(err)
|
||||
}
|
||||
|
||||
for _, user := range userList {
|
||||
// data desensitize
|
||||
user.OpenID = ""
|
||||
}
|
||||
|
||||
c.Response().Header().Set(echo.HeaderContentType, echo.MIMEApplicationJSONCharsetUTF8)
|
||||
if err := json.NewEncoder(c.Response().Writer).Encode(composeResponse(userList)); err != nil {
|
||||
return echo.NewHTTPError(http.StatusInternalServerError, "Failed to encode user list response").SetInternal(err)
|
||||
|
|
|
@ -37,3 +37,25 @@ VALUES
|
|||
-- raw password: secret
|
||||
'$2a$14$ajq8Q7fbtFRQvXpdCq7Jcuy.Rx1h/L4J60Otx.gyNLbAYctGMJ9tK'
|
||||
);
|
||||
|
||||
INSERT INTO
|
||||
user (
|
||||
`id`,
|
||||
`row_status`,
|
||||
`email`,
|
||||
`role`,
|
||||
`name`,
|
||||
`open_id`,
|
||||
`password_hash`
|
||||
)
|
||||
VALUES
|
||||
(
|
||||
103,
|
||||
'ARCHIVED',
|
||||
'bob@usememos.com',
|
||||
'USER',
|
||||
'Bob',
|
||||
'bob_open_id',
|
||||
-- raw password: secret
|
||||
'$2a$14$ajq8Q7fbtFRQvXpdCq7Jcuy.Rx1h/L4J60Otx.gyNLbAYctGMJ9tK'
|
||||
);
|
|
@ -96,6 +96,15 @@ func (s *Store) FindUser(find *api.UserFind) (*api.User, error) {
|
|||
return user, nil
|
||||
}
|
||||
|
||||
func (s *Store) DeleteUser(delete *api.UserDelete) error {
|
||||
err := deleteUser(s.db, delete)
|
||||
if err != nil {
|
||||
return FormatError(err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func createUser(db *sql.DB, create *api.UserCreate) (*userRaw, error) {
|
||||
row, err := db.Query(`
|
||||
INSERT INTO user (
|
||||
|
@ -224,7 +233,7 @@ func findUserList(db *sql.DB, find *api.UserFind) ([]*userRaw, error) {
|
|||
row_status
|
||||
FROM user
|
||||
WHERE `+strings.Join(where, " AND ")+`
|
||||
ORDER BY created_ts DESC`,
|
||||
ORDER BY created_ts DESC, row_status DESC`,
|
||||
args...,
|
||||
)
|
||||
if err != nil {
|
||||
|
@ -259,3 +268,17 @@ func findUserList(db *sql.DB, find *api.UserFind) ([]*userRaw, error) {
|
|||
|
||||
return userRawList, nil
|
||||
}
|
||||
|
||||
func deleteUser(db *sql.DB, delete *api.UserDelete) error {
|
||||
result, err := db.Exec(`DELETE FROM user WHERE id = ?`, delete.ID)
|
||||
if err != nil {
|
||||
return FormatError(err)
|
||||
}
|
||||
|
||||
rows, _ := result.RowsAffected()
|
||||
if rows == 0 {
|
||||
return &common.Error{Code: common.NotFound, Err: fmt.Errorf("user ID not found: %d", delete.ID)}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue