2013-03-06 4 views
4

У меня есть приложение для флиса python, использующее mongoengine и flask-security, созданный из примеров, чтобы выявить все функции подтверждения, регистрации, отслеживания и восстановления.Как подтвердить пользователя, созданного create_user в приложении для хранения флагов mongoengine?

Все работает за исключением того, что пользователь создал императивно в коде с помощью:

MongoEngineUserDatastore.create_user(...) 

не может войти в систему. То есть, когда вы пытаетесь войти в системе с этим пользователем, вы получите сообщение об ошибке:

"Email requires confirmation" 

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

Here «s мой код:

ответ

5

Я понял это, подтвердив вновь зарегистрированных пользователей и изучение MongoDB, чтобы увидеть какие поля были добавлены. Оказывается, что искомое поле для подтверждения является confirmed_at, которые должны быть DateTime так:

import datetime 

# Create a user to test with 
@app.before_first_request 
def create_user(): 
    user_datastore.create_user(
     email='[email protected]', 
     password=utils.encrypt_password('password'), 
     confirmed_at=datetime.datetime.now()) 

Я обновил суть здесь:

https://gist.github.com/davidthewatson/327776905ef30815c138

+0

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

+1

Я хотел бы отметить это, как ответил. К сожалению, SO не позволяет мне отмечать его в течение двух дней по причинам, которые выходят за рамки меня. –

1

При создании тестового пользователя, нужно сделать их активными, например:

@app.before_first_request 
def create_user(): 
    user_datastore.create_user(
     email='[email protected]', 
     password=utils.encrypt_password('password'), 
     active=True) 
+0

Спасибо за ваш ответ, Росс. К сожалению, это не сработало. Он установил активный флаг true, который можно увидеть в этом результате запроса mongo:> db.user.find() {"_id": ObjectId ("513755fd0d3085357eef0fff"), "_types": ["User"], "role ": []," _cls ":" Пользователь "," активный ": true," password ":" $ 2a $ 12 $ aeT/0Nb9mtQ/hAPAIwoG7.9Q27P9ytz/guDXhE7KbpksskwRZeXCC "," email ":" [email protected] " } , но при входе в систему все еще не удается выполнить «Подтверждение электронной почты». –

+0

Активный флаг предназначен для ввода флэшек. – nycynik