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
7aa53d52
Commit
7aa53d52
authored
Apr 06, 2019
by
Eugenij
Browse files
Return 403 on oauth token exchange for a deactivated user
parent
e3ca9f70
Changes
2
Show whitespace changes
Inline
Side-by-side
lib/pleroma/web/oauth/oauth_controller.ex
View file @
7aa53d52
...
...
@@ -152,6 +152,7 @@ def token_exchange(
with
{
_
,
{
:ok
,
%
User
{}
=
user
}}
<-
{
:get_user
,
Authenticator
.
get_user
(
conn
)},
%
App
{}
=
app
<-
get_app_from_request
(
conn
,
params
),
{
:auth_active
,
true
}
<-
{
:auth_active
,
User
.
auth_active?
(
user
)},
{
:user_active
,
true
}
<-
{
:user_active
,
!user
.
info
.
deactivated
},
scopes
<-
oauth_scopes
(
params
,
app
.
scopes
),
[]
<-
scopes
--
app
.
scopes
,
true
<-
Enum
.
any?
(
scopes
),
...
...
@@ -175,6 +176,11 @@ def token_exchange(
|>
put_status
(
:forbidden
)
|>
json
(%{
error:
"Your login is missing a confirmed e-mail address"
})
{
:user_active
,
false
}
->
conn
|>
put_status
(
:forbidden
)
|>
json
(%{
error:
"Your account is currently disabled"
})
_error
->
put_status
(
conn
,
400
)
|>
json
(%{
error:
"Invalid credentials"
})
...
...
test/web/oauth/oauth_controller_test.exs
View file @
7aa53d52
...
...
@@ -327,6 +327,32 @@ test "rejects token exchange for valid credentials belonging to unconfirmed user
refute
Map
.
has_key?
(
resp
,
"access_token"
)
end
test
"rejects token exchange for valid credentials belonging to deactivated user"
do
password
=
"testpassword"
user
=
insert
(
:user
,
password_hash:
Comeonin
.
Pbkdf2
.
hashpwsalt
(
password
),
info:
%{
deactivated:
true
}
)
app
=
insert
(
:oauth_app
)
conn
=
build_conn
()
|>
post
(
"/oauth/token"
,
%{
"grant_type"
=>
"password"
,
"username"
=>
user
.
nickname
,
"password"
=>
password
,
"client_id"
=>
app
.
client_id
,
"client_secret"
=>
app
.
client_secret
})
assert
resp
=
json_response
(
conn
,
403
)
assert
%{
"error"
=>
_
}
=
resp
refute
Map
.
has_key?
(
resp
,
"access_token"
)
end
test
"rejects an invalid authorization code"
do
app
=
insert
(
:oauth_app
)
...
...
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