<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="175068" data-post-id="175068">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="lud" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lud/120/14382_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  lud
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>It is not 30 seconds but 30 minutes If I read correctly, and I guess you could change that value to something like 24hours, and refresh it when you start the game.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="175068" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/223">Post #222</a>
	                </div>
	            </div>
              <div id="likers-container-175068" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="175068"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #222"></div>
  </section>
</div>
    <div class="postbit" id="175069" data-post-id="175069">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="buddhisthead" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/buddhisthead/120/18640_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  buddhisthead
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Ah, right you are - it’s 30 minutes; however that is still short and I don’t want to weaken the session token strategy. The one-time “remember me” cookie is the right tool for the job.</p>
<p>There is nothing public to share on the game server, but it’s not fancy - I’m just storing account information for now. In the future, it will help with cloud services and multi-player access to game data.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="175069" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/224">Post #223</a>
	                </div>
	            </div>
              <div id="likers-container-175069" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="175069"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #223"></div>
  </section>
</div>
    <div class="postbit" id="175070" data-post-id="175070">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="lud" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lud/120/14382_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  lud
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Then yes I would accept and send cookies. But really there is no difference between a cookie and a token, both are headers here.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="175070" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/225">Post #224</a>
	                </div>
	            </div>
              <div id="likers-container-175070" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="175070"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #224"></div>
  </section>
</div>
    <div class="postbit" id="175071" data-post-id="175071">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="buddhisthead" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/buddhisthead/120/18640_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  buddhisthead
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Right, so that’s back to my question: what’s the name of the cookie?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="175071" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/226">Post #225</a>
	                </div>
	            </div>
              <div id="likers-container-175071" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="175071"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #225"></div>
  </section>
</div>
    <div class="postbit" id="175072" data-post-id="175072">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="lud" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lud/120/14382_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  lud
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Sorry I do not have a running app at the moment to check but there is always the docs:</p>
<blockquote>
<ul>
<li><code>:persistent_session_cookie_key</code> - session key name. This defaults to<br>
“persistent_session”. If <code>:otp_app</code> is used it’ll automatically prepend<br>
the key with the <code>:otp_app</code> value.</li>
</ul>
</blockquote> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="175072" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/227">Post #226</a>
	                </div>
	            </div>
              <div id="likers-container-175072" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="175072"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #226"></div>
  </section>
</div>
    <div class="postbit" id="175091" data-post-id="175091">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="danschultzer" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/danschultzer/120/4942_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  danschultzer
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Pow Core Team</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>The API guide uses the <code>PowPersistentSession.Store.PersistentSessionCache</code> for renewal tokens which by default lasts 30 days. So all you have to do is to set up your client logic to renew the session with the renewal token when the session token no longer works (as is needed in any case, since the session token only lives for 30 minutes). You are able to renew the session for up to 30 days with the renewal token.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="175091" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/228">Post #227</a>
	                </div>
	            </div>
              <div id="likers-container-175091" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="175091"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #227"></div>
  </section>
</div>
    <div class="postbit" id="175115" data-post-id="175115">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="buddhisthead" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/buddhisthead/120/18640_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  buddhisthead
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thank you very much, <a class="mention" href="/u/danschultzer" rel="nofollow">@danschultzer</a>. That sounds perfect.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="175115" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/229">Post #228</a>
	                </div>
	            </div>
              <div id="likers-container-175115" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="175115"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #228"></div>
  </section>
</div>
    <div class="postbit" id="180379" data-post-id="180379">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dimitarvp" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/120/38664_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dimitarvp
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I’d like to have a test in my app that creates an unconfirmed user (I have successfully enabled the confirmation module and have manually checked that my setup is working) and then tries to sign in with that. <code>Pow.Plug.assign_current_user</code> and <code>Pow.Operations.authenticate</code> don’t reject it so I am wondering what does?</p>
<p>Code:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir"># in another file (the ex_machina factory):

  def unconfirmed_user_factory do
    %User{
      email: Faker.Internet.email(),
      password: password()
    }
  end

# in the test file:

  @pow_config Application.fetch_env!(:my_app_name, :pow) # the app name is not a typo, just obfuscated after pasting it here.

  @email1 "u1@whatever.org"
  @pass1 "abcdefghi"

    test "sign in with unconfirmed user fails", %{conn: conn} do
      conn = Pow.Plug.put_config(conn, @pow_config)

      params =
        params_for(:unconfirmed_user, %{email: @email1, password: @pass1})
        |&gt; Map.merge(%{password_confirmation: @pass1})

      {:ok, user} = Pow.Ecto.Context.create(params, [repo: Repo, user: User])

      Pow.Operations.authenticate(%{"email" =&gt; @email1, "password" =&gt; @pass1}, @pow_config)
  end
</code></pre>
<p>What’s even more puzzling is that the created user has <code>unconfirmed_email</code> equalling <code>nil</code>. <code>email_confirmed_at</code> is <code>nil</code> at least (and there is a value in the <code>email_confirmation_token</code>).</p>
<p><a class="mention" href="/u/danschultzer" rel="nofollow">@danschultzer</a> What am I doing wrong? I simply want to have one sanity test in place to catch me if I break the auth system in the future. How would you write a persistent – and non-persistent as well – test that creates an unconfirmed user, tries to sign in with it and properly receives an error?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="180379" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/231">Post #230</a>
	                </div>
	            </div>
              <div id="likers-container-180379" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="180379"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #230"></div>
  </section>
</div>
    <div class="postbit" id="180472" data-post-id="180472">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="dimitarvp" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/dimitarvp/120/38664_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  dimitarvp
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Oh well, after some docs and sources reading, the test correctly detects a problem when trying to sign in with an unconfirmed user. Pasting the code for posterity:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">  @pow_config Application.fetch_env!(:my_app_name, :pow)
  @email1 "u1@whatever.org"
  @pass1 "asdfghjk"

  test "trying to sign in with an unconfirmed user fails", %{conn: conn} do
    {:ok, _user} =
      Pow.Operations.create(
        %{email: @email1, password: @pass1, password_confirmation: @pass1},
        @pow_config
      )

    params = %{"user" =&gt; %{"email" =&gt; @email1, "password" =&gt; @pass1}}
    conn = Pow.Plug.put_config(conn, @pow_config)
    conn = post(conn, Routes.pow_session_path(conn, :create, params))
    err = get_flash(conn, "error")
    refute is_nil(err)
  end
</code></pre>
<p>Basically, don’t forget to put the Pow config in the <code>Plug.Conn</code>. And then search the Phoenix error flash for error(s).</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="180472" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/232">Post #231</a>
	                </div>
	            </div>
              <div id="likers-container-180472" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="180472"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #231"></div>
  </section>
</div>
    <div class="postbit" id="182333" data-post-id="182333">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Kurisu" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Kurisu/120/14820_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Kurisu
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="danschultzer" data-post="150" data-topic="15807">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/danschultzer/48/4942_2.png" class="avatar"> danschultzer:</div>
<blockquote>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule MyAppWeb.LoadProfilePlug do
  @doc false

  @spec init(any()) :: any()
  def init(opts), do: opts

  @doc false
  @spec call(Conn.t(), atom()) :: Conn.t()
  def call(conn, _opts) do
    config = Pow.Plug.fetch_config(conn)

    case Pow.Plug.current_user(conn, config) do
      nil -&gt;
        conn

      user -&gt;
        preloaded_user = MyApp.Repo.preload(user, :profile)

        Pow.Plug.assign_current_user(conn, preloaded_user, config)
    end
  end
end
</code></pre>
</blockquote>
</aside>
<p>Hey <a class="mention" href="/u/danschultzer" rel="nofollow">@danschultzer</a>,</p>
<p>Please can you help again with this? I have a plug based on your suggestion that used to work fine until… now I’m having some dyalizer warning:</p>
<blockquote>
<p>Function call/2 has no local return.ElixirLS Dialyzer</p>
</blockquote>
<p>This is occuring on the line we have</p>
<p><code>config = Pow.Plug.fetch_config(conn)</code></p>
<p>After some search I found that <code>Pow.Plug.fetch_config(conn)</code> can return <code>no_config_error()</code> sometimes which result in a <code>no_return()</code> type.</p>
<p>Please, any suggestion on how to get rid of this warning?</p>
<p>Below my custom Plug:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule MyApp.LoadClientProfilePlug do
  @doc false

  @spec init(any()) :: any()
  def init(opts), do: opts

  @doc false
  def call(conn = %{assigns: %{current_user: user = %{role: "client"}}}, _opts) do
    config = Pow.Plug.fetch_config(conn)
    preloaded_user = Core.Repo.preload(user, :profile)

    conn
    |&gt; Pow.Plug.assign_current_user(preloaded_user, config)
  end
end
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="182333" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/pow-robust-modular-extendable-user-authentication-and-management-system/15807/233">Post #232</a>
	                </div>
	            </div>
              <div id="likers-container-182333" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="182333"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #232"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/15807/load_more?page=24">Load more posts (11 remaining)</a>
</div></template></turbo-stream>