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
ce8d4571
Commit
ce8d4571
authored
Apr 06, 2019
by
Alexander Strizhakov
Browse files
little channges
parent
76d8928c
Changes
3
Hide whitespace changes
Inline
Side-by-side
lib/mix/tasks/pleroma/user.ex
View file @
ce8d4571
...
...
@@ -30,16 +30,16 @@ defmodule Mix.Tasks.Pleroma.User do
mix pleroma.user invite [OPTION...]
Options:
- `--expire_
d
at
e
DATE` - last day on which token is active (e.g. "2019-04-05")
- `--max_use NUMBER` - maximum numbers of token use
- `--expire_at DATE` - last day on which token is active (e.g. "2019-04-05")
- `--max_use NUMBER` - maximum numbers of token use
s
##
G
enerated invites
list
##
List g
enerated invites
mix pleroma.user invites
_list
mix pleroma.user invites
## Revoke invite
mix pleroma.user
invite_revok
e TOKEN OR TOKEN_ID
mix pleroma.user
revoke_invit
e TOKEN OR TOKEN_ID
## Delete the user's account.
...
...
@@ -304,21 +304,24 @@ def run(["invite" | rest]) do
{
options
,
[],
[]}
=
OptionParser
.
parse
(
rest
,
strict:
[
expire_
d
at
e
:
:string
,
expire_at:
:string
,
max_use:
:integer
]
)
expire_at
=
with
expire_date
when
expire_date
!=
nil
<-
Keyword
.
get
(
options
,
:expire_date
)
do
Date
.
from_iso8601!
(
expire_date
)
end
options
=
options
|>
Keyword
.
update
(
:expire_at
,
{
:ok
,
nil
},
fn
nil
->
{
:ok
,
nil
}
val
->
Date
.
from_iso8601
(
val
)
end
)
|>
Enum
.
into
(%{})
options
=
Keyword
.
put
(
options
,
:expire_at
,
expire_at
)
options
=
Enum
.
into
(
options
,
%{})
Common
.
start_pleroma
()
with
{
:ok
,
invite
}
<-
UserInviteToken
.
create_invite
(
options
)
do
with
{
:ok
,
val
}
<-
options
[
:expire_at
],
options
=
Map
.
put
(
options
,
:expire_at
,
val
),
{
:ok
,
invite
}
<-
UserInviteToken
.
create_invite
(
options
)
do
Mix
.
shell
()
.
info
(
"Generated user invite token "
<>
String
.
replace
(
invite
.
invite_type
,
"_"
,
" "
)
)
...
...
@@ -332,44 +335,41 @@ def run(["invite" | rest]) do
IO
.
puts
(
url
)
else
_
->
Mix
.
shell
()
.
error
(
"Could not create invite token
.
"
)
error
->
Mix
.
shell
()
.
error
(
"Could not create invite token
:
#{
inspect
(
error
)
}
"
)
end
end
def
run
([
"invites
_list
"
])
do
def
run
([
"invites"
])
do
Common
.
start_pleroma
()
Mix
.
shell
()
.
info
(
"Invites list:"
)
UserInviteToken
.
list_invites
()
|>
Enum
.
each
(
fn
invite
->
expire_date
=
case
invite
.
expire_at
do
nil
->
nil
date
->
" | Expire date:
#{
Date
.
to_string
(
date
)
}
"
expire_info
=
with
expire_at
when
not
is_nil
(
expire_at
)
<-
invite
.
expire_at
do
" | Expire at:
#{
Date
.
to_string
(
expire_at
)
}
"
end
using_info
=
case
invite
.
max_use
do
nil
->
nil
max_use
->
" | Max use:
#{
max_use
}
Left use:
#{
max_use
-
invite
.
uses
}
"
with
max_use
when
not
is_nil
(
max_use
)
<-
invite
.
max_use
do
" | Max use:
#{
max_use
}
Left use:
#{
max_use
-
invite
.
uses
}
"
end
Mix
.
shell
()
.
info
(
"ID:
#{
invite
.
id
}
| Token:
#{
invite
.
token
}
| Token type:
#{
invite
.
token
_type
}
| Used:
#{
"ID:
#{
invite
.
id
}
| Token:
#{
invite
.
token
}
| Token type:
#{
invite
.
invite
_type
}
| Used:
#{
invite
.
used
}#{
expire_
date
}#{
using_info
}
"
}#{
expire_
info
}#{
using_info
}
"
)
end
)
end
def
run
([
"
invite_revok
e"
,
token
])
do
def
run
([
"
revoke_invit
e"
,
token
])
do
Common
.
start_pleroma
()
invite
=
UserInviteToken
.
find_by_token!
(
token
)
with
{
:ok
,
_
}
<-
UserInviteToken
.
update_invite
(
invite
,
%{
used:
true
})
do
with
{
:ok
,
invite
}
<-
UserInviteToken
.
find_by_token
(
token
),
{
:ok
,
_
}
<-
UserInviteToken
.
update_invite
(
invite
,
%{
used:
true
})
do
Mix
.
shell
()
.
info
(
"Invite for token
#{
token
}
was revoked."
)
else
_
->
Mix
.
shell
()
.
error
(
"No invite found with token
#{
token
}
"
)
...
...
lib/pleroma/user_invite_token.ex
View file @
ce8d4571
...
...
@@ -71,6 +71,13 @@ def update_invite(invite, changes) do
@spec
find_by_token!
(
token
())
::
UserInviteToken
.
t
()
|
no_return
()
def
find_by_token!
(
token
),
do
:
Repo
.
get_by!
(
UserInviteToken
,
token:
token
)
@spec
find_by_token
(
token
())
::
{
:ok
,
UserInviteToken
.
t
()}
|
nil
def
find_by_token
(
token
)
do
with
invite
<-
Repo
.
get_by
(
UserInviteToken
,
token:
token
)
do
{
:ok
,
invite
}
end
end
@spec
valid_invite?
(
UserInviteToken
.
t
())
::
boolean
()
def
valid_invite?
(%{
invite_type:
"one_time"
}
=
invite
)
do
not
invite
.
used
...
...
test/tasks/user_test.exs
View file @
ce8d4571
...
...
@@ -252,7 +252,7 @@ test "token is generated with expire_at" do
assert
capture_io
(
fn
->
Mix
.
Tasks
.
Pleroma
.
User
.
run
([
"invite"
,
"--expire-
d
at
e
"
,
"--expire-at"
,
Date
.
to_string
(
Date
.
utc_today
())
])
end
)
...
...
@@ -280,7 +280,7 @@ test "token is generated with max use and expire date" do
"invite"
,
"--max-use"
,
"5"
,
"--expire-
d
at
e
"
,
"--expire-at"
,
Date
.
to_string
(
Date
.
utc_today
())
])
end
)
...
...
@@ -290,18 +290,19 @@ test "token is generated with max use and expire date" do
end
end
describe
"running invites
_list
"
do
describe
"running invites"
do
test
"invites are listed"
do
{
:ok
,
invite
}
=
Pleroma
.
UserInviteToken
.
create_invite
()
{
:ok
,
invite2
}
=
Pleroma
.
UserInviteToken
.
create_invite
(%{
expire_at:
Date
.
utc_today
(),
max_use:
15
})
assert
capture_io
(
fn
->
Mix
.
Tasks
.
Pleroma
.
User
.
run
([
"invites_list"
])
end
)
# assert capture_io(fn ->
Mix
.
Tasks
.
Pleroma
.
User
.
run
([
"invites"
])
# end)
assert_received
{
:mix_shell
,
:info
,
[
message
]}
assert_received
{
:mix_shell
,
:info
,
[
message2
]}
...
...
@@ -312,13 +313,13 @@ test "invites are listed" do
end
end
describe
"running
invite revok
e"
do
describe
"running
revoke_invit
e"
do
test
"invite is revoked"
do
{
:ok
,
invite
}
=
Pleroma
.
UserInviteToken
.
create_invite
(%{
expire_at:
Date
.
utc_today
()})
assert
capture_io
(
fn
->
Mix
.
Tasks
.
Pleroma
.
User
.
run
([
"
invite_revok
e"
,
"
revoke_invit
e"
,
invite
.
token
])
end
)
...
...
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