mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	auth: Include user_id in the params returned at the end of mobile flow.
The user id is a very useful piece of information that the mobile client should have access to - instead of only getting the email. This makes it much simpler to impleent clients that might be robust to changes in email address.
This commit is contained in:
		
				
					committed by
					
						
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							9e979e9e66
						
					
				
				
					commit
					0abbb87155
				
			@@ -20,6 +20,12 @@ format used by the Zulip server that they are interacting with.
 | 
			
		||||
 | 
			
		||||
## Changes in Zulip 5.0
 | 
			
		||||
 | 
			
		||||
**Feature level 108**
 | 
			
		||||
 | 
			
		||||
* In the mobile application authentication flow, the authenticated
 | 
			
		||||
  user's `user_id` is now included in the parameters encoded in the
 | 
			
		||||
  final `zulip://` redirect URL.
 | 
			
		||||
 | 
			
		||||
**Feature level 107**
 | 
			
		||||
* [`POST /register`](/api/register-queue), [`PATCH /settings`](/api/update-settings),
 | 
			
		||||
  [`PATCH /realm/user_settings_defaults`](/api/update-realm-user-settings-defaults):
 | 
			
		||||
 
 | 
			
		||||
@@ -33,7 +33,7 @@ DESKTOP_WARNING_VERSION = "5.4.3"
 | 
			
		||||
# Changes should be accompanied by documentation explaining what the
 | 
			
		||||
# new level means in templates/zerver/api/changelog.md, as well as
 | 
			
		||||
# "**Changes**" entries in the endpoint's documentation in `zulip.yaml`.
 | 
			
		||||
API_FEATURE_LEVEL = 107
 | 
			
		||||
API_FEATURE_LEVEL = 108
 | 
			
		||||
 | 
			
		||||
# Bump the minor PROVISION_VERSION to indicate that folks should provision
 | 
			
		||||
# only when going from an old version of the code to a newer version. Bump
 | 
			
		||||
 
 | 
			
		||||
@@ -1200,7 +1200,10 @@ class SocialAuthBase(DesktopFlowTestingLib, ZulipTestCase):
 | 
			
		||||
 | 
			
		||||
    def test_social_auth_mobile_success(self) -> None:
 | 
			
		||||
        mobile_flow_otp = "1234abcd" * 8
 | 
			
		||||
        account_data_dict = self.get_account_data_dict(email=self.email, name="Full Name")
 | 
			
		||||
        hamlet = self.example_user("hamlet")
 | 
			
		||||
        account_data_dict = self.get_account_data_dict(
 | 
			
		||||
            email=hamlet.delivery_email, name="Full Name"
 | 
			
		||||
        )
 | 
			
		||||
        self.assert_length(mail.outbox, 0)
 | 
			
		||||
        self.user_profile.date_joined = timezone_now() - datetime.timedelta(
 | 
			
		||||
            seconds=JUST_CREATED_THRESHOLD + 1
 | 
			
		||||
@@ -1231,7 +1234,9 @@ class SocialAuthBase(DesktopFlowTestingLib, ZulipTestCase):
 | 
			
		||||
        query_params = urllib.parse.parse_qs(parsed_url.query)
 | 
			
		||||
        self.assertEqual(parsed_url.scheme, "zulip")
 | 
			
		||||
        self.assertEqual(query_params["realm"], ["http://zulip.testserver"])
 | 
			
		||||
        self.assertEqual(query_params["email"], [self.example_email("hamlet")])
 | 
			
		||||
        self.assertEqual(query_params["email"], [hamlet.delivery_email])
 | 
			
		||||
        self.assertEqual(query_params["user_id"], [str(hamlet.id)])
 | 
			
		||||
 | 
			
		||||
        encrypted_api_key = query_params["otp_encrypted_api_key"][0]
 | 
			
		||||
        hamlet_api_keys = get_all_api_keys(self.example_user("hamlet"))
 | 
			
		||||
        self.assertIn(otp_decrypt_api_key(encrypted_api_key, mobile_flow_otp), hamlet_api_keys)
 | 
			
		||||
 
 | 
			
		||||
@@ -382,6 +382,7 @@ def create_response_for_otp_flow(
 | 
			
		||||
    params = {
 | 
			
		||||
        encrypted_key_field_name: otp_encrypt_api_key(key, otp),
 | 
			
		||||
        "email": user_profile.delivery_email,
 | 
			
		||||
        "user_id": user_profile.id,
 | 
			
		||||
        "realm": realm_uri,
 | 
			
		||||
    }
 | 
			
		||||
    # We can't use HttpResponseRedirect, since it only allows HTTP(S) URLs
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user