forked from ueberauth/guardian
/
hooks.ex
69 lines (59 loc) · 1.55 KB
/
hooks.ex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
defmodule Guardian.Hooks do
@moduledoc """
This module helps to hook into the lifecycle of authentication.
"""
defmacro __using__(_) do
quote do
@behaviour Guardian.Hooks
def before_encode_and_sign(resource, type, claims) do
{:ok, {resource, type, claims}}
end
def after_encode_and_sign(_, _, _, _), do: :ok
def after_sign_in(conn, _), do: conn
def before_sign_out(conn, _), do: conn
def on_verify(claims, jwt), do: {:ok, {claims, jwt}}
def on_revoke(claims, jwt), do: {:ok, {claims, jwt}}
defoverridable [
{:before_encode_and_sign, 3},
{:after_encode_and_sign, 4},
{:after_sign_in, 2},
{:before_sign_out, 2},
{:on_verify, 2},
{:on_revoke, 2}
]
end
end
@callback before_encode_and_sign(
resource :: term,
type :: atom,
claims :: map()
) :: {:ok, {term, atom, map}}
@callback after_encode_and_sign(
resource :: term,
type :: atom,
claims :: map(),
token :: String.t
) :: Plug.Conn.t
@callback after_sign_in(
conn :: Plug.Conn.t,
location :: atom | nil
) :: Plug.Conn.t
@callback before_sign_out(
conn :: Plug.Conn.t,
location :: atom | nil
) :: Plug.Conn.t
@callback on_verify(
claims :: map(),
jwt :: String.t
) :: {:ok, {map(), String.t}}
@callback on_revoke(
claims :: map(),
jwt :: String.t
) :: {:ok, {map(), String.t}}
end
defmodule Guardian.Hooks.Default do
@moduledoc """
Default implementation of GuardianHooks.
"""
use Guardian.Hooks
end