summaryrefslogtreecommitdiff
path: root/internal/server/api
diff options
context:
space:
mode:
Diffstat (limited to 'internal/server/api')
-rw-r--r--internal/server/api/api.go18
1 files changed, 18 insertions, 0 deletions
diff --git a/internal/server/api/api.go b/internal/server/api/api.go
index 35ca44c..5f11070 100644
--- a/internal/server/api/api.go
+++ b/internal/server/api/api.go
@@ -842,6 +842,24 @@ func SetUserData(ctx context.Context, sess *session.Session, request *packet.Set
var userPtr *data.User = nil
if request.User != nil {
+ if request.User.IsDeleted {
+ // Delete user
+
+ pubKey, _, err := ed25519.GenerateKey(nil)
+ assert.NoError(err, "random should never fail")
+ err = queries.DeleteUser(ctx, data.DeleteUserParams{
+ PublicKey: pubKey,
+ ID: sess.ID(),
+ })
+ if err != nil {
+ slog.ErrorContext(ctx, "database error", "error", err)
+ return &ErrInternalError
+ }
+
+ sess.Close() // Close connection and respond with nothing
+ return nil
+ }
+
name := request.User.Name
if len(name) > packet.MaxUsernameBytes {
return &packet.Error{Error: fmt.Sprintf(