Ограничить мой сайт одним пользователем без аутентификации - сравните дату в массиве - PullRequest
0 голосов
/ 20 января 2020

Как я могу ограничить страницу только по одному пользователю без аутентификации и с задержкой в ​​3 минуты между первым и вторым пользователем. Если у кого-то есть подсказка или решение?

Вот что я пытаюсь сделать: уникальный пользователь приземляется на моей странице и заполняет форму, и я хочу выбрать его, создав User.last, он мне нужен быть уникальным на моей странице (чтобы не мешать регистрации и быть уверенным, что я выбираю нужного пользователя с помощью User.last) и ждать 3 минуты, пока второй пользователь получит доступ к этой странице. Как у меня есть 10 человек, пытающихся получить доступ к моему сайту, 1 при заполнении формы, еще 9 человек стоят в очереди и ожидают доступа к моей странице. На самом деле попробуйте сделать это в Ruby на Rails.

Мой вид с полем выглядит следующим образом (необходимо разрешить только одному пользователю на этой странице):

<div class="container">
<center><h1>New Connection </h1></center>
    <%= form_with model: @email, local: true do |form|%>
        <% if @email.errors.any? %>
        <div id="error explanation" class="alert alert-danger">
            <p>Erreur(s) : </p>
                <ul>
                    <% @email.errors.full_messages.each do |message|%>
                        <li><%=message%></li>
                    <% end %>
                </ul>
        </div>
        <% end %>
        <div class="form-group">
            <%= label_tag :email %> :
            <%= form.email_field :email, placeholder: "Email", class: "form-control" %>
        </div>
        <div class="form-group">
        <%= form.submit class: "btn btn-primary btn-lg btn-block", value: "Se connecter" %>
        </div>
    <%end%>
</div>

My контроллер электронной почты:

class EmailsController < ApplicationController

  def index
    redirect_to root_path
  end

  def new
    @email = Email.new
    sessions = ActiveRecord::SessionStore::Session.pluck(:updated_at)
