2015-08-24 3 views
0

У меня есть приложение Rails/Mongoid с использованием devise и devise_invitable gems со специальным сценарием, в котором пользователь имеет группы_и_и_пользователей_событий. Это в приложении означает, что Пользователь может быть приглашен в одну или несколько групп другими пользователями. Я использую devise_invitable для обработки этих приглашений для новых и существующих пользователей.Devise/Devise_invitable: Как пропустить контроль ожидающих приглашений

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

Если пользователь подтверждает приглашение, все работает нормально, но проблема заключается в том, что, если пользователь не подтвердит это, он/она не сможет снова войти в свою учетную запись пользователя, потому что он получит предупреждение :

You have a pending invitation, accept it to finish creating your account. 

так мне интересно, как я должен делать или то, что я должен переопределить на DEViSE/Devise_invitable для того, чтобы пропустить этот контроль при попытке войти в систему как пользователь, который уже был подтвержден, но имеет ожидающее приглашение ,

Моя модель Пользователь это одна:

class User 
    include Mongoid::Document 
    include Mongoid::Attributes::Dynamic 
    include Mongoid::Timestamps 
    include Mongoid::Userstamp::User 

    devise :invitable, :encryptable, :database_authenticatable, :registerable, :lockable, :recoverable, :confirmable, :rememberable, :trackable, :validatable, :timeoutable 

has_and_belongs_to_many :groups 

Спасибо!

ответ

0

Хорошо, я получил помощь в devise_invitable ticket Я открыл.

Способ достижения того, о чем я просил, - это переопределить this method на модели пользователя. Таким образом, решение, чтобы позволить подтвердил пользователю войти в систему, даже если он/она в ожидании приглашения заключается в следующем:

class User 
    ... 
    def block_from_invitation? 
    #If the user has not been confirmed yet, we let the usual controls work 
    if confirmed_at.blank? 
     return invited_to_sign_up? 
    else #if the user was confirmed, we let them in (will decide to accept or decline invitation from the dashboard) 
     return false 
    end 
    end 
    ... 
end 

Надежда, что помогает кому-либо еще в будущем.

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