Beispiel #1
0
    def test_navbar_cache_deletion_for_users(self):
        user1 = mommy.make(UserProfile,
                           username='******',
                           email="*****@*****.**")
        user2 = mommy.make(UserProfile,
                           username='******',
                           email="*****@*****.**")

        # create navbar caches for anonymous user, user1 and user2
        self.app.get("/")
        self.app.get("/results/", user='******')
        self.app.get("/results/", user='******')

        cache_key1 = make_template_fragment_key('navbar',
                                                [user1.username, 'en'])
        cache_key2 = make_template_fragment_key('navbar',
                                                [user2.username, 'en'])
        cache_key_anonymous = make_template_fragment_key('navbar', ['', 'en'])

        self.assertIsNotNone(cache.get(cache_key1))
        self.assertIsNotNone(cache.get(cache_key2))
        self.assertIsNotNone(cache.get(cache_key_anonymous))

        delete_navbar_cache_for_users([user2])

        self.assertIsNotNone(cache.get(cache_key1))
        self.assertIsNone(cache.get(cache_key2))
        self.assertIsNotNone(cache.get(cache_key_anonymous))
Beispiel #2
0
def index(request):
    """Main entry page into EvaP providing all the login options available. The OpenID login is thought to be used for
       internal users. The login key mechanism is meant to be used to include external participants, e.g. visiting
       students or visiting contributors. A login with email and password is available if OpenID is deactivated.
    """

    # parse the form data into the respective form
    submit_type = request.POST.get("submit_type", "no_submit")
    new_key_form = NewKeyForm(request.POST if submit_type ==
                              "new_key" else None)
    login_email_form = LoginEmailForm(
        request, request.POST if submit_type == "login_email" else None)

    # process form data
    if request.method == 'POST':
        if new_key_form.is_valid():
            # user wants a new login key
            profile = new_key_form.get_user()
            profile.ensure_valid_login_key()
            profile.save()

            EmailTemplate.send_login_url_to_user(new_key_form.get_user())

            messages.success(
                request,
                _("We sent you an email with a one-time login URL. Please check your inbox."
                  ))
            return redirect('evaluation:index')

        if login_email_form.is_valid():
            # user would like to login with email and password and passed password test
            auth.login(request, login_email_form.get_user())

            # clean up our test cookie
            if request.session.test_cookie_worked():
                request.session.delete_test_cookie()
            return redirect('evaluation:index')

    # if not logged in by now, render form
    if not request.user.is_authenticated:
        # set test cookie to verify whether they work in the next step
        request.session.set_test_cookie()

        template_data = dict(
            new_key_form=new_key_form,
            login_email_form=login_email_form,
            openid_active=settings.ACTIVATE_OPEN_ID_LOGIN,
        )
        return render(request, "index.html", template_data)

    # the cached navbar might contain CSRF tokens that are invalid after a new login
    delete_navbar_cache_for_users([request.user])

    # check for redirect variable
    redirect_to = request.GET.get("next", None)
    if redirect_to is not None:
        return redirect(redirect_to)

    return redirect_user_to_start_page(request.user)
Beispiel #3
0
    def test_navbar_cache_deletion_for_users(self):
        user1 = baker.make(UserProfile, email="*****@*****.**")
        user2 = baker.make(UserProfile, email="*****@*****.**")

        # create navbar caches for anonymous user, user1 and user2
        self.app.get("/")
        self.app.get("/results/", user="******")
        self.app.get("/results/", user="******")

        cache_key1 = make_template_fragment_key("navbar", [user1.email, "en"])
        cache_key2 = make_template_fragment_key("navbar", [user2.email, "en"])
        cache_key_anonymous = make_template_fragment_key("navbar", ["", "en"])

        self.assertIsNotNone(cache.get(cache_key1))
        self.assertIsNotNone(cache.get(cache_key2))
        self.assertIsNotNone(cache.get(cache_key_anonymous))

        delete_navbar_cache_for_users([user2])

        self.assertIsNotNone(cache.get(cache_key1))
        self.assertIsNone(cache.get(cache_key2))
        self.assertIsNotNone(cache.get(cache_key_anonymous))
Beispiel #4
0
    def test_navbar_cache_deletion_for_users(self):
        user1 = mommy.make(UserProfile, username='******', email="*****@*****.**")
        user2 = mommy.make(UserProfile, username='******', email="*****@*****.**")

        # create navbar caches for anonymous user, user1 and user2
        self.app.get("/")
        self.app.get("/results/", user='******')
        self.app.get("/results/", user='******')

        cache_key1 = make_template_fragment_key('navbar', [user1.username, 'en'])
        cache_key2 = make_template_fragment_key('navbar', [user2.username, 'en'])
        cache_key_anonymous = make_template_fragment_key('navbar', ['', 'en'])

        self.assertIsNotNone(cache.get(cache_key1))
        self.assertIsNotNone(cache.get(cache_key2))
        self.assertIsNotNone(cache.get(cache_key_anonymous))

        delete_navbar_cache_for_users([user2])

        self.assertIsNotNone(cache.get(cache_key1))
        self.assertIsNone(cache.get(cache_key2))
        self.assertIsNotNone(cache.get(cache_key_anonymous))
Beispiel #5
0
def after_login_function(request, user, _client):
    delete_navbar_cache_for_users([user])
Beispiel #6
0
def exit_staff_mode(request):
    if is_in_staff_mode(request):
        del request.session['staff_mode_start_time']
        request.session.modified = True
        delete_navbar_cache_for_users([request.user])
Beispiel #7
0
def enter_staff_mode(request):
    update_staff_mode(request)
    delete_navbar_cache_for_users([request.user])