rails 3: используя devise для аутентификации, как ТАКЖЕ разрешить доступ к странице отчета с помощью guid вместо логина - PullRequest
2 голосов
/ 27 мая 2011

Моему приложению rails 3 требуется только один вход в систему для каждой учетной записи (например, без ролей).Я использую Devise и очень доволен им.

Но моим пользователям необходимо иметь возможность делиться несколькими экранами (в основном отчетами о состоянии) с другими менеджерами, которым не нужны или не нужны учетные записи для входа..

Я думал о создании и хранении guid для каждого такого «внешнего» отчета (уникального для каждой учетной записи + отчета), чтобы ссылка, такая как

http://myapp.mydomain.com/pagename?token=GUID_GOES_HERE

, открывала бы доступ к этой странице (но ТОЛЬКО на этой странице)

Вопросы:

a) есть ли способ разрешить зарегистрированному пользователю учетной записи доступ к странице, но ТАКЖЕ позволяет гиду обходить аутентификацию devise

b) есть ли лучший способ для пользователей аккаунта (скажем, регионального менеджера) поделиться некоторыми экранами отчетов с не вошедшими в систему пользователями (скажем, менеджерами магазинов)?

1 Ответ

3 голосов
/ 27 мая 2011

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

get 'public_reports/:token' => 'public_reports#view'

И действие контроллера найдет этот отчет на основе токена и отобразит соответствующее представление.

class PublicReport < ApplicationController
    skip_before_filter :authenticate_user!, :only => [:view]

  def view
    @report = Report.find_by_token(params[:token])
    if @report
      #render view...
    else
      #render report_missing view
    end
  end

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