Packages
openmaize
0.13.0
3.0.1
retired
3.0.0
2.9.0
2.8.0
2.7.0
2.6.0
2.5.1
2.5.0
2.4.0
2.3.2
2.3.1
2.3.0
2.2.0
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.2
2.0.1
2.0.0
1.0.1
1.0.0
1.0.0-beta.5
1.0.0-beta.4
1.0.0-beta.3
1.0.0-beta.2
1.0.0-beta.1
1.0.0-beta.0
0.19.3
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.17.2
0.17.1
0.17.0
0.16.2
0.16.1
0.16.0
0.15.1
0.15.0
0.14.0
0.13.0
0.12.0
0.11.1
0.11.0
0.10.2
0.10.1
0.10.0
0.8.1
0.8.0
0.7.5
0.7.4
0.7.2
0.7.1
0.7.0
0.6.7
0.6.6
0.6.3
0.6.2
0.6.1
0.6.0
0.5.0
0.4.1
0.4.0
Authentication library for Elixir using Plug
Current section
Files
Jump to
Current section
Files
lib/openmaize/plugs/logout.ex
defmodule Openmaize.Logout do
@moduledoc """
Plug to handle logout requests.
There is one option:
* redirects - if true, which is the default, redirect on login
If the token was stored in sessionStorage, then redirects is automatically
set to false. You will also need to use the front end framework to delete
the token.
## Examples with Phoenix
In the `web/router.ex` file, add the following line (you can use
a different controller and route):
get "/logout", PageController, :logout
And then in the `page_controller.ex` file, add:
plug Openmaize.Logout when action in [:logout]
If you stored the token in a cookie, but you want redirects set to false:
plug Openmaize.Logout, [redirects: false] when action in [:logout]
"""
import Plug.Conn
import Openmaize.Report
@behaviour Plug
def init(opts) do
Keyword.get(opts, :redirects, true)
end
@doc """
Handle logout.
If the token was stored in a cookie, the cookie will be deleted.
If the token was not stored in a cookie, then you will need to use
your front end framework to delete the token.
"""
def call(%Plug.Conn{req_cookies: %{"access_token" => _token}} = conn, redirects) do
assign(conn, :current_user, nil) |> logout_user(redirects)
end
def call(conn, _opts), do: assign(conn, :current_user, nil) |> halt
def logout_user(conn, true) do
delete_resp_cookie(conn, "access_token")
|> handle_info("You have been logged out")
end
def logout_user(conn, false), do: delete_resp_cookie(conn, "access_token") |> halt
end