implement google oauth
This commit is contained in:
@@ -66,11 +66,26 @@ defmodule Entendu.UserFromAuth do
|
||||
end
|
||||
end
|
||||
|
||||
def can_access?(recipient, %{emails: emails, username: username}),
|
||||
def can_access?(recipient, %{emails: emails, username: username} = stuff),
|
||||
do: email_matches?(recipient, emails) || username_matches?(recipient, username)
|
||||
|
||||
defp email_matches?(recipient, emails),
|
||||
do: emails |> Enum.any?(&(&1["verified"] == true and &1["email"] == recipient))
|
||||
do:
|
||||
emails
|
||||
|> Enum.filter(&only_verified_emails/1)
|
||||
|> Enum.map(&retrieve_email/1)
|
||||
|> Enum.any?(&(&1 == recipient))
|
||||
|
||||
# Github lists unverified emails and need to be filtered out
|
||||
defp only_verified_emails(%{"verified" => is_verified}), do: is_verified
|
||||
|
||||
defp only_verified_emails(_), do: true
|
||||
|
||||
defp retrieve_email(%{"email" => email}), do: email
|
||||
|
||||
defp retrieve_email(email), do: email
|
||||
|
||||
defp username_matches?(_recipient, nil), do: false
|
||||
|
||||
defp username_matches?(recipient, username), do: String.trim(username) === recipient
|
||||
end
|
||||
|
@@ -27,8 +27,6 @@ defmodule EntenduWeb.AuthController do
|
||||
|
||||
with %{id: link_id} <- link,
|
||||
{:ok, user} <- UserFromAuth.find_or_create(auth) do
|
||||
# TODO: send over encrypted data that the frontend can decrypt
|
||||
|
||||
conn
|
||||
|> put_session(:current_user, user)
|
||||
|> configure_session(renew: true)
|
||||
|
@@ -7,6 +7,7 @@ defmodule EntenduWeb.PageController do
|
||||
|
||||
def index(conn, _params) do
|
||||
conn
|
||||
|> clear_session()
|
||||
|> render("index.html")
|
||||
end
|
||||
|
||||
|
Reference in New Issue
Block a user