diff --git a/dudeswave/src/dudeswave_auth.erl b/dudeswave/src/dudeswave_auth.erl index aa98368..13fb9bd 100644 --- a/dudeswave/src/dudeswave_auth.erl +++ b/dudeswave/src/dudeswave_auth.erl @@ -26,7 +26,7 @@ from the dudeswave database. -export([authenticate/2, details/1, new/3, update/4, delete/1, logout/2, auth_cookies/1, invalidate_cookies/1, - set_auth_cookies/4]). + set_auth_cookies/4, read_login_data/1]). -doc """ Verify a session with an existing cookie. @@ -323,3 +323,27 @@ set_auth_cookies(Req, User, Cookie, Validity) -> #{max_age => Validity}), Req1. + +-doc """ +Spec: + +``` +-spec read_login_data(Req) -> {User, Pass, Req0} when + Req :: cowboy_req:req(), + User :: binary(), + Pass :: binary(), + Req0 :: cowboy_req:req(). +``` +Read the login details from the `Req` body and return `User` and `Password`. +""". +-spec read_login_data(Req) -> {User, Pass, Req0} when + Req :: cowboy_req:req(), + User :: binary(), + Pass :: binary(), + Req0 :: cowboy_req:req(). + +read_login_data(Req) -> + {ok, Data, Req0} = cowboy_req:read_body(Req), + #{<<"user">> := User, <<"password">> := Pass} = json:decode(Data), + + {User, Pass, Req0}. \ No newline at end of file diff --git a/dudeswave/src/dudeswave_auth_handler.erl b/dudeswave/src/dudeswave_auth_handler.erl index ed40474..bd77f7e 100644 --- a/dudeswave/src/dudeswave_auth_handler.erl +++ b/dudeswave/src/dudeswave_auth_handler.erl @@ -151,8 +151,7 @@ delete_completed(Req, State) -> {false, Req, State}. % login(Req, State) -> - {ok, Data, Req0} = cowboy_req:read_body(Req), - #{<<"user">> := User, <<"password">> := Pass} = json:decode(Data), + {User, Pass, Req0} = dudeswave_auth:read_login_data(Req), case dudeswave_auth:authenticate(User, {password, Pass}) of {true, Cookie, Validity} ->