Coverage for jutil/auth.py: 91%

19 statements  

« prev     ^ index     » next       coverage.py v6.5.0, created at 2022-10-07 16:40 -0500

1import logging 

2from typing import Union, Optional 

3from django.contrib.auth.models import User 

4from django.http.request import HttpRequest 

5from rest_framework.exceptions import NotAuthenticated 

6from rest_framework.request import Request 

7 

8logger = logging.getLogger(__name__) 

9 

10 

11def get_auth_user(request: Union[Request, HttpRequest]) -> User: 

12 """ 

13 Returns authenticated User. 

14 :param request: HttpRequest 

15 :return: User 

16 """ 

17 if not request.user or not request.user.is_authenticated: 

18 raise NotAuthenticated() 

19 return request.user # type: ignore 

20 

21 

22def get_auth_user_or_none(request: Union[Request, HttpRequest]) -> Optional[User]: 

23 """ 

24 Returns authenticated User or None if not authenticated. 

25 :param request: HttpRequest 

26 :return: User 

27 """ 

28 if not request.user or not request.user.is_authenticated: 28 ↛ 30line 28 didn't jump to line 30, because the condition on line 28 was never false

29 return None 

30 return request.user # type: ignore 

31 

32 

33class AuthUserMixin: 

34 @property 

35 def auth_user(self) -> User: 

36 """ 

37 Returns authenticated user. 

38 :return: User 

39 """ 

40 return get_auth_user(self.request) # type: ignore