summaryrefslogtreecommitdiff
path: root/internal/server/api
diff options
context:
space:
mode:
authorKyren223 <Kyren223@proton.me>2025-07-21 13:46:40 +0300
committerKyren223 <Kyren223@proton.me>2025-07-21 13:46:40 +0300
commit5f6845c3997bd5478a1f51a8f108b71afa427a72 (patch)
tree1a713c28657f15715f337286cc770e93d2739fd6 /internal/server/api
parent3fcaf100334897e314a86a53576639410055989b (diff)
Added the ability to delete users
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(