Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F85197755
twitter_api.ex
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
3 KB
Referenced Files
None
Subscribers
None
twitter_api.ex
View Options
# Pleroma: A lightweight social networking server
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule
Pleroma.Web.TwitterAPI.TwitterAPI
do
alias
Pleroma.Emails.Mailer
alias
Pleroma.Emails.UserEmail
alias
Pleroma.Repo
alias
Pleroma.User
alias
Pleroma.UserInviteToken
require
Pleroma.Constants
def
register_user
(
params
,
opts
\\
[])
do
token
=
params
[
"token"
]
params
=
%{
nickname
:
params
[
"nickname"
],
name
:
params
[
"fullname"
],
bio
:
User
.
parse_bio
(
params
[
"bio"
]),
email
:
params
[
"email"
],
password
:
params
[
"password"
],
password_confirmation
:
params
[
"confirm"
],
captcha_solution
:
params
[
"captcha_solution"
],
captcha_token
:
params
[
"captcha_token"
],
captcha_answer_data
:
params
[
"captcha_answer_data"
]
}
captcha_enabled
=
Pleroma.Config
.
get
([
Pleroma.Captcha
,
:enabled
])
# true if captcha is disabled or enabled and valid, false otherwise
captcha_ok
=
if
!
captcha_enabled
do
:ok
else
Pleroma.Captcha
.
validate
(
params
[
:captcha_token
],
params
[
:captcha_solution
],
params
[
:captcha_answer_data
]
)
end
# Captcha invalid
if
captcha_ok
!=
:ok
do
{
:error
,
error
}
=
captcha_ok
# I have no idea how this error handling works
{
:error
,
%{
error
:
Jason
.
encode!
(%{
captcha
:
[
error
]})}}
else
registration_process
(
params
,
%{
registrations_open
:
Pleroma.Config
.
get
([
:instance
,
:registrations_open
]),
token
:
token
},
opts
)
end
end
defp
registration_process
(
params
,
%{
registrations_open
:
true
},
opts
)
do
create_user
(
params
,
opts
)
end
defp
registration_process
(
params
,
%{
token
:
token
},
opts
)
do
invite
=
unless
is_nil
(
token
)
do
Repo
.
get_by
(
UserInviteToken
,
%{
token
:
token
})
end
valid_invite?
=
invite
&&
UserInviteToken
.
valid_invite?
(
invite
)
case
invite
do
nil
->
{
:error
,
"Invalid token"
}
invite
when
valid_invite?
->
UserInviteToken
.
update_usage!
(
invite
)
create_user
(
params
,
opts
)
_
->
{
:error
,
"Expired token"
}
end
end
defp
create_user
(
params
,
opts
)
do
changeset
=
User
.
register_changeset
(%
User
{},
params
,
opts
)
case
User
.
register
(
changeset
)
do
{
:ok
,
user
}
->
{
:ok
,
user
}
{
:error
,
changeset
}
->
errors
=
Ecto.Changeset
.
traverse_errors
(
changeset
,
fn
{
msg
,
_opts
}
->
msg
end
)
|>
Jason
.
encode!
()
{
:error
,
%{
error
:
errors
}}
end
end
def
password_reset
(
nickname_or_email
)
do
with
true
<-
is_binary
(
nickname_or_email
),
%
User
{
local
:
true
}
=
user
<-
User
.
get_by_nickname_or_email
(
nickname_or_email
),
{
:ok
,
token_record
}
<-
Pleroma.PasswordResetToken
.
create_token
(
user
)
do
user
|>
UserEmail
.
password_reset_email
(
token_record
.
token
)
|>
Mailer
.
deliver_async
()
{
:ok
,
:enqueued
}
else
false
->
{
:error
,
"bad user identifier"
}
%
User
{
local
:
false
}
->
{
:error
,
"remote user"
}
nil
->
{
:error
,
"unknown user"
}
end
end
end
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Mon, Jun 29, 9:33 AM (1 d, 16 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1629783
Default Alt Text
twitter_api.ex (3 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment