def send_confirmation_mail(self, request, emailconfirmation, signup):
     current_site = get_current_site(request)
     activate_url = self.get_email_confirmation_url(
         request,
         emailconfirmation)
     badgr_app = get_session_badgr_app(request)
     if not badgr_app:
         badgr_app = BadgrApp.objects.get_current(request, raise_exception=False)
     ctx = {
         "user": emailconfirmation.email_address.user,
         "email": emailconfirmation.email_address,
         "activate_url": activate_url,
         "current_site": current_site,
         "key": emailconfirmation.key,
         "badgr_app": badgr_app
     }
     if signup == 'canvas':
         email_template = 'account/email/email_confirmation_canvas'
     elif signup:
         email_template = 'account/email/email_confirmation_signup'
     else:
         email_template = 'account/email/email_confirmation'
     get_adapter().send_mail(email_template,
                             emailconfirmation.email_address.email,
                             ctx)
 def send_confirmation_mail(self, request, emailconfirmation, signup):
     current_site = get_current_site(request)
     activate_url = self.get_email_confirmation_url(
         request,
         emailconfirmation)
     badgr_app = get_session_badgr_app(request)
     if not badgr_app:
         badgr_app = BadgrApp.objects.get_current(request, raise_exception=False)
     ctx = {
         "user": emailconfirmation.email_address.user,
         "email": emailconfirmation.email_address,
         "activate_url": activate_url,
         "current_site": current_site,
         "key": emailconfirmation.key,
         "badgr_app": badgr_app
     }
     if signup == 'canvas':
         email_template = 'account/email/email_confirmation_canvas'
     elif signup:
         email_template = 'account/email/email_confirmation_signup'
     else:
         email_template = 'account/email/email_confirmation'
     get_adapter().send_mail(email_template,
                             emailconfirmation.email_address.email,
                             ctx)
Beispiel #3
0
    def pre_social_login(self, request, sociallogin):
        """
        Retrieve and verify (again) auth token that was provided with initial connect request.  Store as request.user,
        as required for socialauth connect logic.
        """
        self._update_session(request, sociallogin)
        try:
            authcode = get_session_authcode(request)
            if authcode is not None:
                accesstoken = accesstoken_for_authcode(authcode)
                if not accesstoken:
                    raise ImmediateHttpResponse(HttpResponseForbidden())

                request.user = accesstoken.user
                if sociallogin.is_existing and accesstoken.user != sociallogin.user:
                    badgr_app = get_session_badgr_app(self.request)
                    redirect_url = "{url}?authError={message}".format(
                        url=badgr_app.ui_connect_success_redirect,
                        message=urllib.quote(
                            "Could not add social login. This account is already associated with a user."
                        ))
                    raise ImmediateHttpResponse(
                        HttpResponseRedirect(redirect_to=redirect_url))
        except AuthenticationFailed as e:
            raise ImmediateHttpResponse(HttpResponseForbidden(e.detail))
Beispiel #4
0
 def get_redirect_url(self):
     badgr_app = get_session_badgr_app(self.request)
     if badgr_app is not None:
         return set_url_query_params(
             badgr_app.ui_login_redirect,
             authError=
             'An account already exists with provided email address')
Beispiel #5
0
 def login(self, request, user):
     """
     Preserve badgr_app session data across Django login() boundary
     """
     badgr_app = get_session_badgr_app(request)
     ret = super(BadgrAccountAdapter, self).login(request, user)
     set_session_badgr_app(request, badgr_app)
     return ret
 def login(self, request, user):
     """
     Preserve badgr_app session data across Django login() boundary
     """
     badgr_app = get_session_badgr_app(request)
     ret = super(BadgrAccountAdapter, self).login(request, user)
     set_session_badgr_app(request, badgr_app)
     return ret
Beispiel #7
0
    def get_redirect_url(self):
        badgr_app = get_session_badgr_app(self.request)
        verification_email = get_session_verification_email(self.request)

        if verification_email is not None:
            verification_email = urllib.quote(verification_email.encode('utf-8'))
        else:
            verification_email = ''

        if badgr_app is not None:
            return urlparse.urljoin(badgr_app.ui_signup_success_redirect.rstrip('/') + '/', verification_email)
Beispiel #8
0
    def get_redirect_url(self):
        badgr_app = get_session_badgr_app(self.request)
        verification_email = get_session_verification_email(self.request)

        if verification_email is not None:
            verification_email = urllib.parse.quote(verification_email.encode('utf-8'))
        else:
            verification_email = ''

        if badgr_app is not None:
            return urllib.parse.urljoin(badgr_app.ui_signup_success_redirect.rstrip('/') + '/', verification_email)
    def login(self, request, user):
        """
        Preserve badgr_app session data across Django login() boundary
        """
        badgr_app = get_session_badgr_app(request)

        if badgr_app is None:
            url = request.build_absolute_uri()
            print(('Badgr app is none in login {}'.format(url)))
        ret = super(BadgrAccountAdapter, self).login(request, user)
        set_session_badgr_app(request, badgr_app)
        return ret
Beispiel #10
0
 def authentication_error(self,
                          request,
                          provider_id,
                          error=None,
                          exception=None,
                          extra_context=None):
     badgr_app = get_session_badgr_app(self.request)
     redirect_url = "{url}?authError={message}".format(
         url=badgr_app.ui_login_redirect,
         message=urllib.quote("Authentication error"))
     raise ImmediateHttpResponse(
         HttpResponseRedirect(redirect_to=redirect_url))
Beispiel #11
0
    def get_login_redirect_url(self, request):
        """
        If successfully logged in, redirect to the front-end, including an authToken query parameter.
        """
        if request.user.is_authenticated():
            badgr_app = get_session_badgr_app(request)

            if badgr_app is not None:
                return set_url_query_params(badgr_app.ui_login_redirect,
                                            authToken=request.user.auth_token)
        else:
            return '/'
Beispiel #12
0
 def authentication_error(self,
                          request,
                          provider_id,
                          error=None,
                          exception=None,
                          extra_context={}):
     badgr_app = get_session_badgr_app(self.request)
     extra_context["authError"] = error
     if "code" not in extra_context:
         extra_context["code"] = AuthErrorCode.UNKNOWN_CODE
     args = urllib.parse.urlencode(extra_context)
     redirect_url = f"{badgr_app.ui_login_redirect}?{args}"
     raise ImmediateHttpResponse(
         HttpResponseRedirect(redirect_to=redirect_url))
Beispiel #13
0
    def pre_social_login(self, request, sociallogin):
        """
        Retrieve and verify (again) auth token that was provided with initial connect request.  Store as request.user,
        as required for socialauth connect logic.
        """
        self._update_session(request, sociallogin)
        try:
            authcode = get_session_authcode(request)
            if authcode is not None:
                accesstoken = accesstoken_for_authcode(authcode)
                if not accesstoken:
                    raise ImmediateHttpResponse(HttpResponseForbidden())

                request.user = accesstoken.user
                if sociallogin.is_existing and accesstoken.user != sociallogin.user:
                    badgr_app = get_session_badgr_app(self.request)
                    redirect_url = "{url}?authError={message}".format(
                        url=badgr_app.ui_connect_success_redirect,
                        message=urllib.quote("Could not add social login. This account is already associated with a user."))
                    raise ImmediateHttpResponse(HttpResponseRedirect(redirect_to=redirect_url))
        except AuthenticationFailed as e:
            raise ImmediateHttpResponse(HttpResponseForbidden(e.detail))
    def get_login_redirect_url(self, request):
        """
        If successfully logged in, redirect to the front-end, including an authToken query parameter.
        """
        if request.user.is_authenticated():
            badgr_app = get_session_badgr_app(request)

            if badgr_app is not None:
                accesstoken = BadgrAccessToken.objects.generate_new_token_for_user(
                    request.user,
                    application=badgr_app.oauth_application if badgr_app.oauth_application_id else None,
                    scope='rw:backpack rw:profile rw:issuer')

                if badgr_app.use_auth_code_exchange:
                    authcode = authcode_for_accesstoken(accesstoken)
                    params = dict(authCode=authcode)
                else:
                    params = dict(authToken=accesstoken.token)

                return set_url_query_params(badgr_app.ui_login_redirect, **params)
        else:
            return '/'
    def get_login_redirect_url(self, request):
        """
        If successfully logged in, redirect to the front-end, including an authToken query parameter.
        """
        if request.user.is_authenticated:
            badgr_app = get_session_badgr_app(request)

            if badgr_app is not None:
                accesstoken = BadgrAccessToken.objects.generate_new_token_for_user(
                    request.user,
                    application=badgr_app.oauth_application if badgr_app.oauth_application_id else None,
                    scope='rw:backpack rw:profile rw:issuer')

                if badgr_app.use_auth_code_exchange:
                    authcode = authcode_for_accesstoken(accesstoken)
                    params = dict(authCode=authcode)
                else:
                    params = dict(authToken=accesstoken.token)

                return set_url_query_params(badgr_app.ui_login_redirect, **params)
        else:
            return '/'
Beispiel #16
0
 def get_redirect_url(self):
     badgr_app = get_session_badgr_app(self.request)
     if badgr_app is not None:
         return set_url_query_params(badgr_app.ui_login_redirect,
                                     authError='An account already exists with provided email address')
Beispiel #17
0
 def get_redirect_url(self):
     badgr_app = get_session_badgr_app(self.request)
     if badgr_app is not None:
         return set_url_query_params(badgr_app.ui_connect_success_redirect)
Beispiel #18
0
 def get_redirect_url(self):
     badgr_app = get_session_badgr_app(self.request)
     if badgr_app is not None:
         return set_url_query_params(badgr_app.ui_connect_success_redirect)
Beispiel #19
0
 def authentication_error(self, request, provider_id, error=None, exception=None, extra_context=None):
     badgr_app = get_session_badgr_app(self.request)
     redirect_url = "{url}?authError={message}".format(
         url=badgr_app.ui_login_redirect,
         message=urllib.quote("Authentication error"))
     raise ImmediateHttpResponse(HttpResponseRedirect(redirect_to=redirect_url))