Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- validate(_DbConn, req#{body = <<>>}) ->
- {error, "No body provided"};
- validate(DbConn, req#{body = ReqJsonStr}) ->
- parse_json(DbConn, ReqJsonStr).
- parse_json(DbConn, ReqJsonStr) ->
- case json:parse(ReqJsonStr) of
- {error, Reason} -> {error, Reason};
- {ok, ReqJson} -> decode_json(DbConn, ReqJson)
- end
- decode_json(DbConn, ReqJson) ->
- case validate_and_decode_login_request(ReqJson) of
- {ok, #login_request{username = Username, password = Password}}) ->
- db_find_user(DbConn, Username, Password)
- end.
- db_find_user(DbConn, Username, Password) ->
- case db.find_user(DbConn, Username, Password) of
- {:error, Reason} -> {:error, Reason};
- {:ok, #user_details{hashed_password = HashedPassword}} ->
- check_password(Username, Password, HashedPassword)
- end.
- check_password(Username, Password, HashedPassword) ->
- case does_password_match(HashedPassword, Password) of
- {error, Reason} ->
- {error, Reason};
- {ok, false} ->
- {error, "Invalid username or password"}
- {ok, true} ->
- generateJwtToken(Username)
- end.
- generateJwtToken(Username) ->
- case jwt.generateToken(Username) of
- {error, Reason} ->
- {error, Reason};
- {ok, jwtToken} ->
- {ok, 200, json:encode([{"token", jwtToken}])}
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement