Skip to content

Instantly share code, notes, and snippets.

@srp
Last active January 2, 2017 19:14
Show Gist options
  • Save srp/b81d098ed8b6c143cfa5e3b20d97e9e4 to your computer and use it in GitHub Desktop.
Save srp/b81d098ed8b6c143cfa5e3b20d97e9e4 to your computer and use it in GitHub Desktop.
login(_DbConn, req#{body = <<>>}) ->
{error, "No body provided"};
login(DbConn, req#{body = ReqJsonStr}) ->
case json:parse(ReqJsonStr) of
{error, Reason} ->
{error, Reason};
{ok, ReqJson} ->
case validate_and_decode_login_request(ReqJson) of
{error, Reason} ->
{error, Reason};
{ok, #login_request{username = Username, password = Password}} ->
case db.find_user(DbConn, Username) of
{error, Reason} ->
{error, Reason};
{ok, #user_details{hashed_password = HashedPassword}} ->
case does_password_match(HashedPassword, Password) of
{error, Reason} ->
{error, Reason};
{ok, false} ->
{error, "Invalid username or password"}
{ok, true} ->
case jwt.generate_token(Username) of
{error, Reason} ->
{error, Reason};
{ok, jwtToken} ->
{ok, 200, json:encode([{"token", jwtToken}])}
end
end
end
end
end.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment