Compare commits

..

No commits in common. "ab3ca1ec64d7343d31cff6c876dfd94761d591fe" and "895e0a53306390f03153a7ac37711db48a0ea9eb" have entirely different histories.

1 changed files with 9 additions and 5 deletions

View File

@ -13,7 +13,7 @@
% ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
% OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
%
-module(dudeswave_user_handler).
-module(dudeswave_register_handler).
-moduledoc """
Register a new user.
""".
@ -53,14 +53,17 @@ known_methods(Req, State) ->
resource_exists(Req, State) ->
{ok, Bucket} = maps:find(bucket, State),
case cowboy:read_urlencoded_body(Req) of
{ok, [{name, Name}, {username, User}, {password, Password}], NewReq} ->
case cowboy:read_body(Req, #{period => 5000, length => 8192}) of
{ok, Body, NewReq} ->
#{<<"name">> := Name, <<"password">> := Pass,
<<"user">> := User} = json:decode(Body),
case storage:read(Bucket, User) of
{ok, [_R]} ->
{true, NewReq, user_exists};
{ok, []} ->
{false, NewReq, {Bucket, [{name, Name},
{username, User},{password, Password}]}}
{username, User},{password, Pass}]}}
end
end.
@ -70,7 +73,8 @@ is_conflict(Req, State) -> {false, Req, State}.
create_user(Req, {Bucket, [{name, Name}, {username, User}, {password, Pass}]}) ->
Salt = rand:bytes(32),
Hash = crypto:hash(sha256, <<Pass/binary, Salt/binary>>),
SaltedPW = <<Pass/binary, Salt/binary>>,
Hash = crypto:hash(sha256, SaltedPW),
case storage:write(Bucket, User, Hash, [{salt, Salt}, {name, Name}]) of
ok ->