Skip to content

Commit 423ecb5

Browse files
committed
formatter
1 parent 6cdbce0 commit 423ecb5

19 files changed

+408
-391
lines changed

.formatter.exs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
[
2+
inputs: [
3+
"mix.exs",
4+
"{config,lib,test}/**/*.{ex,exs}"
5+
],
6+
7+
locals_without_parens: [
8+
plug: 1,
9+
plug: 2
10+
]
11+
]

lib/samly.ex

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,10 @@ defmodule Samly do
1717
1818
- conn: Plug connection
1919
"""
20-
@spec get_active_assertion(Conn.t) :: Assertion.t
20+
@spec get_active_assertion(Conn.t()) :: Assertion.t()
2121
def get_active_assertion(conn) do
2222
nameid = conn |> Conn.get_session("samly_nameid")
23+
2324
case State.get_by_nameid(nameid) do
2425
{^nameid, saml_assertion} -> saml_assertion
2526
_ -> nil
@@ -37,8 +38,9 @@ defmodule Samly do
3738
- assertion: SAML assertion obtained by calling `get_active_assertion/1`
3839
- name: Attribute name
3940
"""
40-
@spec get_attribute(nil | Assertion.t, String.t) :: nil | String.t
41+
@spec get_attribute(nil | Assertion.t(), String.t()) :: nil | String.t()
4142
def get_attribute(nil, _name), do: nil
43+
4244
def get_attribute(%Assertion{} = assertion, name) do
4345
computed = assertion.computed
4446
attributes = assertion.attributes

lib/samly/assertion.ex

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,34 +13,31 @@ defmodule Samly.Assertion do
1313
"""
1414

1515
require Samly.Esaml
16-
alias Samly.Esaml
17-
alias Samly.Subject
16+
alias Samly.{Esaml, Subject}
1817

19-
defstruct [
20-
version: "2.0",
21-
issue_instant: "",
22-
recipient: "",
23-
issuer: "",
24-
subject: %Subject{},
25-
conditions: %{},
26-
attributes: %{},
27-
authn: %{},
28-
computed: %{},
29-
idp_id: ""
30-
]
18+
defstruct version: "2.0",
19+
issue_instant: "",
20+
recipient: "",
21+
issuer: "",
22+
subject: %Subject{},
23+
conditions: %{},
24+
attributes: %{},
25+
authn: %{},
26+
computed: %{},
27+
idp_id: ""
3128

3229
@type t :: %__MODULE__{
33-
version: String.t,
34-
issue_instant: String.t,
35-
recipient: String.t,
36-
issuer: String.t,
37-
subject: Subject.t,
38-
conditions: map,
39-
attributes: map,
40-
authn: map,
41-
computed: map,
42-
idp_id: String.t
43-
}
30+
version: String.t(),
31+
issue_instant: String.t(),
32+
recipient: String.t(),
33+
issuer: String.t(),
34+
subject: Subject.t(),
35+
conditions: map,
36+
attributes: map,
37+
authn: map,
38+
computed: map,
39+
idp_id: String.t()
40+
}
4441

4542
@doc false
4643
def from_rec(assertion_rec) do

lib/samly/auth_handler.ex

Lines changed: 54 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,11 @@ defmodule Samly.AuthHandler do
2626
"""
2727

2828
def valid_referer?(conn) do
29-
referer = case conn |> get_req_header("referer") do
30-
[uri] -> URI.parse(uri)
31-
_ -> %URI{}
32-
end
29+
referer =
30+
case conn |> get_req_header("referer") do
31+
[uri] -> URI.parse(uri)
32+
_ -> %URI{}
33+
end
3334

3435
[request_authority] = conn |> get_req_header("host")
3536
request_authority == referer.authority && referer.scheme == Atom.to_string(conn.scheme)
@@ -38,68 +39,71 @@ defmodule Samly.AuthHandler do
3839
def initiate_sso_req(conn) do
3940
import Plug.CSRFProtection, only: [get_csrf_token: 0]
4041

41-
with true <- valid_referer?(conn),
42-
target_url = conn.params["target_url"],
43-
target_url = (if target_url, do: URI.decode_www_form(target_url), else: nil)
44-
do
42+
with true <- valid_referer?(conn), target_url = conn.params["target_url"] do
43+
target_url = if target_url, do: URI.decode_www_form(target_url), else: nil
44+
4545
opts = [
4646
action: conn.request_path,
47-
target_url: (if target_url, do: URI.encode_www_form(target_url), else: nil),
47+
target_url: target_url,
4848
csrf_token: get_csrf_token()
4949
]
5050

