예제 #1
0
파일: auth.py 프로젝트: beesor/relate
def sign_up(request):
    if settings.STUDENT_SIGN_IN_VIEW != "relate-sign_in_by_user_pw":
        raise SuspiciousOperation(
                _("password-based sign-in is not being used"))

    if request.method == 'POST':
        form = SignUpForm(request.POST)
        if form.is_valid():
            if get_user_model().objects.filter(
                    username=form.cleaned_data["username"]).count():
                messages.add_message(request, messages.ERROR,
                        _("A user with that username already exists."))

            elif get_user_model().objects.filter(
                    email__iexact=form.cleaned_data["email"]).count():
                messages.add_message(request, messages.ERROR,
                        _("That email address is already in use. "
                        "Would you like to "
                        "<a href='%s'>reset your password</a> instead?")
                        % reverse(
                            "relate-reset_password")),
            else:
                email = form.cleaned_data["email"]
                user = get_user_model()(
                        email=email,
                        username=form.cleaned_data["username"])

                user.set_unusable_password()
                user.save()

                ustatus = UserStatus(
                        user=user,
                        status=user_status.unconfirmed,
                        sign_in_key=make_sign_in_key(user))

                ustatus.save()

                from django.template.loader import render_to_string
                message = render_to_string("course/sign-in-email.txt", {
                    "user": user,
                    "sign_in_uri": request.build_absolute_uri(
                        reverse(
                            "relate-reset_password_stage2",
                            args=(user.id, ustatus.sign_in_key,))
                        + "?to_profile=1"),
                    "home_uri": request.build_absolute_uri(
                        reverse("relate-home"))
                    })

                from django.core.mail import send_mail
                send_mail(
                        string_concat("[", _("RELATE"), "] ",
                                     _("Verify your email")),
                        message,
                        settings.ROBOT_EMAIL_FROM,
                        recipient_list=[email])

                messages.add_message(request, messages.INFO,
                        _("Email sent. Please check your email and click "
                        "the link."))

                return redirect("relate-home")

    else:
        form = SignUpForm()

    return render(request, "generic-form.html", {
        "form_description": _("Sign up"),
        "form": form
        })
예제 #2
0
파일: auth.py 프로젝트: gboone/relate
def sign_up(request):
    if settings.STUDENT_SIGN_IN_VIEW != "relate-sign_in_by_user_pw":
        raise SuspiciousOperation(
            _("password-based sign-in is not being used"))

    if request.method == 'POST':
        form = SignUpForm(request.POST)
        if form.is_valid():
            from django.contrib.auth.models import User

            if User.objects.filter(
                    username=form.cleaned_data["username"]).count():
                messages.add_message(request, messages.ERROR,
                                     _("That user name is already taken."))

            elif User.objects.filter(
                    email__iexact=form.cleaned_data["email"]).count():
                messages.add_message(
                    request, messages.ERROR,
                    _("That email address is already in use. "
                      "Would you like to "
                      "<a href='%s'>reset your password</a> instead?") %
                    reverse("relate-reset_password")),
            else:
                email = form.cleaned_data["email"]
                user = User(email=email,
                            username=form.cleaned_data["username"])

                user.set_unusable_password()
                user.save()

                ustatus = UserStatus(user=user,
                                     status=user_status.unconfirmed,
                                     sign_in_key=make_sign_in_key(user))

                ustatus.save()

                from django.template.loader import render_to_string
                message = render_to_string(
                    "course/sign-in-email.txt", {
                        "user":
                        user,
                        "sign_in_uri":
                        request.build_absolute_uri(
                            reverse("relate-reset_password_stage2",
                                    args=(
                                        user.id,
                                        ustatus.sign_in_key,
                                    )) + "?to_profile=1"),
                        "home_uri":
                        request.build_absolute_uri(reverse("relate-home"))
                    })

                from django.core.mail import send_mail
                send_mail(string_concat("[", _("RELATE"), "] ",
                                        _("Verify your email")),
                          message,
                          settings.ROBOT_EMAIL_FROM,
                          recipient_list=[email])

                messages.add_message(
                    request, messages.INFO,
                    _("Email sent. Please check your email and click "
                      "the link."))

                return redirect("relate-home")

    else:
        form = SignUpForm()

    return render(request, "generic-form.html", {
        "form_description": _("Sign up"),
        "form": form
    })
예제 #3
0
파일: auth.py 프로젝트: hsingh23/courseflow
def sign_in_by_email(request):
    if settings.STUDENT_SIGN_IN_VIEW != "course.auth.sign_in_by_email":
        raise SuspiciousOperation("email-based sign-in is not being used")

    if request.method == 'POST':
        form = SignInByEmailForm(request.POST)
        if form.is_valid():
            from django.contrib.auth.models import User

            email = form.cleaned_data["email"]
            users = User.objects.filter(email__iexact=email)

            if users.count() > 1:
                messages.add_message(request, messages.ERROR,
                        "More than one user with this email. "
                        "Please contact site staff.")
                raise PermissionDenied("duplicate email")

            if users.count() == 0:
                user = User()
                user.username = email
                user.email = email
                user.set_unusable_password()
                user.save()

                ustatus = UserStatus()
                ustatus.user = user
                ustatus.status = user_status.unconfirmed
                ustatus.sign_in_key = make_sign_in_key(user)
                ustatus.save()

            elif users.count() == 1:
                user, = users
                ustatus = user.user_status
                ustatus.user = user
                ustatus.sign_in_key = make_sign_in_key(user)
                ustatus.save()

            from django.template.loader import render_to_string
            message = render_to_string("course/sign-in-email.txt", {
                "user": user,
                "sign_in_uri": request.build_absolute_uri(
                    reverse(
                        "course.auth.sign_in_stage2_with_token",
                        args=(user.id, ustatus.sign_in_key,))),
                "home_uri": request.build_absolute_uri(reverse("course.views.home"))
                })
            from django.core.mail import send_mail
            send_mail("Your CourseFlow sign-in link", message,
                    settings.ROBOT_EMAIL_FROM, recipient_list=[email])

            messages.add_message(request, messages.INFO,
                    "Email sent. Please check your email and click the link.")

            return redirect("course.views.home")
    else:
        form = SignInByEmailForm()

    return render(request, "course/login-by-email.html", {
        "form_description": "",
        "form": form
        })