9
9
CSRFError ,
10
10
JWTDecodeError ,
11
11
RevokedTokenError ,
12
- MissingHeaderError ,
13
- MissingCookieError ,
14
- AccessTokenRequired ,
15
- RefreshTokenRequired ,
16
- FreshTokenRequired
12
+ MissingTokenRequired
17
13
)
18
14
19
15
class AuthJWT (AuthConfig ):
@@ -555,7 +551,7 @@ def verify_and_get_jwt_in_cookies(
555
551
csrf_token = request .headers .get (self ._refresh_csrf_header_name )
556
552
557
553
if not cookie :
558
- raise MissingCookieError (status_code = 401 ,message = "Missing cookie {}" .format (cookie_key ))
554
+ raise MissingTokenRequired (status_code = 401 ,message = "Missing cookie {}" .format (cookie_key ))
559
555
560
556
if self ._cookie_csrf_protect and not csrf_token :
561
557
if isinstance (request , WebSocket ) or request .method in self ._csrf_methods :
@@ -583,7 +579,7 @@ def verify_jwt_optional_in_request(self,token: str) -> None:
583
579
if token : self ._verifying_token (token )
584
580
585
581
if token and self .get_raw_jwt (token )['type' ] != 'access' :
586
- raise AccessTokenRequired (status_code = 422 ,message = "Only access tokens are allowed" )
582
+ raise MissingTokenRequired (status_code = 422 ,message = "Only access tokens are allowed" )
587
583
588
584
def verify_jwt_in_request (
589
585
self ,
@@ -605,21 +601,22 @@ def verify_jwt_in_request(
605
601
if token_from not in ['headers' ,'cookies' ,'websocket' ]:
606
602
raise ValueError ("token_from must be between 'headers', 'cookies', 'websocket'" )
607
603
608
- if not token and token_from == 'headers' :
609
- raise MissingHeaderError (status_code = 401 ,message = "Missing {} Header" .format (self ._header_name ))
604
+ if not token :
605
+ if token_from == 'headers' :
606
+ raise MissingTokenRequired (status_code = 401 ,message = "Missing {} Header" .format (self ._header_name ))
607
+ if token_from == 'websocket' :
608
+ raise MissingTokenRequired (status_code = 1008 ,message = "Missing token from Query or Path" )
610
609
610
+ # verify jwt
611
611
issuer = self ._decode_issuer if type_token == 'access' else None
612
612
self ._verifying_token (token ,issuer )
613
613
614
614
if self .get_raw_jwt (token )['type' ] != type_token :
615
615
msg = "Only {} tokens are allowed" .format (type_token )
616
- if type_token == 'access' :
617
- raise AccessTokenRequired (status_code = 422 ,message = msg )
618
- if type_token == 'refresh' :
619
- raise RefreshTokenRequired (status_code = 422 ,message = msg )
616
+ raise MissingTokenRequired (status_code = 422 ,message = msg )
620
617
621
618
if fresh and not self .get_raw_jwt (token )['fresh' ]:
622
- raise FreshTokenRequired (status_code = 401 ,message = "Fresh token required" )
619
+ raise MissingTokenRequired (status_code = 401 ,message = "Fresh token required" )
623
620
624
621
def _verifying_token (self ,encoded_token : str , issuer : Optional [str ] = None ) -> None :
625
622
"""
@@ -665,10 +662,30 @@ def _verified_token(self,encoded_token: str, issuer: Optional[str] = None) -> Di
665
662
except Exception as err :
666
663
raise JWTDecodeError (status_code = 422 ,message = str (err ))
667
664
668
- def jwt_required (self ) -> None :
665
+ def jwt_required (
666
+ self ,
667
+ websocket_auth : Optional [bool ] = False ,
668
+ websocket_from : Optional [str ] = "query_path" ,
669
+ token : Optional [str ] = None ,
670
+ websocket : Optional [WebSocket ] = None ,
671
+ csrf_token : Optional [str ] = None ,
672
+ ) -> None :
669
673
"""
670
674
Only access token can access this function
671
- """
675
+
676
+ :param websocket_auth:
677
+ :param websocket_from:
678
+ :param token:
679
+ :param websocket:
680
+ :param csrf_token:
681
+ """
682
+ if websocket_auth :
683
+ if websocket_from == "query_path" :
684
+ self .verify_jwt_in_request (token ,'access' ,'websocket' )
685
+ if websocket_from == "cookies" :
686
+ self .verify_and_get_jwt_in_cookies ('access' ,websocket ,csrf_token )
687
+ return
688
+
672
689
if len (self ._token_location ) == 2 :
673
690
if self ._token and self .jwt_in_headers :
674
691
self .verify_jwt_in_request (self ._token ,'access' ,'headers' )
0 commit comments