5151
conn
52-
|> put_resp_header("Content-Type", "text/html")
53-
|> send_resp(200, EEx.eval_string(@sso_init_resp_template, opts))
52+
|> put_resp_header("Content-Type", "text/html")
53+
|> send_resp(200, EEx.eval_string(@sso_init_resp_template, opts))
5454
else
5555
_ -> conn |> send_resp(403, "invalid_request")
5656
end
57-
# rescue
58-
# error ->
59-
# Logger.error("#{inspect error}")
60-
# conn |> send_resp(500, "request_failed")
57+
58+
# rescue
59+
# error ->
60+
# Logger.error("#{inspect error}")
61+
# conn |> send_resp(500, "request_failed")
6162
end
6263

6364
def send_signin_req(conn) do
6465
%IdpData{id: idp_id} = idp = conn.private[:samly_idp]
6566
%IdpData{esaml_idp_rec: idp_rec, esaml_sp_rec: sp_rec} = idp
6667
sp = ensure_sp_uris_set(sp_rec, conn)
6768

68-
target_url = conn.params["target_url"] || "/"
69-
|> URI.decode_www_form()
70-
69+
target_url = (conn.params["target_url"] || "/") |> URI.decode_www_form()
7170
nameid = get_session(conn, "samly_nameid")
71+
7272
case State.get_by_nameid(nameid) do
7373
{^nameid, %Assertion{idp_id: ^idp_id}} ->
74-
conn
75-
|> redirect(302, target_url)
74+
conn |> redirect(302, target_url)
75+
7676
_ ->
7777
relay_state = State.gen_id()
7878
{idp_signin_url, req_xml_frag} = Helper.gen_idp_signin_req(sp, idp_rec)
7979

8080
conn
81-
|> configure_session(renew: true)
82-
|> put_session("relay_state", relay_state)
83-
|> put_session("idp_id", idp_id)
84-
|> put_session("target_url", target_url)
85-
|> send_saml_request(idp_signin_url, idp.use_redirect_for_req,
86-
req_xml_frag, relay_state |> URI.encode_www_form())
81+
|> configure_session(renew: true)
82+
|> put_session("relay_state", relay_state)
83+
|> put_session("idp_id", idp_id)
84+
|> put_session("target_url", target_url)
85+
|> send_saml_request(
86+
idp_signin_url,
87+
idp.use_redirect_for_req,
88+
req_xml_frag,
89+
relay_state |> URI.encode_www_form()
90+
)
8791
end
88-
# rescue
89-
# error ->
90-
# Logger.error("#{inspect error}")
91-
# conn |> send_resp(500, "request_failed")
92+
93+
# rescue
94+
# error ->
95+
# Logger.error("#{inspect error}")
96+
# conn |> send_resp(500, "request_failed")
9297
end
9398

9499
def send_signout_req(conn) do
95100
%IdpData{id: idp_id} = idp = conn.private[:samly_idp]
96101
%IdpData{esaml_idp_rec: idp_rec, esaml_sp_rec: sp_rec} = idp
97102
sp = ensure_sp_uris_set(sp_rec, conn)
98103

99-
target_url = conn.params["target_url"] || "/"
100-
|> URI.decode_www_form()
101-
104+
target_url = (conn.params["target_url"] || "/") |> URI.decode_www_form()
102105
nameid = get_session(conn, "samly_nameid")
106+
103107
case State.get_by_nameid(nameid) do
104108
{^nameid, %Assertion{idp_id: ^idp_id}} ->
105109
{idp_signout_url, req_xml_frag} = Helper.gen_idp_signout_req(sp, idp_rec, nameid)
@@ -108,19 +112,24 @@ defmodule Samly.AuthHandler do
108112
relay_state = State.gen_id()
109113

110114
conn
111-
|> put_session("target_url", target_url)
112-
|> put_session("relay_state", relay_state)
113-
|> put_session("idp_id", idp_id)
114-
|> delete_session("samly_nameid")
115-
|> send_saml_request(idp_signout_url, idp.use_redirect_for_req,
116-
req_xml_frag, relay_state |> URI.encode_www_form())
115+
|> put_session("target_url", target_url)
116+
|> put_session("relay_state", relay_state)
117+
|> put_session("idp_id", idp_id)
118+
|> delete_session("samly_nameid")
119+
|> send_saml_request(
120+
idp_signout_url,
121+
idp.use_redirect_for_req,
122+
req_xml_frag,
123+
relay_state |> URI.encode_www_form()
124+
)
125+
117126
_ ->
118-
conn
119-
|> send_resp(403, "access_denied")
127+
conn |> send_resp(403, "access_denied")
120128
end
121-
# rescue
122-
# error ->
123-
# Logger.error("#{inspect error}")
124-
# conn |> send_resp(500, "request_failed")
129+
130+
# rescue
131+
# error ->
132+
# Logger.error("#{inspect error}")
133+
# conn |> send_resp(500, "request_failed")
125134
end
126135
end

