Skip to content
GitLab
Menu
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
40970f6b
Verified
Commit
40970f6b
authored
Jun 11, 2020
by
Haelwenn
Browse files
New mix task: pleroma.user reset_mfa <nickname>
parent
7aa6c829
Pipeline
#27123
passed with stages
in 12 minutes and 6 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
docs/administration/CLI_tasks/user.md
View file @
40970f6b
...
...
@@ -135,6 +135,16 @@ mix pleroma.user reset_password <nickname>
```
## Disable Multi Factor Authentication (MFA/2FA) for a user
```
sh tab="OTP"
./bin/pleroma_ctl user reset_mfa <nickname>
```
```
sh tab="From Source"
mix pleroma.user reset_mfa <nickname>
```
## Set the value of the given user's settings
```
sh tab="OTP"
./bin/pleroma_ctl user set <nickname> [option ...]
...
...
lib/mix/tasks/pleroma/user.ex
View file @
40970f6b
...
...
@@ -144,6 +144,18 @@ def run(["reset_password", nickname]) do
end
end
def
run
([
"reset_mfa"
,
nickname
])
do
start_pleroma
()
with
%
User
{
local:
true
}
=
user
<-
User
.
get_cached_by_nickname
(
nickname
),
{
:ok
,
_token
}
<-
Pleroma
.
MFA
.
disable
(
user
)
do
shell_info
(
"Multi-Factor Authentication disabled for
#{
user
.
nickname
}
"
)
else
_
->
shell_error
(
"No local user
#{
nickname
}
"
)
end
end
def
run
([
"deactivate"
,
nickname
])
do
start_pleroma
()
...
...
test/tasks/user_test.exs
View file @
40970f6b
...
...
@@ -4,6 +4,7 @@
defmodule
Mix
.
Tasks
.
Pleroma
.
UserTest
do
alias
Pleroma
.
Activity
alias
Pleroma
.
MFA
alias
Pleroma
.
Object
alias
Pleroma
.
Repo
alias
Pleroma
.
Tests
.
ObanHelpers
...
...
@@ -278,6 +279,35 @@ test "no user to reset password" do
end
end
describe
"running reset_mfa"
do
test
"disables MFA"
do
user
=
insert
(
:user
,
multi_factor_authentication_settings:
%
MFA
.
Settings
{
enabled:
true
,
totp:
%
MFA
.
Settings
.
TOTP
{
secret:
"xx"
,
confirmed:
true
}
}
)
Mix
.
Tasks
.
Pleroma
.
User
.
run
([
"reset_mfa"
,
user
.
nickname
])
assert_received
{
:mix_shell
,
:info
,
[
message
]}
assert
message
==
"Multi-Factor Authentication disabled for
#{
user
.
nickname
}
"
assert
%{
enabled:
false
,
totp:
false
}
==
user
.
nickname
|>
User
.
get_cached_by_nickname
()
|>
MFA
.
mfa_settings
()
end
test
"no user to reset MFA"
do
Mix
.
Tasks
.
Pleroma
.
User
.
run
([
"reset_password"
,
"nonexistent"
])
assert_received
{
:mix_shell
,
:error
,
[
message
]}
assert
message
=~
"No local user"
end
end
describe
"running invite"
do
test
"invite token is generated"
do
assert
capture_io
(
fn
->
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a 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