#return an array like this : 
   [Tue, 21 Jan 2020 13:27:03 UTC +00:00, Tue, 21 Jan 2020 13:27:09 UTC +00:00, Tue, 21 Jan 2020 13:27:42 UTC +00:00, Tue, 21 Jan 2020 13:31:33 UTC +00:00, Tue, 21 Jan 2020 13:36:21 UTC +00:00, Tue, 21 Jan 2020 13:42:02 UTC +00:00, Tue, 21 Jan 2020 13:42:02 UTC +00:00, Tue, 21 Jan 2020 13:42:03 UTC +00:00, Tue, 21 Jan 2020 13:42:03 UTC +00:00, Tue, 21 Jan 2020 13:42:04 UTC +00:00, Tue, 21 Jan 2020 13:42:04 UTC +00:00, Tue, 21 Jan 2020 13:44:47 UTC +00:00, Tue, 21 Jan 2020 13:44:47 UTC +00:00, Tue, 21 Jan 2020 13:46:24 UTC +00:00, Tue, 21 Jan 2020 13:49:10 UTC +00:00, Tue, 21 Jan 2020 13:49:38 UTC +00:00, Tue, 21 Jan 2020 13:50:54 UTC +00:00, Tue, 21 Jan 2020 13:50:54 UTC +00:00, Tue, 21 Jan 2020 14:03:42 UTC +00:00, Tue, 21 Jan 2020 14:07:11 UTC +00:00, Tue, 21 Jan 2020 14:07:11 UTC +00:00, Tue, 21 Jan 2020 14:07:12 UTC +00:00, Tue, 21 Jan 2020 14:07:12 UTC +00:00, Tue, 21 Jan 2020 14:36:39 UTC +00:00, Tue, 21 Jan 2020 14:36:48 UTC +00:00, Tue, 21 Jan 2020 14:36:57 UTC +00:00, Tue, 21 Jan 2020 14:42:02 UTC +00:00, Tue, 21 Jan 2020 14:42:03 UTC +00:00, Tue, 21 Jan 2020 14:44:16 UTC +00:00, Tue, 21 Jan 2020 14:52:46 UTC +00:00, Tue, 21 Jan 2020 14:52:47 UTC +00:00, Tue, 21 Jan 2020 14:52:47 UTC +00:00, Tue, 21 Jan 2020 14:54:48 UTC +00:00, Wed, 22 Jan 2020 08:09:47 UTC +00:00, Wed, 22 Jan 2020 08:09:48 UTC +00:00, Wed, 22 Jan 2020 08:12:06 UTC +00:00, Wed, 22 Jan 2020 08:12:07 UTC +00:00, Wed, 22 Jan 2020 08:12:16 UTC +00:00, Wed, 22 Jan 2020 08:12:17 UTC +00:00, Wed, 22 Jan 2020 08:12:17 UTC +00:00, Wed, 22 Jan 2020 08:12:29 UTC +00:00, Wed, 22 Jan 2020 08:12:39 UTC +00:00, Wed, 22 Jan 2020 08:12:40 UTC +00:00, Wed, 22 Jan 2020 08:13:07 UTC +00:00, Wed, 22 Jan 2020 08:13:07 UTC +00:00, Wed, 22 Jan 2020 08:13:08 UTC +00:00, Wed, 22 Jan 2020 08:15:34 UTC +00:00, Wed, 22 Jan 2020 08:22:38 UTC +00:00, Wed, 22 Jan 2020 08:25:28 UTC +00:00, Wed, 22 Jan 2020 08:25:29 UTC +00:00, Wed, 22 Jan 2020 08:25:29 UTC +00:00, Wed, 22 Jan 2020 08:29:24 UTC +00:00, Wed, 22 Jan 2020 08:36:15 UTC +00:00, Wed, 22 Jan 2020 08:36:16 UTC +00:00, Wed, 22 Jan 2020 08:36:16 UTC +00:00, Wed, 22 Jan 2020 08:36:17 UTC +00:00, Wed, 22 Jan 2020 08:36:17 UTC +00:00, Wed, 22 Jan 2020 08:36:18 UTC +00:00, Wed, 22 Jan 2020 08:36:18 UTC +00:00, Wed, 22 Jan 2020 08:36:30 UTC +00:00, Wed, 22 Jan 2020 08:40:30 UTC +00:00, Wed, 22 Jan 2020 08:40:30 UTC +00:00, Wed, 22 Jan 2020 08:41:14 UTC +00:00, Wed, 22 Jan 2020 08:50:25 UTC +00:00, Wed, 22 Jan 2020 08:50:26 UTC +00:00, Wed, 22 Jan 2020 08:50:27 UTC +00:00, Wed, 22 Jan 2020 08:50:37 UTC +00:00, Wed, 22 Jan 2020 08:50:37 UTC +00:00, Wed, 22 Jan 2020 08:50:38 UTC +00:00, Wed, 22 Jan 2020 08:50:48 UTC +00:00, Wed, 22 Jan 2020 08:50:48 UTC +00:00, Wed, 22 Jan 2020 08:50:49 UTC +00:00, Wed, 22 Jan 2020 08:57:58 UTC +00:00, Wed, 22 Jan 2020 08:57:59 UTC +00:00, Wed, 22 Jan 2020 09:04:29 UTC +00:00, Wed, 22 Jan 2020 09:04:29 UTC +00:00, Wed, 22 Jan 2020 09:04:30 UTC +00:00, Wed, 22 Jan 2020 09:04:39 UTC +00:00, Wed, 22 Jan 2020 09:04:39 UTC +00:00, Wed, 22 Jan 2020 09:04:40 UTC +00:00, Wed, 22 Jan 2020 09:04:49 UTC +00:00, Wed, 22 Jan 2020 09:04:49 UTC +00:00, Wed, 22 Jan 2020 09:04:50 UTC +00:00, Wed, 22 Jan 2020 09:13:21 UTC +00:00, Wed, 22 Jan 2020 09:17:48 UTC +00:00, Wed, 22 Jan 2020 09:20:03 UTC +00:00, Wed, 22 Jan 2020 09:27:54 UTC +00:00, Wed, 22 Jan 2020 09:27:54 UTC +00:00, Wed, 22 Jan 2020 09:28:04 UTC +00:00, Wed, 22 Jan 2020 09:28:05 UTC +00:00, Wed, 22 Jan 2020 09:35:42 UTC +00:00, Wed, 22 Jan 2020 09:35:43 UTC +00:00, Wed, 22 Jan 2020 09:35:58 UTC +00:00]
    #How can I say that if a session is in the same minute than the previous session, redirect the one last one to another url?
  end

  def create
    @email = Email.create(email_params)
    respond_to do |format|
      if@email.persisted?
        format.html {redirect_to invoice_index_path, notice: 'Email Validated '}
      else
        format.html{render :new}
      end
    end
  end

  private 

  def email_params
    params.require(:email).permit(:email, :id_user)
  end
end

РЕДАКТИРОВАТЬ:

Как предложено в части комментариев, я попытался использовать сеанс, я могу получить доступ к сеансу, созданному рельсами с request.session_options[:id], но как Я их считаю?

РЕДАКТИРОВАТЬ 2:

Как предложено ARK в разделе комментариев, я пытаюсь использовать Session, созданный Rails, я редактировал свою часть контроллера. Как я могу сказать, что если сеанс находится в ту же минуту, что и предыдущий сеанс, перенаправить один последний на другой URL?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...