lib/samly/auth_router.ex

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,19 @@ defmodule Samly.AuthRouter do
1212
plug :dispatch
1313

1414
get "/signin/*idp_id_seg" do
15-
conn
16-
|> Samly.AuthHandler.initiate_sso_req()
15+
conn |> Samly.AuthHandler.initiate_sso_req()
1716
end
1817

1918
post "/signin/*idp_id_seg" do
20-
conn
21-
|> Samly.AuthHandler.send_signin_req()
19+
conn |> Samly.AuthHandler.send_signin_req()
2220
end
2321

2422
get "/signout/*idp_id_seg" do
25-
conn
26-
|> Samly.AuthHandler.initiate_sso_req()
23+
conn |> Samly.AuthHandler.initiate_sso_req()
2724
end
2825

2926
post "/signout/*idp_id_seg" do
30-
conn
31-
|> Samly.AuthHandler.send_signout_req()
27+
conn |> Samly.AuthHandler.send_signout_req()
3228
end
3329

3430
match _ do

lib/samly/config_error.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ defmodule Samly.ConfigError do
33

44
defexception [:message]
55

6-
@spec exception(map) :: Exception.t
6+
@spec exception(map) :: Exception.t()
77
def exception(data) when is_map(data) do
8-
%__MODULE__{message: "invalid_config: #{inspect data}"}
8+
%__MODULE__{message: "invalid_config: #{inspect(data)}"}
99
end
1010
end

lib/samly/esaml.ex

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,15 @@ defmodule Samly.Esaml do
55
import Record, only: [defrecord: 2, extract: 2]
66

77
@esaml_hrl "esaml/include/esaml.hrl"
8-
defrecord :esaml_org,
9-
extract(:esaml_org, from_lib: @esaml_hrl)
10-
defrecord :esaml_contact,
11-
extract(:esaml_contact, from_lib: @esaml_hrl)
12-
defrecord :esaml_sp_metadata,
13-
extract(:esaml_sp_metadata, from_lib: @esaml_hrl)
14-
defrecord :esaml_idp_metadata,
15-
extract(:esaml_idp_metadata, from_lib: @esaml_hrl)
16-
defrecord :esaml_authnreq,
17-
extract(:esaml_authnreq, from_lib: @esaml_hrl)
18-
defrecord :esaml_subject,
19-
extract(:esaml_subject, from_lib: @esaml_hrl)
20-
defrecord :esaml_assertion,
21-
extract(:esaml_assertion, from_lib: @esaml_hrl)
22-
defrecord :esaml_logoutreq,
23-
extract(:esaml_logoutreq, from_lib: @esaml_hrl)
24-
defrecord :esaml_logoutresp,
25-
extract(:esaml_logoutresp, from_lib: @esaml_hrl)
26-
defrecord :esaml_response,
27-
extract(:esaml_response, from_lib: @esaml_hrl)
28-
defrecord :esaml_sp,
29-
extract(:esaml_sp, from_lib: @esaml_hrl)
8+
defrecord :esaml_org, extract(:esaml_org, from_lib: @esaml_hrl)
9+
defrecord :esaml_contact, extract(:esaml_contact, from_lib: @esaml_hrl)
10+
defrecord :esaml_sp_metadata, extract(:esaml_sp_metadata, from_lib: @esaml_hrl)
11+
defrecord :esaml_idp_metadata, extract(:esaml_idp_metadata, from_lib: @esaml_hrl)
12+
defrecord :esaml_authnreq, extract(:esaml_authnreq, from_lib: @esaml_hrl)
13+
defrecord :esaml_subject, extract(:esaml_subject, from_lib: @esaml_hrl)
14+
defrecord :esaml_assertion, extract(:esaml_assertion, from_lib: @esaml_hrl)
15+
defrecord :esaml_logoutreq, extract(:esaml_logoutreq, from_lib: @esaml_hrl)
16+
defrecord :esaml_logoutresp, extract(:esaml_logoutresp, from_lib: @esaml_hrl)
17+
defrecord :esaml_response, extract(:esaml_response, from_lib: @esaml_hrl)
18+
defrecord :esaml_sp, extract(:esaml_sp, from_lib: @esaml_hrl)
3019
end

0 commit comments

Comments
 (0)