Danny5000

Danny5000

Using Argon2 or Bcrypt functions on Windows

Hello,

I am new to Elixir/Phoenix and I am trying to complete a course that uses password hashing. I’ve tried installing both “bcrypt_elixir” and “argon2_elixir” (both version 3.0.0) and I get an error whenever I attempt to send a query that will hash the password. I am using Windows 10 with VS code 1.68.

I was able to run mix phx.server on the VS code developer command prompt, but whenever running the query I get the error. The query is being run in the grapghql playground. Running mix phx.server in any other shell was throwing a compilation error.

Below is the hashing function I am using.

 defp hash_password(%Ecto.Changeset{} = changeset) do
    case changeset do
      %Ecto.Changeset{valid?: true, changes: %{password: password}} ->
        put_change(changeset, :password, Bcrypt.hash_pwd_salt(password))
      _ -> changeset
    end
  end

The error I am getting is below. I’ve read other threads, but I am lost as to what I need to do. Any assistance is appreciated!

** (exit) an exception was raised:
    ** (UndefinedFunctionError) function Bcrypt.Base.gen_salt/2 is undefined (module Bcrypt.Base is not available)
        (bcrypt_elixir 3.0.0) Bcrypt.Base.gen_salt(12, false)
        (bcrypt_elixir 3.0.0) lib/bcrypt.ex:77: Bcrypt.hash_pwd_salt/2
        (graphql_chat 0.1.0) lib/graphql_chat/auth/user.ex:34: GraphqlChat.Auth.User.hash_password/1
        (graphql_chat 0.1.0) lib/graphql_chat/auth.ex:54: GraphqlChat.Auth.create_user/1
        (graphql_chat 0.1.0) lib/graphql_chat_web/schema/resolvers/user_resolver.ex:5: Graphql_ChatWeb.Schema.Resolvers.UserResolver.register_user/3
        (absinthe 1.6.8) lib/absinthe/resolution.ex:209: Absinthe.Resolution.call/2
        (absinthe 1.6.8) lib/absinthe/phase/document/execution/resolution.ex:230: Absinthe.Phase.Document.Execution.Resolution.reduce_resolution/1
        (absinthe 1.6.8) lib/absinthe/phase/document/execution/resolution.ex:185: Absinthe.Phase.Document.Execution.Resolution.do_resolve_field/3
        (absinthe 1.6.8) lib/absinthe/phase/document/execution/resolution.ex:170: Absinthe.Phase.Document.Execution.Resolution.do_resolve_fields/6
        (absinthe 1.6.8) lib/absinthe/phase/document/execution/resolution.ex:88: Absinthe.Phase.Document.Execution.Resolution.walk_result/5
        (absinthe 1.6.8) lib/absinthe/phase/document/execution/resolution.ex:67: Absinthe.Phase.Document.Execution.Resolution.perform_resolution/3
        (absinthe 1.6.8) lib/absinthe/phase/document/execution/resolution.ex:24: Absinthe.Phase.Document.Execution.Resolution.resolve_current/3
        (absinthe 1.6.8) lib/absinthe/pipeline.ex:370: Absinthe.Pipeline.run_phase/3
        (absinthe_plug 1.5.8) lib/absinthe/plug.ex:536: Absinthe.Plug.run_query/4
        (absinthe_plug 1.5.8) lib/absinthe/plug.ex:290: Absinthe.Plug.call/2
        (phoenix 1.6.10) lib/phoenix/router.ex:354: Phoenix.Router.__call__/2
        (graphql_chat 0.1.0) lib/graphql_chat_web/endpoint.ex:1: GraphqlChatWeb.Endpoint.plug_builder_call/2
        (graphql_chat 0.1.0) lib/plug/debugger.ex:136: GraphqlChatWeb.Endpoint."call (overridable 3)"/2
        (graphql_chat 0.1.0) lib/graphql_chat_web/endpoint.ex:1: GraphqlChatWeb.Endpoint.call/2
        (phoenix 1.6.10) lib/phoenix/endpoint/cowboy2_handler.ex:54: Phoenix.Endpoint.Cowboy2Handler.init/4

First Post!

al2o3cr

al2o3cr

(note: I edited your post to include ``` fences to highlight code + terminal output)

You’ll need to install the compilers etc needed to build the Bcrypt package - there’s a wiki page about it.

Where Next?

Popular in Questions Top

jerry
Good day to you all. I have been struggling to get a query involving like and ilike to work. Can anyone assist me on this, please? pro...
New
itssasanka
Hi all, Trying to get some more clarity over utc_datetime and naive_datetime for Ecto: https://hexdocs.pm/ecto/Ecto.Schema.html#module-...
New
ycv005
I have followed this StackOverflow post to install the specific version of Erlang. And When I am running mix ecto.setup then getting fol...
New
fireproofsocks
I’m working on defining a simple Ecto schema for a table (in PostGres), but I don’t see where I can define a column as NOT NULL. Conside...
New
nsuchy
Hi. I’ve noticed that Windows Powershell has it’s own IEX command and you cannot access Elixir’s IEX due to the conflict. This isn’t a cr...
New
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
Fl4m3Ph03n1x
Background Let’s assume I have a typical GenServer that receives messages as requests, does some operation in a DB and returns responses....
New
shahryarjb
Hello, I have map which I want to convert it to string like this: the map: %{last_name: "tavakkoli", name: "shahryar"} the string I ne...
New
9mm
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
New
idi527
I’ve been re-reading swift book again and noticed that multiline strings there don’t have a trailing line break, unlike in elixir iex(2)...
New

Other popular topics Top

chrismccord
Phoenix 1.4.0 released Phoenix 1.4 is out! This release ships with exciting new features, most notably with HTTP2 support, improved deve...
688 30048 115
New
yurko
Here are few pieces of (common) Linux knowledge that we use for reasonably small one server apps. We use Ubuntu but this should work for ...
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New
polypush135
As many of you may have realized by now (sorry for all the posts here) I’ve been working on a db problem where I’m trying to aggregate a ...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
TunkShif
This post is an instruction guide to help you setup your Neovim for Elixir development from scratch. It includes general information on h...
273 38985 115
New
AstonJ
We’ve put together this wiki for Phoenix LiveView - please feel free to add any info you feel is worth including. What is Phoenix LiveV...
New

We're in Beta

About us Mission Statement