29
29
30
30
# circular imports for type checking
31
31
if TYPE_CHECKING :
32
- from jupyter_server .base .handlers import JupyterHandler
32
+ from jupyter_server .base .handlers import AuthenticatedHandler , JupyterHandler
33
33
from jupyter_server .serverapp import ServerApp
34
34
35
35
_non_alphanum = re .compile (r"[^A-Za-z0-9]" )
@@ -321,7 +321,7 @@ def user_from_cookie(self, cookie_value: str) -> User | None:
321
321
user ["color" ],
322
322
)
323
323
324
- def get_cookie_name (self , handler : JupyterHandler ) -> str :
324
+ def get_cookie_name (self , handler : AuthenticatedHandler ) -> str :
325
325
"""Return the login cookie name
326
326
327
327
Uses IdentityProvider.cookie_name, if defined.
@@ -333,7 +333,7 @@ def get_cookie_name(self, handler: JupyterHandler) -> str:
333
333
else :
334
334
return _non_alphanum .sub ("-" , f"username-{ handler .request .host } " )
335
335
336
- def set_login_cookie (self , handler : JupyterHandler , user : User ) -> None :
336
+ def set_login_cookie (self , handler : AuthenticatedHandler , user : User ) -> None :
337
337
"""Call this on handlers to set the login cookie for success"""
338
338
cookie_options = {}
339
339
cookie_options .update (self .cookie_options )
@@ -350,7 +350,7 @@ def set_login_cookie(self, handler: JupyterHandler, user: User) -> None:
350
350
handler .set_secure_cookie (cookie_name , self .user_to_cookie (user ), ** cookie_options )
351
351
352
352
def _force_clear_cookie (
353
- self , handler : JupyterHandler , name : str , path : str = "/" , domain : str | None = None
353
+ self , handler : AuthenticatedHandler , name : str , path : str = "/" , domain : str | None = None
354
354
) -> None :
355
355
"""Deletes the cookie with the given name.
356
356
@@ -376,7 +376,7 @@ def _force_clear_cookie(
376
376
morsel ["domain" ] = domain
377
377
handler .add_header ("Set-Cookie" , morsel .OutputString ())
378
378
379
- def clear_login_cookie (self , handler : JupyterHandler ) -> None :
379
+ def clear_login_cookie (self , handler : AuthenticatedHandler ) -> None :
380
380
"""Clear the login cookie, effectively logging out the session."""
381
381
cookie_options = {}
382
382
cookie_options .update (self .cookie_options )
@@ -478,7 +478,7 @@ def generate_anonymous_user(self, handler: JupyterHandler) -> User:
478
478
handler .log .debug (f"Generating new user for token-authenticated request: { user_id } " )
479
479
return User (user_id , name , display_name , initials , None , color )
480
480
481
- def should_check_origin (self , handler : JupyterHandler ) -> bool :
481
+ def should_check_origin (self , handler : AuthenticatedHandler ) -> bool :
482
482
"""Should the Handler check for CORS origin validation?
483
483
484
484
Origin check should be skipped for token-authenticated requests.
@@ -489,7 +489,7 @@ def should_check_origin(self, handler: JupyterHandler) -> bool:
489
489
"""
490
490
return not self .is_token_authenticated (handler )
491
491
492
- def is_token_authenticated (self , handler : JupyterHandler ) -> bool :
492
+ def is_token_authenticated (self , handler : AuthenticatedHandler ) -> bool :
493
493
"""Returns True if handler has been token authenticated. Otherwise, False.
494
494
495
495
Login with a token is used to signal certain things, such as:
@@ -713,11 +713,11 @@ def login_available(self):
713
713
self .settings
714
714
)
715
715
716
- def should_check_origin (self , handler : JupyterHandler ) -> bool :
716
+ def should_check_origin (self , handler : AuthenticatedHandler ) -> bool :
717
717
"""Whether we should check origin."""
718
718
return self .login_handler_class .should_check_origin (handler ) # type:ignore[attr-defined]
719
719
720
- def is_token_authenticated (self , handler : JupyterHandler ) -> bool :
720
+ def is_token_authenticated (self , handler : AuthenticatedHandler ) -> bool :
721
721
"""Whether we are token authenticated."""
722
722
return self .login_handler_class .is_token_authenticated (handler ) # type:ignore[attr-defined]
723
723
0 commit comments