diff --git a/lp/lib/lp_web/controllers/git_controller.ex b/lp/lib/lp_web/controllers/git_controller.ex index 5485bd0..c9b4060 100644 --- a/lp/lib/lp_web/controllers/git_controller.ex +++ b/lp/lib/lp_web/controllers/git_controller.ex @@ -12,12 +12,40 @@ defmodule LpWeb.GitController do end def oauth(conn, %{"code" => code}) do #some persistance side effect - # persist(code) - render(conn, "oauth2.html", code: code) + # persist(code) access_token = Github.Oauth2.Client.access_token!( + config: [client_id: @client_id, client_secret: @client_secret], + params: [code: code] + ) + + github_client = %Github.Client{access_token: access_token} + + %{"login" => login} = github_client |> Github.Users.find!() |> Map.fetch!(:body) + [%{"email" => email} | _] = github_client |> Github.Users.Emails.list!() |> Map.fetch!(:body) + render(conn, "oauth2.html", [login: login, email: email]) # redirect(conn, "git.html") # html(conn,"") + + end + end + + # ___ example from github + # def github_callback(conn, %{"code" => code}) do + # access_token = Github.Oauth2.Client.access_token!( + # config: [client_id: @client_id, client_secret: @client_secret], + # params: [code: code] + # ) + + # github_client = %Github.Client{access_token: access_token} + + # %{"login" => login} = github_client |> Github.Users.find!() |> Map.fetch!(:body) + # [%{"email" => email} | _] = github_client |> Github.Users.Emails.list!() |> Map.fetch!(:body) + # ... + # end + + # ___ + def github(conn, _params) do authorize_url = Github.Oauth2.Client.authorize_url!( # config: [client_id: Application.fetch_env!(:lp, :client_id), client_secret: Application.fetch_env!(:lp, :client_secret)], diff --git a/lp/lib/lp_web/templates/git/oauth2.html.eex b/lp/lib/lp_web/templates/git/oauth2.html.eex index 411d54c..4ce9670 100644 --- a/lp/lib/lp_web/templates/git/oauth2.html.eex +++ b/lp/lib/lp_web/templates/git/oauth2.html.eex @@ -1,3 +1,4 @@
todo. keep context