mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +00:00 
			
		
		
		
	invite: Add option to invite user as guest.
This completes our basic guest user feature. Fixes: #10818.
This commit is contained in:
		
				
					committed by
					
						
						Tim Abbott
					
				
			
			
				
	
			
			
			
						parent
						
							42c262b807
						
					
				
				
					commit
					efb9128aaa
				
			@@ -21,6 +21,7 @@
 | 
			
		||||
                        <select id="invite_as">
 | 
			
		||||
                            <option name="invite_as" value="{{ invite_as.MEMBER }}">{{ _('Members') }}</option>
 | 
			
		||||
                            <option name="invite_as" value="{{ invite_as.REALM_ADMIN }}">{{ _('Organization administrators') }}</option>
 | 
			
		||||
                            <option name="invite_as" value="{{ invite_as.GUEST_USER }}">{{ _('Guest users') }}</option>
 | 
			
		||||
                        </select>
 | 
			
		||||
                    </div>
 | 
			
		||||
                </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -727,6 +727,7 @@ class InviteUserTest(InviteUserBase):
 | 
			
		||||
        self.submit_reg_form_for_user(invitee, "password")
 | 
			
		||||
        invitee_profile = self.nonreg_user('alice')
 | 
			
		||||
        self.assertTrue(invitee_profile.is_realm_admin)
 | 
			
		||||
        self.assertFalse(invitee_profile.is_guest)
 | 
			
		||||
 | 
			
		||||
    def test_invite_user_as_admin_from_normal_account(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
@@ -749,6 +750,30 @@ class InviteUserTest(InviteUserBase):
 | 
			
		||||
        response = self.invite(invitee, ["Denmark"], invite_as=100)
 | 
			
		||||
        self.assert_json_error(response, "Must be invited as an valid type of user")
 | 
			
		||||
 | 
			
		||||
    def test_successful_invite_user_as_guest_from_normal_account(self) -> None:
 | 
			
		||||
        self.login(self.example_email('hamlet'))
 | 
			
		||||
        invitee = self.nonreg_email('alice')
 | 
			
		||||
        self.assert_json_success(self.invite(invitee, ["Denmark"],
 | 
			
		||||
                                             invite_as=PreregistrationUser.INVITE_AS['GUEST_USER']))
 | 
			
		||||
        self.assertTrue(find_key_by_email(invitee))
 | 
			
		||||
 | 
			
		||||
        self.submit_reg_form_for_user(invitee, "password")
 | 
			
		||||
        invitee_profile = self.nonreg_user('alice')
 | 
			
		||||
        self.assertFalse(invitee_profile.is_realm_admin)
 | 
			
		||||
        self.assertTrue(invitee_profile.is_guest)
 | 
			
		||||
 | 
			
		||||
    def test_successful_invite_user_as_guest_from_admin_account(self) -> None:
 | 
			
		||||
        self.login(self.example_email('iago'))
 | 
			
		||||
        invitee = self.nonreg_email('alice')
 | 
			
		||||
        self.assert_json_success(self.invite(invitee, ["Denmark"],
 | 
			
		||||
                                             invite_as=PreregistrationUser.INVITE_AS['GUEST_USER']))
 | 
			
		||||
        self.assertTrue(find_key_by_email(invitee))
 | 
			
		||||
 | 
			
		||||
        self.submit_reg_form_for_user(invitee, "password")
 | 
			
		||||
        invitee_profile = self.nonreg_user('alice')
 | 
			
		||||
        self.assertFalse(invitee_profile.is_realm_admin)
 | 
			
		||||
        self.assertTrue(invitee_profile.is_guest)
 | 
			
		||||
 | 
			
		||||
    def test_successful_invite_user_with_name(self) -> None:
 | 
			
		||||
        """
 | 
			
		||||
        A call to /json/invites with valid parameters causes an invitation
 | 
			
		||||
 
 | 
			
		||||
@@ -81,6 +81,7 @@ def accounts_register(request: HttpRequest) -> HttpResponse:
 | 
			
		||||
    realm_creation = prereg_user.realm_creation
 | 
			
		||||
    password_required = prereg_user.password_required
 | 
			
		||||
    is_realm_admin = prereg_user.invited_as == PreregistrationUser.INVITE_AS['REALM_ADMIN'] or realm_creation
 | 
			
		||||
    is_guest = prereg_user.invited_as == PreregistrationUser.INVITE_AS['GUEST_USER']
 | 
			
		||||
 | 
			
		||||
    try:
 | 
			
		||||
        validators.validate_email(email)
 | 
			
		||||
@@ -280,7 +281,9 @@ def accounts_register(request: HttpRequest) -> HttpResponse:
 | 
			
		||||
            # make it respect invited_as_admin / is_realm_admin.
 | 
			
		||||
        else:
 | 
			
		||||
            user_profile = do_create_user(email, password, realm, full_name, short_name,
 | 
			
		||||
                                          prereg_user=prereg_user, is_realm_admin=is_realm_admin,
 | 
			
		||||
                                          prereg_user=prereg_user,
 | 
			
		||||
                                          is_realm_admin=is_realm_admin,
 | 
			
		||||
                                          is_guest=is_guest,
 | 
			
		||||
                                          tos_version=settings.TOS_VERSION,
 | 
			
		||||
                                          timezone=timezone,
 | 
			
		||||
                                          newsletter_data={"IP": request.META['REMOTE_ADDR']},
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user