mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2024-11-20 00:20:59 +00:00
Push.Subscription: convert base64 to base64 urlsafe
This commit is contained in:
parent
324933a0ac
commit
7facbb2b8d
1 changed files with 12 additions and 2 deletions
|
@ -37,8 +37,8 @@ defmodule Pleroma.Web.Push.Subscription do
|
||||||
user_id: user.id,
|
user_id: user.id,
|
||||||
token_id: token.id,
|
token_id: token.id,
|
||||||
endpoint: endpoint,
|
endpoint: endpoint,
|
||||||
key_auth: key_auth,
|
key_auth: ensure_base64_urlsafe(key_auth),
|
||||||
key_p256dh: key_p256dh,
|
key_p256dh: ensure_base64_urlsafe(key_p256dh),
|
||||||
data: alerts(params)
|
data: alerts(params)
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
@ -63,4 +63,14 @@ defmodule Pleroma.Web.Push.Subscription do
|
||||||
sub -> Repo.delete(sub)
|
sub -> Repo.delete(sub)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Some webpush clients (e.g. iOS Toot!) use an non urlsafe base64 as an encoding for the key.
|
||||||
|
# However, the web push rfs specify to use base64 urlsafe, and the `web_push_encryption` library we use
|
||||||
|
# requires the key to be properly encoded. So we just convert base64 to urlsafe base64.
|
||||||
|
defp ensure_base64_urlsafe(string) do
|
||||||
|
string
|
||||||
|
|> String.replace("+", "-")
|
||||||
|
|> String.replace("/", "_")
|
||||||
|
|> String.replace("=", "")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue