mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	invite: Extend invite api for handling expiration duration.
This extends the invite api endpoints to handle an extra argument, expiration duration, which states the number of days before the invitation link expires. For prereg users, expiration info is attached to event object to pass it to invite queue processor in order to create and send confirmation link. In case of multiuse invites, confirmation links are created directly inside do_create_multiuse_invite_link(), For filtering valid user invites, expiration info stored in Confirmation object is used, which is accessed by a prereg user using reverse generic relations. Fixes #16359.
This commit is contained in:
		@@ -1,6 +1,7 @@
 | 
			
		||||
import re
 | 
			
		||||
from typing import List, Sequence, Set
 | 
			
		||||
 | 
			
		||||
from django.conf import settings
 | 
			
		||||
from django.http import HttpRequest, HttpResponse
 | 
			
		||||
from django.utils.translation import gettext as _
 | 
			
		||||
 | 
			
		||||
@@ -35,6 +36,9 @@ def invite_users_backend(
 | 
			
		||||
    request: HttpRequest,
 | 
			
		||||
    user_profile: UserProfile,
 | 
			
		||||
    invitee_emails_raw: str = REQ("invitee_emails"),
 | 
			
		||||
    invite_expires_in_days: int = REQ(
 | 
			
		||||
        json_validator=check_int, default=settings.INVITATION_LINK_VALIDITY_DAYS
 | 
			
		||||
    ),
 | 
			
		||||
    invite_as: int = REQ(json_validator=check_int, default=PreregistrationUser.INVITE_AS["MEMBER"]),
 | 
			
		||||
    stream_ids: List[int] = REQ(json_validator=check_list(check_int)),
 | 
			
		||||
) -> HttpResponse:
 | 
			
		||||
@@ -72,7 +76,7 @@ def invite_users_backend(
 | 
			
		||||
            )
 | 
			
		||||
        streams.append(stream)
 | 
			
		||||
 | 
			
		||||
    do_invite_users(user_profile, invitee_emails, streams, invite_as)
 | 
			
		||||
    do_invite_users(user_profile, invitee_emails, streams, invite_expires_in_days, invite_as)
 | 
			
		||||
    return json_success()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -164,6 +168,9 @@ def resend_user_invite_email(
 | 
			
		||||
def generate_multiuse_invite_backend(
 | 
			
		||||
    request: HttpRequest,
 | 
			
		||||
    user_profile: UserProfile,
 | 
			
		||||
    invite_expires_in_days: int = REQ(
 | 
			
		||||
        json_validator=check_int, default=settings.INVITATION_LINK_VALIDITY_DAYS
 | 
			
		||||
    ),
 | 
			
		||||
    invite_as: int = REQ(json_validator=check_int, default=PreregistrationUser.INVITE_AS["MEMBER"]),
 | 
			
		||||
    stream_ids: Sequence[int] = REQ(json_validator=check_list(check_int), default=[]),
 | 
			
		||||
) -> HttpResponse:
 | 
			
		||||
@@ -177,5 +184,7 @@ def generate_multiuse_invite_backend(
 | 
			
		||||
            raise JsonableError(_("Invalid stream id {}. No invites were sent.").format(stream_id))
 | 
			
		||||
        streams.append(stream)
 | 
			
		||||
 | 
			
		||||
    invite_link = do_create_multiuse_invite_link(user_profile, invite_as, streams)
 | 
			
		||||
    invite_link = do_create_multiuse_invite_link(
 | 
			
		||||
        user_profile, invite_as, invite_expires_in_days, streams
 | 
			
		||||
    )
 | 
			
		||||
    return json_success({"invite_link": invite_link})
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user