async def _add_user_to_request(request): if DB.is_closed(): DB.connect() if 'admintoken' in request['args']: user = User.get('admin_token', request['args']['admintoken']) if user is None: return None request['user'] = user else: sid = request.cookies.get(_SESSION_COOKIE_NAME, 'invalid') session_or_none: Session = Session.get('session_id', sid) if session_or_none is None: return None request['user'] = User.get('user_id', session_or_none.user_id) request['session_id'] = session_or_none.session_id
def create_user(user_id, password='******', third_party_info=None, **user_attributes): """Create user, depending on global settings this will be in production or info DB.""" user = User( **{ 'user_id': user_id.lower(), 'password': password, 'third_party_info': third_party_info, **user_attributes }) user.save() info("User %s created successfully, with token: %s", user_id, user.token) return user
def third_party(user_id): """Delete user, depending on global settings this will be in production or debug DB.""" user = User.get('user_id', user_id) if user is None: print("User not found") return print(user.third_party_info['email'])
def _login(request): login = required_parameter(request, 'login') password = required_parameter(request, 'password') user = User.get('user_id', login) if user is None or not user.verify_password(password): raise UserException(INVALID_CREDENTIALS_TEXT) session_obj: Session = Session.create(user_id=user.user_id) request['session_id'] = session_obj.session_id return {'message': VALID_CREDENTIALS_TEXT, 'sessionId': session_obj.session_id, 'adminToken': user.admin_token}
def test_user_creation(): try: del_user = User.get('user_id', 'fake-id') del_user.delete_instance() except: pass user = User(user_id='fake-id', password='******') user.save() test_user = User.get('user_id', 'fake-id') assert user == test_user user.delete_instance()
def upsert_login_redirect(request, user_id: str, third_party_info: dict, success_cb: str, adapter): debug('Login', user_id, 'with', third_party_info, success_cb) user_or_none: User = User.get('user_id', user_id) if user_or_none is None: user_or_none = create_user(user_id=user_id, password=str(token_urlsafe()), third_party_info=third_party_info) session_obj: Session = Session.create(user_id=user_or_none.user_id) request['session_id'] = session_obj.session_id return redirect(success_cb)
def test_delete_user(): try: del_user = User.get('user_id', 'fake-id') del_user.delete_instance() except: pass user = User(user_id='fake-id', password='******') user.save() print(user.__dict__) user.delete_instance() test_user = User.get('user_id', 'fake-id') assert test_user is None
def delete_all_user_data(user_id): """Delete user, depending on global settings this will be in production or info DB.""" user = User.get('user_id', user_id) if user is None: raise UserException(ERROR_USER_DOES_NOT_EXIST % user_id) documents = DocumentStore.get_documents(user.token) for document in documents: DocumentStore.delete_document(user.token, document['id']) saved_replies = AnnotationStore.get_annotations(user.token, saved_replies=True) for saved_reply in saved_replies: AnnotationStore.delete_annotation(user.token, saved_reply['id']) annotations = AnnotationStore.get_annotations(user.token, saved_replies=False) for annotation in annotations: AnnotationStore.delete_annotation(user.token, annotation['id']) user.delete_instance() info("User " + user_id + " data deleted successfully") info("Looking for session data") del_counter = 0 sessions = Session.all('user_id', user_id) for session in sessions: session.delete_instance() del_counter += 1 info("Deleted " + str(del_counter) + " sessions") del_counter = 0 events = Event.all('user_id', user_id) for event in events: event.delete_instance() del_counter += 1 info("Deleted " + str(del_counter) + " events") del_counter = 0 bots = Bot.all('user_id', user_id) for bot in bots: bot.delete_instance() del_counter += 1 info("Deleted " + str(del_counter) + " bots") del_counter = 0 coverage_entries = Coverage.all('user_id', user_id) for coverage in coverage_entries: coverage.delete_instance() del_counter += 1 info("Deleted " + str(del_counter) + " coveragae entries") del_counter = 0 email_events = EmailEvent.all('user_id', user_id) for event in email_events: event.delete_instance() del_counter += 1 info("Deleted " + str(del_counter) + " email events")
def decorated(request, *args, **kwargs): token = optional_parameter(request, 'token', None) if token is None: if 'user' in request: request['user_from_token'] = request['user'] request['args']['token'] = request['user'].token return wrapped(request, *args, **kwargs) else: required_parameter(request, 'token') user = User.get('token', token) if user is not None: request['user_from_token'] = user return wrapped(request, *args, **kwargs) else: raise UserException(INVALID_TOKEN % token)
def test_unique_user(): try: del_user = User.get('user_id', 'fake-id') del_user.delete_instance() except: pass user = User(user_id='fake-id', password='******') user.save() with pytest.raises(IntegrityError): duplicate_user = User(user_id='fake-id', password='******') duplicate_user.save() user.delete_instance()