4141
4242_logger = logging .getLogger (__name__ )
4343
44- # Phone registration session keys
45- _PHONE_REGISTRATION_KEY = "phone_registration "
46- _PHONE_PENDING_KEY = "phone_pending "
47- _PHONE_CODE_KEY = "phone_code "
48- _PHONE_CODE_VALUE_FAKE = (
49- "123456" # NOTE: temporary fake while developing phone registration feature
44+ # Registration session keys
45+ _REGISTRATION_KEY = "registration "
46+ _REGISTRATION_PENDING_KEY = "registration_pending "
47+ _REGISTRATION_CODE_KEY = "registration_code "
48+ _REGISTRATION_CODE_VALUE_FAKE = (
49+ "123456" # NOTE: temporary fake while developing registration feature
5050)
5151
5252
53- class PhoneRegistrationData (TypedDict ):
54- """Phone registration session data structure."""
53+ class RegistrationData (TypedDict ):
54+ """Registration session data structure."""
5555
5656 user_id : UserID
57- phone : str
57+ data : str
5858 status : Literal ["pending_confirmation" ]
5959
6060
61- class PhoneRegistrationSessionManager :
61+ class RegistrationSessionManager :
6262 def __init__ (self , session : Session , user_id : UserID , product_name : str ):
6363 self ._session = session
6464 self ._user_id = user_id
6565 self ._product_name = product_name
6666
67- def start_registration (self , phone : str ) -> None :
68- phone_data : PhoneRegistrationData = {
67+ def start_registration (self , data : str , code : str ) -> None :
68+ registration_data : RegistrationData = {
6969 "user_id" : self ._user_id ,
70- "phone " : phone ,
70+ "data " : data ,
7171 "status" : "pending_confirmation" ,
7272 }
73- self ._session [_PHONE_REGISTRATION_KEY ] = phone_data
74- self ._session [_PHONE_CODE_KEY ] = _PHONE_CODE_VALUE_FAKE
75- self ._session [_PHONE_PENDING_KEY ] = True
73+ self ._session [_REGISTRATION_KEY ] = registration_data
74+ self ._session [_REGISTRATION_CODE_KEY ] = code
75+ self ._session [_REGISTRATION_PENDING_KEY ] = True
7676
77- def validate_pending_registration (self ) -> PhoneRegistrationData :
78- if not self ._session .get (_PHONE_PENDING_KEY ):
77+ def validate_pending_registration (self ) -> RegistrationData :
78+ if not self ._session .get (_REGISTRATION_PENDING_KEY ):
7979 raise PhoneRegistrationPendingNotFoundError (
8080 user_id = self ._user_id , product_name = self ._product_name
8181 )
8282
83- phone_registration : PhoneRegistrationData | None = self ._session .get (
84- _PHONE_REGISTRATION_KEY
85- )
86- if not phone_registration or phone_registration ["user_id" ] != self ._user_id :
83+ registration : RegistrationData | None = self ._session .get (_REGISTRATION_KEY )
84+ if not registration or registration ["user_id" ] != self ._user_id :
8785 raise PhoneRegistrationSessionInvalidError (
8886 user_id = self ._user_id , product_name = self ._product_name
8987 )
9088
91- return phone_registration
89+ return registration
9290
93- def regenerate_code (self ) -> None :
91+ def regenerate_code (self , new_code : str ) -> None :
9492 self .validate_pending_registration ()
95- self ._session [_PHONE_CODE_KEY ] = _PHONE_CODE_VALUE_FAKE
93+ self ._session [_REGISTRATION_CODE_KEY ] = new_code
9694
9795 def validate_confirmation_code (self , provided_code : str ) -> None :
98- expected_code = self ._session .get (_PHONE_CODE_KEY )
96+ expected_code = self ._session .get (_REGISTRATION_CODE_KEY )
9997 if not expected_code or provided_code != expected_code :
10098 raise PhoneRegistrationCodeInvalidError (
10199 user_id = self ._user_id , product_name = self ._product_name
102100 )
103101
104102 def clear_session (self ) -> None :
105- self ._session .pop (_PHONE_REGISTRATION_KEY , None )
106- self ._session .pop (_PHONE_PENDING_KEY , None )
107- self ._session .pop (_PHONE_CODE_KEY , None )
103+ self ._session .pop (_REGISTRATION_KEY , None )
104+ self ._session .pop (_REGISTRATION_PENDING_KEY , None )
105+ self ._session .pop (_REGISTRATION_CODE_KEY , None )
108106
109107
110108routes = web .RouteTableDef ()
@@ -179,10 +177,12 @@ async def my_phone_register(request: web.Request) -> web.Response:
179177 phone_register = await parse_request_body_as (MyPhoneRegister , request )
180178
181179 session = await get_session (request )
182- phone_session_manager = PhoneRegistrationSessionManager (
180+ registration_session_manager = RegistrationSessionManager (
183181 session , req_ctx .user_id , req_ctx .product_name
184182 )
185- phone_session_manager .start_registration (phone_register .phone )
183+ registration_session_manager .start_registration (
184+ phone_register .phone , code = _REGISTRATION_CODE_VALUE_FAKE
185+ )
186186
187187 return web .json_response (status = status .HTTP_202_ACCEPTED )
188188
@@ -196,10 +196,10 @@ async def my_phone_resend(request: web.Request) -> web.Response:
196196 req_ctx = UsersRequestContext .model_validate (request )
197197
198198 session = await get_session (request )
199- phone_session_manager = PhoneRegistrationSessionManager (
199+ registration_session_manager = RegistrationSessionManager (
200200 session , req_ctx .user_id , req_ctx .product_name
201201 )
202- phone_session_manager .regenerate_code ()
202+ registration_session_manager .regenerate_code (new_code = _REGISTRATION_CODE_VALUE_FAKE )
203203
204204 return web .json_response (status = status .HTTP_202_ACCEPTED )
205205
@@ -214,20 +214,20 @@ async def my_phone_confirm(request: web.Request) -> web.Response:
214214 phone_confirm = await parse_request_body_as (MyPhoneConfirm , request )
215215
216216 session = await get_session (request )
217- phone_session_manager = PhoneRegistrationSessionManager (
217+ registration_session_manager = RegistrationSessionManager (
218218 session , req_ctx .user_id , req_ctx .product_name
219219 )
220220
221- phone_registration = phone_session_manager .validate_pending_registration ()
222- phone_session_manager .validate_confirmation_code (phone_confirm .code )
221+ registration = registration_session_manager .validate_pending_registration ()
222+ registration_session_manager .validate_confirmation_code (phone_confirm .code )
223223
224224 await _users_service .update_user_phone (
225225 request .app ,
226226 user_id = req_ctx .user_id ,
227- phone = phone_registration [ "phone " ],
227+ phone = registration [ "data " ],
228228 )
229229
230- phone_session_manager .clear_session ()
230+ registration_session_manager .clear_session ()
231231
232232 return web .json_response (status = status .HTTP_204_NO_CONTENT )
233233
0 commit comments