2014-10-31 4 views
0

Там является Rails отель список приложений с DEViSE/канкан установитьRails DEViSE гостевых пользователей лексемы

class HotelsController < ApplicationController 
before_filter :authenticate_user!, except: [:show] 
load_and_authorize_resource 

1) Что является самым изящным способом, чтобы позволить владельцам редактировать свои данные в гостинице без регистрации их в качестве пользователей?

2) Что делать, если мы создаем уникальный маркер для каждого отеля и по электронной почте что-то вроде следующей ссылке к соответствующему владельцу:

http://myapp.io/hotels/10010/edit?token=AAAABBBBCCCCDDD

..how для настройки DEViSE/Канкан, чтобы они аутентификации пользователя и разрешить им редактировать соответствующую запись в таблице отелей?

Спасибо заранее!

С уважением, Серж.

ответ

0

быстрое и грязное решение было бы переопределить метод authenticate_user! и добавить проверку для маркеров:

# application_controller.rb 
def authenticate_user! 
    if (token = params[:token] || session[:token]) 
    @current_user = User.find_by_token token 
    session[:token] = token if @current_user 
    else 
    super 
    end 
end 

Сначала вы должны добавить маркер столбца в таблицу пользователей и вы по-прежнему необходимо создать для них пользователя. Создайте токен и отправьте по электронной почте ссылку со своим токеном. Когда они сначала приходят на сайт с маркером в URL-адресе, указанный выше метод проверяет наличие соответствующей записи в db и устанавливает ее как current_user и сохраняет токен в сеансе, чтобы последующие запросы все равно работали. Не забудьте очистить сеанс позже (выйти или выйти).

Причина, по которой вам все еще необходимо создать запись пользователя, заключается в том, что вы не хотите начинать отмену своей логики cancan, и вам нужно место для хранения маркера в любом случае.

Там также некоторые драгоценные камни, которые будут добавлять маркер аутентификации:

https://github.com/gonzalo-bulnes/simple_token_authentication

И простой Rails встроенный в растворе:

http://api.rubyonrails.org/classes/ActionController/HttpAuthentication/Token.html

+0

Есть идея, это имеет смысл. Большое спасибо! – Serge

Смежные вопросы