implement github oauth and display user's name and avatar from it

This commit is contained in:
2021-11-12 20:20:40 -05:00
parent dfaa328af4
commit 540519222d
24 changed files with 226 additions and 181 deletions

View File

@@ -6,12 +6,6 @@ defmodule Entendu.Application do
use Application
def start(_type, _args) do
# topologies = [
# chat: [
# strategy: Cluster.Strategy.Gossip
# ]
# ]
topologies = [
k8s_entendu: [
strategy: Elixir.Cluster.Strategy.Kubernetes.DNS,

View File

@@ -0,0 +1,47 @@
defmodule Entendu.UserFromAuth do
@moduledoc """
Retrieve the user information from an auth request
"""
require Logger
require Jason
alias Ueberauth.Auth
def find_or_create(%Auth{} = auth) do
{:ok, basic_info(auth)}
end
# github does it this way
defp avatar_from_auth(%{info: %{urls: %{avatar_url: image}}}), do: image
# facebook does it this way
defp avatar_from_auth(%{info: %{image: image}}), do: image
# default case if nothing matches
defp avatar_from_auth(auth) do
Logger.warn("#{auth.provider} needs to find an avatar URL!")
Logger.debug(Jason.encode!(auth))
nil
end
defp basic_info(auth) do
IO.inspect(auth)
%{id: auth.uid, name: name_from_auth(auth), avatar: avatar_from_auth(auth)}
end
defp name_from_auth(auth) do
if auth.info.name do
auth.info.name
else
name =
[auth.info.first_name, auth.info.last_name]
|> Enum.filter(&(&1 != nil and &1 != ""))
if Enum.empty?(name) do
auth.info.nickname
else
Enum.join(name, " ")
end
end
end
end