Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Pleroma
pleroma
Commits
d55faa2f
Verified
Commit
d55faa2f
authored
Aug 17, 2020
by
Alex Gleason
Browse files
Purge a local user upon deletion, fixes
#2062
parent
34b099ff
Changes
2
Hide whitespace changes
Inline
Side-by-side
lib/pleroma/user.ex
View file @
d55faa2f
...
...
@@ -1583,6 +1583,18 @@ def update_notification_settings(%User{} = user, settings) do
|>
update_and_set_cache
()
end
@spec
purge_user_changeset
(
User
.
t
())
::
Changeset
.
t
()
def
purge_user_changeset
(
user
)
do
change
(
user
,
%{
deactivated:
true
,
email:
nil
,
avatar:
%{},
banner:
%{},
background:
%{},
fields:
[]
})
end
def
delete
(
users
)
when
is_list
(
users
)
do
for
user
<-
users
,
do
:
delete
(
user
)
end
...
...
@@ -1610,7 +1622,7 @@ defp delete_or_deactivate(%User{local: true} = user) do
_
->
user
|>
change
(%{
deactivated:
true
,
email:
nil
}
)
|>
purge_user_changeset
(
)
|>
update_and_set_cache
()
end
end
...
...
test/web/admin_api/controllers/admin_api_controller_test.exs
View file @
d55faa2f
...
...
@@ -155,13 +155,28 @@ test "GET /api/pleroma/admin/users/:nickname requires " <>
describe
"DELETE /api/pleroma/admin/users"
do
test
"single user"
,
%{
admin:
admin
,
conn:
conn
}
do
user
=
insert
(
:user
)
clear_config
([
:instance
,
:federating
],
true
)
user
=
insert
(
:user
,
avatar:
%{
"url"
=>
[%{
"href"
=>
"https://someurl"
}]},
banner:
%{
"url"
=>
[%{
"href"
=>
"https://somebanner"
}]}
)
# Create some activities to check they got deleted later
follower
=
insert
(
:user
)
{
:ok
,
_
}
=
CommonAPI
.
post
(
user
,
%{
status:
"test"
})
{
:ok
,
_
,
_
,
_
}
=
CommonAPI
.
follow
(
user
,
follower
)
{
:ok
,
_
,
_
,
_
}
=
CommonAPI
.
follow
(
follower
,
user
)
user
=
Repo
.
get
(
User
,
user
.
id
)
assert
user
.
note_count
==
1
assert
user
.
follower_count
==
1
assert
user
.
following_count
==
1
refute
user
.
deactivated
with_mock
Pleroma
.
Web
.
Federator
,
publish:
fn
_
->
nil
end
do
publish:
fn
_
->
nil
end
,
perform:
fn
_
,
_
->
nil
end
do
conn
=
conn
|>
put_req_header
(
"accept"
,
"application/json"
)
...
...
@@ -181,6 +196,12 @@ test "single user", %{admin: admin, conn: conn} do
user
=
Repo
.
get
(
User
,
user
.
id
)
assert
user
.
deactivated
assert
user
.
avatar
==
%{}
assert
user
.
banner
==
%{}
assert
user
.
note_count
==
0
assert
user
.
follower_count
==
0
assert
user
.
following_count
==
0
assert
called
(
Pleroma
.
Web
.
Federator
.
publish
(
:_
))
end
end
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment