Пример #1
0
def authenticate_two_factor(user):
    """Begins authentication for two factor auth users

    :param user: User to be authenticated
    :return: Response object directed to two-factor view
    """
    data = session.data if session._get_current_object() else {}
    data.update({
        'two_factor_auth': {
            'auth_user_username': user.username,
            'auth_user_id': user._primary_key,
            'auth_user_fullname': user.fullname,
        }
    })

    # Redirect to collect two factor code from user
    next_url = data.get('next_url', False)

    # NOTE: Avoid circular import /hrybacki
    from website.util import web_url_for
    if next_url:
        response = redirect(web_url_for('two_factor', next=next_url))
    else:
        response = redirect(web_url_for('two_factor'))
    response = create_session(response, data)
    return response
Пример #2
0
def external_first_login_authenticate(user, response):
    """
    Create a special unauthenticated session for user login through external identity provider for the first time.

    :param user: the user with external credential
    :param response: the response to return
    :return: the response
    """

    data = session.data if session._get_current_object() else {}
    data.update({
        'auth_user_external_id_provider': user['external_id_provider'],
        'auth_user_external_id': user['external_id'],
        'auth_user_fullname': user['fullname'],
        'auth_user_access_token': user['access_token'],
        'auth_user_external_first_login': True,
        'service_url': user['service_url'],
    })
    user_identity = '{}#{}'.format(user['external_id_provider'],
                                   user['external_id'])
    print_cas_log(
        f'Finalizing first-time login from external IdP - data updated: user=[{user_identity}]',
        LogLevel.INFO,
    )
    response = create_session(response, data=data)
    print_cas_log(
        f'Finalizing first-time login from external IdP - anonymous session created: user=[{user_identity}]',
        LogLevel.INFO,
    )
    return response
Пример #3
0
def authenticate(user, response):
    data = session.data if session._get_current_object() else {}
    data.update({
        'auth_user_username': user.username,
        'auth_user_id': user._primary_key,
        'auth_user_fullname': user.fullname,
    })
    response = create_session(response, data=data)
    return response
Пример #4
0
def authenticate(user, response):
    data = session.data if session._get_current_object() else {}
    data.update({
        'auth_user_username': user.username,
        'auth_user_id': user._primary_key,
        'auth_user_fullname': user.fullname,
    })
    response = create_session(response, data=data)
    return response
Пример #5
0
def authenticate(user, access_token, response):
    data = session.data if session._get_current_object() else {}
    data.update({
        'auth_user_username': user.username,
        'auth_user_id': user._primary_key,
        'auth_user_fullname': user.fullname,
        'auth_user_access_token': access_token,
    })
    user.date_last_login = datetime.utcnow()
    user.save()
    response = create_session(response, data=data)
    return response
Пример #6
0
def authenticate(user, access_token, response):
    data = session.data if session._get_current_object() else {}
    data.update({
        'auth_user_username': user.username,
        'auth_user_id': user._primary_key,
        'auth_user_fullname': user.fullname,
        'auth_user_access_token': access_token,
    })
    user.date_last_login = datetime.utcnow()
    user.save()
    response = create_session(response, data=data)
    return response
Пример #7
0
def authenticate(user, access_token, response):
    data = session.data if session._get_current_object() else {}
    data.update({
        'auth_user_username': user.username,
        'auth_user_id': user._primary_key,
        'auth_user_fullname': user.fullname,
        'auth_user_access_token': access_token,
    })
    user.date_last_login = datetime.utcnow()
    user.clean_email_verifications()
    user.update_affiliated_institutions_by_email_domain()
    user.save()
    response = create_session(response, data=data)
    return response
Пример #8
0
def authenticate(user, access_token, response):
    data = session.data if session._get_current_object() else {}
    data.update({
        'auth_user_username': user.username,
        'auth_user_id': user._primary_key,
        'auth_user_fullname': user.fullname,
        'auth_user_access_token': access_token,
    })
    user.update_date_last_login()
    user.clean_email_verifications()
    user.update_affiliated_institutions_by_email_domain()
    user.save()
    response = create_session(response, data=data)
    return response
Пример #9
0
def external_first_login_authenticate(user, response):
    """
    Create a special unauthenticated session for user login through external identity provider for the first time.

    :param user: the user with external credential
    :param response: the response to return
    :return: the response
    """

    data = session.data if session._get_current_object() else {}
    data.update({
        'auth_user_external_id_provider': user['external_id_provider'],
        'auth_user_external_id': user['external_id'],
        'auth_user_fullname': user['fullname'],
        'auth_user_access_token': user['access_token'],
        'auth_user_external_first_login': True,
    })
    response = create_session(response, data=data)
    return response
Пример #10
0
def external_first_login_authenticate(user, response):
    """
    Create a special unauthenticated session for user login through external identity provider for the first time.

    :param user: the user with external credential
    :param response: the response to return
    :return: the response
    """

    data = session.data if session._get_current_object() else {}
    data.update({
        'auth_user_external_id_provider': user['external_id_provider'],
        'auth_user_external_id': user['external_id'],
        'auth_user_fullname': user['fullname'],
        'auth_user_access_token': user['access_token'],
        'auth_user_external_first_login': True,
    })
    response = create_session(response, data=data)
    return response
Пример #11
0
def authenticate_two_factor(user):
    """Begins authentication for two factor auth users

    :param user: User to be authenticated
    :return: Response object directed to two-factor view
    """
    data = session.data if session._get_current_object() else {}
    data.update({'two_factor_auth': {
        'auth_user_username': user.username,
        'auth_user_id': user._primary_key,
        'auth_user_fullname': user.fullname,
    }})

    # Redirect to collect two factor code from user
    next_url = data.get('next_url', False)

    # NOTE: Avoid circular import /hrybacki
    from website.util import web_url_for
    if next_url:
        response = redirect(web_url_for('two_factor', next=next_url))
    else:
        response = redirect(web_url_for('two_factor'))
    response = create_session(response, data)
    return response
Пример #12
0
def authenticate(user, access_token, response, user_updates=None):
    data = session.data if session._get_current_object() else {}
    data.update({
        'auth_user_username': user.username,
        'auth_user_id': user._primary_key,
        'auth_user_fullname': user.fullname,
        'auth_user_access_token': access_token,
    })
    print_cas_log(
        f'Finalizing authentication - data updated: user=[{user._id}]',
        LogLevel.INFO)
    enqueue_task(
        update_user_from_activity.s(user._id,
                                    timezone.now().timestamp(),
                                    cas_login=True,
                                    updates=user_updates))
    print_cas_log(
        f'Finalizing authentication - user update queued: user=[{user._id}]',
        LogLevel.INFO)
    response = create_session(response, data=data)
    print_cas_log(
        f'Finalizing authentication - session created: user=[{user._id}]',
        LogLevel.INFO)
    return response