Packages

Phoenix boilerplate for Petlove&Co Google OAuth 2.0

Current section

Files

Jump to
ex_pet_oauth lib ex_pet_oauth_web controllers auth_controller.ex
Raw

lib/ex_pet_oauth_web/controllers/auth_controller.ex

defmodule ExPetOauthWeb.AuthController do
use ExPetOauthWeb, :controller
plug Ueberauth
alias ExPetOauth.UserFromAuth
def callback(%{assigns: %{ueberauth_auth: auth}} = conn, _params) do
case UserFromAuth.find_or_create(auth) do
{:ok, user} ->
conn
|> put_flash(:info, "Successfully authenticated.")
|> put_session(:current_user, user)
|> configure_session(renew: true)
|> redirect(to: "/")
{:error, reason} ->
conn
|> put_flash(:error, reason)
|> redirect(to: "/")
end
end
def callback(%{assigns: %{ueberauth_failure: _fails}} = conn, _params) do
conn
|> put_flash(:error, "Failed to authenticate.")
|> redirect(to: "/")
end
def delete(conn, _params) do
conn
|> put_flash(:info, "You have been logged out!")
|> clear_session()
|> redirect(to: "/")
end
end