homanchou

homanchou

I’m trying out Phoenix 1.7 rc-0

I used the generator to create mix phx.gen.channel Space, then added token verification to the UserSocket and assigned the verified user_id to the socket by returning {:ok, assign(socket, user_id: user_id}

However in the Channel, in the join function, when I inspect the socket.assigns it is still an empty map instead of having the :user_id in it.

Is this a change in behavior, or user error? Thanks

Link to repo: GitHub - homanchou/thexr · GitHub

Showing Posts 1 to 2

beepbeepbopbop

beepbeepbopbop

The issue that you’re facing is pretty common for those who have just started their Elixir journey from other languages and runtimes; you’re using the old socket, not the new one that was given the assign call. Take a look at this part here: thexr/lib/thexr_web/channels/user_socket.ex at main · homanchou/thexr · GitHub

In your case expression, you’ve done all your work and when that expression evaluates, it’s either going to return :error or {:ok, socket}. However, the line I’ve highlighted effectively throws your new result away. Instead, what we want to do is just return the evaluated case expression like so:

  def connect(%{"token" => token}, socket, _connect_info) do
    case Phoenix.Token.verify(socket, "salt", token, max_age: 1_209_600) do
      {:ok, member_id} ->
        socket = assign(socket, member_id: member_id)
        {:ok, socket}

      {:error, reason} ->
        Logger.error("#{__MODULE__} connect error #{inspect(reason)}")
        :error
    end
  end
homanchou

homanchou OP

omgerg, :person_facepalming: how did i miss that. thank u!

— All posts loaded —

Where Next? Top

Trending in Questions Top

RSP87
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
nseaSeb
Hello, I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
apz
I’m new to elixir and just tried to install the elixirLS extension for VScode(ium) and it is throwing some errors that I would like help ...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews