Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F33101757
invite_controller.ex
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
2 KB
Referenced Files
None
Subscribers
None
invite_controller.ex
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma.Web.AdminAPI.InviteController
do
use
Pleroma.Web
,
:controller
import
Pleroma.Web.ControllerHelper
,
only
:
[
json_response
:
3
]
alias
Pleroma.Config
alias
Pleroma.UserInviteToken
alias
Pleroma.Web.Plugs.OAuthScopesPlug
require
Logger
plug
(
Pleroma.Web.ApiSpec.CastAndValidate
,
replace_params
:
false
)
plug
(
OAuthScopesPlug
,
%{
scopes
:
[
"admin:read:invites"
]}
when
action
==
:index
)
plug
(
OAuthScopesPlug
,
%{
scopes
:
[
"admin:write:invites"
]}
when
action
in
[
:create
,
:revoke
,
:email
]
)
action_fallback
(
Pleroma.Web.AdminAPI.FallbackController
)
defdelegate
open_api_operation
(
action
),
to
:
Pleroma.Web.ApiSpec.Admin.InviteOperation
@doc
"Get list of created invites"
def
index
(
conn
,
_params
)
do
invites
=
UserInviteToken
.
list_invites
()
render
(
conn
,
"index.json"
,
invites
:
invites
)
end
@doc
"Create an account registration invite token"
def
create
(%{
private
:
%{
open_api_spex
:
%{
body_params
:
params
}}}
=
conn
,
_
)
do
{
:ok
,
invite
}
=
UserInviteToken
.
create_invite
(
params
)
render
(
conn
,
"show.json"
,
invite
:
invite
)
end
@doc
"Revokes invite by token"
def
revoke
(%{
private
:
%{
open_api_spex
:
%{
body_params
:
%{
token
:
token
}}}}
=
conn
,
_
)
do
with
{
:ok
,
invite
}
<-
UserInviteToken
.
find_by_token
(
token
),
{
:ok
,
updated_invite
}
=
UserInviteToken
.
update_invite
(
invite
,
%{
used
:
true
})
do
render
(
conn
,
"show.json"
,
invite
:
updated_invite
)
else
nil
->
{
:error
,
:not_found
}
end
end
@doc
"Sends registration invite via email"
def
email
(
%{
assigns
:
%{
user
:
user
},
private
:
%{
open_api_spex
:
%{
body_params
:
%{
email
:
email
}
=
params
}}
}
=
conn
,
_
)
do
with
{
_
,
false
}
<-
{
:registrations_open
,
Config
.
get
([
:instance
,
:registrations_open
])},
{
_
,
true
}
<-
{
:invites_enabled
,
Config
.
get
([
:instance
,
:invites_enabled
])},
{
:ok
,
invite_token
}
<-
UserInviteToken
.
create_invite
(),
{
:ok
,
_
}
<-
user
|>
Pleroma.Emails.UserEmail
.
user_invitation_email
(
invite_token
,
email
,
params
[
:name
]
)
|>
Pleroma.Emails.Mailer
.
deliver
()
do
json_response
(
conn
,
:no_content
,
""
)
else
{
:registrations_open
,
_
}
->
{
:error
,
"To send invites you need to set the `registrations_open` option to false."
}
{
:invites_enabled
,
_
}
->
{
:error
,
"To send invites you need to set the `invites_enabled` option to true."
}
{
:error
,
error
}
->
{
:error
,
error
}
end
end
end
File Metadata
Details
Attached
Mime Type
text/x-c++
Expires
Tue, Jan 20, 12:59 PM (11 h, 27 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
835754
Default Alt Text
invite_controller.ex (2 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment