def authenticate_user(**kwargs): """ Display user forms prefilled with data from mojeID """ request = kwargs['request'] openid_response = kwargs['openid_response'] redirect_to = kwargs['redirect'] user_model = get_user_model() # Get the user try: # Authenticate user user_openid = UserOpenID.objects.get( claimed_id__exact=openid_response.identity_url) try: user = user_model.objects.get(pk=user_openid.user_id) if OpenIDBackend.is_user_authenticated(user): OpenIDBackend.associate_user_with_session(request, user) except user_model.DoesNotExist: pass # Update all updatable attributes #attrs = OpenIDBackend.update_user_from_openid(user_id, openid_response) # Or Just display the updatable attributes to be updated attrs = OpenIDBackend.get_model_changes(openid_response, only_updatable=True) # Set url path path = reverse(display_user) except UserOpenID.DoesNotExist: # Create user # Get attributes for the new User model attrs = OpenIDBackend.get_model_changes(openid_response) # Set url path path = reverse(new_user) # set the params for redirect qd = QueryDict('').copy() params = attrs.get(get_user_model(), {}) params['next'] = redirect_to if 'user_id_field_name' in params: del params['user_id_field_name'] qd.update(params) # TODO claimed_id as a param! url = "%s?%s" % (path, qd.urlencode()) return redirect(url)
def associate_user(**kwargs): """ Display associate forms prefilled with data from mojeID """ request = kwargs['request'] openid_response = kwargs['openid_response'] redirect_to = kwargs['redirect'] claimed_id = openid_response.endpoint.claimed_id user_associated = None claimed_associated = None # Check whether the claimed_id is already associated if UserOpenID.objects.filter(claimed_id__exact=claimed_id).exists(): path = reverse(display_disassociate) user_associated = User.objects.get(pk=UserOpenID.objects.get( claimed_id__exact=claimed_id).user_id) else: if UserOpenID.objects.filter(user_id=request.user.id).exists(): path = reverse(display_disassociate) claimed_associated = UserOpenID.objects.get( user_id=request.user.id).claimed_id else: path = reverse(display_associate) # Associate the user #OpenIDBackend.associate_openid_response(request.user, openid_response) # Update all updatable attributes #attrs = OpenIDBackend.update_user_from_openid(user_id, openid_response) # Or Just display the updatable attributes to be updated attrs = OpenIDBackend.get_model_changes(openid_response, only_updatable=True) # set the params for redirect qd = QueryDict('').copy() params = attrs.get(User, {}) params['next'] = redirect_to params['claimed_id'] = claimed_id if user_associated: params['user_associated'] = user_associated if claimed_associated: params['claimed_associated'] = claimed_associated if 'user_id_field_name' in params: del params['user_id_field_name'] qd.update(params) url = "%s?%s" % (path, qd.urlencode()) return redirect(url)
def associate_user(**kwargs): """ Display associate forms prefilled with data from mojeID """ request = kwargs['request'] openid_response = kwargs['openid_response'] redirect_to = kwargs['redirect'] claimed_id = openid_response.endpoint.claimed_id user_associated = None claimed_associated = None # Check whether the claimed_id is already associated if UserOpenID.objects.filter(claimed_id__exact=claimed_id).exists(): path = reverse(display_disassociate) user_associated = User.objects.get(pk=UserOpenID.objects.get( claimed_id__exact=claimed_id).user_id) else: if UserOpenID.objects.filter(user_id=request.user.id).exists(): path = reverse(display_disassociate) claimed_associated = UserOpenID.objects.get(user_id=request.user.id).claimed_id else: path = reverse(display_associate) # Associate the user #OpenIDBackend.associate_openid_response(request.user, openid_response) # Update all updatable attributes #attrs = OpenIDBackend.update_user_from_openid(user_id, openid_response) # Or Just display the updatable attributes to be updated attrs = OpenIDBackend.get_model_changes(openid_response, only_updatable=True) # set the params for redirect qd = QueryDict('').copy() params = attrs.get(User, {}) params['next'] = redirect_to params['claimed_id'] = claimed_id if user_associated: params['user_associated'] = user_associated if claimed_associated: params['claimed_associated'] = claimed_associated if 'user_id_field_name' in params: del params['user_id_field_name'] qd.update(params) url = "%s?%s" % (path, qd.urlencode()) return redirect(url)