Проверка того, было ли приглашено зарегистрироваться. - PullRequest
1 голос
/ 31 июля 2011

Я пытаюсь закодировать базовую страницу подтверждения приглашенных в Ruby on Rails 3.

Я пытаюсь закодировать базовую страницу веб-сайта, в которой есть текстовое поле, в котором пользователь может ввести свой адрес электронной почты, а затем выполнить проверку, был ли этот адрес электронной почты приглашен. Если он был приглашен, они будут направлены на страницу регистрации. Если этого не произойдет, им будет дано простое сообщение «не приглашен», и они не будут приняты для регистрации.

Мне трудно понять, как именно передать эту информацию обратно в контроллер и запустить проверку.

Моя текущая настройка:

пользователь запускается в Manager / WelcomePage Rails открывает ManagerController и переходит к действию WelcomePage; Есть модель приглашения и таблица, в которой есть столбец с приглашением по электронной почте. В WelcomePage есть форма для ввода адреса электронной почты пользователя, а затем для передачи его обратно ManagerController и проверки, был ли приглашен адрес пользователя.

<%= form_for(:invite, :url => {:action => 'authenticate'}) do |f| %>
    <div class="field">
        <p class="Invitee Verification">Enter your e-mail. If you've been invited, we'll take you to sign up</p>
        <%= f.text_field(:email) %>

        <div class="form-buttons">
            <%= submit_tag("enter") %>
        </div>
<% end %>

Затем вернитесь в коде ManagerController:

def authenticate()
  invite_input_email = params[:email]
  if Invite.where(:email => invite_input_email).size > 0
    render('new_user_form')
  else
    render(:text => "nah")
  end
end

Есть идеи о том, что нужно изменить?

Ответы [ 3 ]

2 голосов
/ 31 июля 2011

Извините, я не знаю о синтаксисе Ruby on Rails, но с точки зрения разработки, я думаю, что ваш подход к проблеме не верен ..

Если человек был приглашен, он должен получитьэлектронное письмо с регистрационным URL с хешем, который уникальным образом генерируется для этого электронного письма и хранится в вашей базе данных.В тот момент, когда пользователь посещает URL-адрес и регистрируется с помощью электронного письма, вы отключаете этот хэш для дальнейшей регистрации.Проблема с вашим подходом состоит в том, что если хакер знает кого-то, кто был приглашен, он может легко использовать свою электронную почту и зарегистрироваться на вашем веб-сайте.

Вы должны сделать регистрацию настолько интуитивной, насколько это возможно, и не добавлять лишние страницы.

Что вы думаете о вышеуказанном подходе?

1 голос
/ 31 июля 2011
invite_input_email = params[:email]

Я считаю, что это не правильно, поскольку form_for будет генерировать имена параметров в виде массива.

Правильная версия:

invite_input_email = params[:invite][:email]
0 голосов
/ 31 июля 2011

Я согласен с @ user350374 и добавлю к сообщению, сказав, что вы можете добавить некоторую проверку в свою модель пользователя для проверки записи приглашения.

Если вы еще этого не сделали, извлеките гем Devise и запустите его, а затем, когда вы его запустите, добавьте подтверждение.

...