Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F33101411
refresh_token.ex
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
1 KB
Referenced Files
None
Subscribers
None
refresh_token.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.OAuth.Token.Strategy.RefreshToken
do
@moduledoc
"""
Functions for dealing with refresh token strategy.
"""
alias
Pleroma.Config
alias
Pleroma.Repo
alias
Pleroma.Web.OAuth.Token
alias
Pleroma.Web.OAuth.Token.Strategy.Revoke
@doc
"""
Will grant access token by refresh token.
"""
@spec
grant
(
Token
.
t
())
::
{
:ok
,
Token
.
t
()}
|
{
:error
,
any
()}
def
grant
(
token
)
do
access_token
=
Repo
.
preload
(
token
,
[
:user
,
:app
])
result
=
Repo
.
transaction
(
fn
->
token_params
=
%{
app
:
access_token
.
app
,
user
:
access_token
.
user
,
scopes
:
access_token
.
scopes
}
access_token
|>
revoke_access_token
()
|>
create_access_token
(
token_params
)
end
)
case
result
do
{
:ok
,
{
:error
,
reason
}}
->
{
:error
,
reason
}
{
:ok
,
{
:ok
,
token
}}
->
{
:ok
,
token
}
{
:error
,
reason
}
->
{
:error
,
reason
}
end
end
defp
revoke_access_token
(
token
)
do
Revoke
.
revoke
(
token
)
end
defp
create_access_token
({
:error
,
error
},
_
),
do
:
{
:error
,
error
}
defp
create_access_token
({
:ok
,
token
},
%{
app
:
app
,
user
:
user
}
=
token_params
)
do
Token
.
create
(
app
,
user
,
add_refresh_token
(
token_params
,
token
.
refresh_token
))
end
defp
add_refresh_token
(
params
,
token
)
do
case
Config
.
get
([
:oauth2
,
:issue_new_refresh_token
],
false
)
do
true
->
Map
.
put
(
params
,
:refresh_token
,
token
)
false
->
params
end
end
end
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Tue, Jan 20, 12:24 PM (1 d, 11 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
964182
Default Alt Text
refresh_token.ex (1 KB)
Attached To
Mode
rPUBE pleroma-upstream
Attached
Detach File
Event Timeline
Log In to Comment