2023-10-26 20:38:31 +00:00
|
|
|
from typing import List, Optional, Text
|
2021-06-28 09:08:09 +00:00
|
|
|
|
2023-10-26 21:07:35 +00:00
|
|
|
from pydantic import BaseModel
|
|
|
|
|
2023-01-10 08:15:28 +00:00
|
|
|
# from base.exceptions import Unauthorized
|
2022-09-17 18:12:14 +00:00
|
|
|
|
2021-06-28 09:08:09 +00:00
|
|
|
|
|
|
|
class Permission(BaseModel):
|
|
|
|
name: Text
|
|
|
|
|
|
|
|
|
|
|
|
class AuthCredentials(BaseModel):
|
|
|
|
user_id: Optional[int] = None
|
2021-08-17 09:14:26 +00:00
|
|
|
scopes: Optional[dict] = {}
|
2021-06-28 09:08:09 +00:00
|
|
|
logged_in: bool = False
|
|
|
|
error_message: str = ""
|
|
|
|
|
|
|
|
@property
|
|
|
|
def is_admin(self):
|
2022-11-25 22:35:42 +00:00
|
|
|
# TODO: check admin logix
|
2021-06-28 09:08:09 +00:00
|
|
|
return True
|
|
|
|
|
|
|
|
async def permissions(self) -> List[Permission]:
|
2022-11-24 14:31:52 +00:00
|
|
|
if self.user_id is None:
|
2023-01-10 08:15:28 +00:00
|
|
|
# raise Unauthorized("Please login first")
|
2023-10-30 21:00:55 +00:00
|
|
|
return {"error": "Please login first"}
|
2022-12-01 08:12:48 +00:00
|
|
|
else:
|
|
|
|
# TODO: implement permissions logix
|
|
|
|
print(self.user_id)
|
2023-10-30 21:00:55 +00:00
|
|
|
return NotImplemented
|
2021-06-28 09:08:09 +00:00
|
|
|
|
|
|
|
|
|
|
|
class AuthUser(BaseModel):
|
|
|
|
user_id: Optional[int]
|
2023-01-31 06:57:35 +00:00
|
|
|
username: Optional[str]
|
2021-06-28 09:08:09 +00:00
|
|
|
|
|
|
|
@property
|
|
|
|
def is_authenticated(self) -> bool:
|
|
|
|
return self.user_id is not None
|
|
|
|
|
2023-10-30 21:00:55 +00:00
|
|
|
# @property
|
|
|
|
# def display_id(self) -> int:
|
|
|
|
# return self.user_id
|