Added confirm dialog on first discord login #210

This commit is contained in:
2023-02-21 12:09:29 +01:00
parent 0ea1edff4d
commit f38b517b98
6 changed files with 79 additions and 49 deletions

View File

@@ -1,16 +1,13 @@
import traceback
from cpl_core.console import Console
from bot_api.abc.dto_abc import DtoABC
class TokenDTO(DtoABC):
def __init__(self, token: str, refresh_token: str):
def __init__(self, token: str, refresh_token: str, first_login: bool = False):
DtoABC.__init__(self)
self._token = token
self._refresh_token = refresh_token
self._first_login = first_login
@property
def token(self) -> str:
@@ -20,9 +17,14 @@ class TokenDTO(DtoABC):
def refresh_token(self) -> str:
return self._refresh_token
@property
def first_login(self) -> bool:
return self._first_login
def from_dict(self, values: dict):
self._token = values["token"]
self._refresh_token = values["refreshToken"]
self._first_login = values["firstLogin"]
def to_dict(self) -> dict:
return {"token": self._token, "refreshToken": self._refresh_token}
return {"token": self._token, "refreshToken": self._refresh_token, "firstLogin": self._first_login}

View File

@@ -480,9 +480,11 @@ class AuthService(AuthServiceABC):
if user_dto is None:
raise ServiceException(ServiceErrorCode.InvalidData, "User not set")
added_user = False
db_user = self._auth_users.find_auth_user_by_email(user_dto.email)
if db_user is None:
self.add_auth_user(user_dto)
added_user = True
# raise ServiceException(ServiceErrorCode.InvalidUser, f'User not found')
db_user = self._auth_users.get_auth_user_by_email(user_dto.email)
@@ -491,7 +493,7 @@ class AuthService(AuthServiceABC):
lambda x: self._auth_users.add_auth_user_user_rel(AuthUserUsersRelation(db_user, x))
)
if db_user.confirmation_id is not None:
if db_user.confirmation_id is not None and not added_user:
raise ServiceException(ServiceErrorCode.Forbidden, "E-Mail not verified")
token = self.generate_token(db_user)
@@ -500,7 +502,7 @@ class AuthService(AuthServiceABC):
db_user.forgot_password_id = None
self._db.save_changes()
return TokenDTO(token, refresh_token)
return TokenDTO(token, refresh_token, first_login=added_user)
async def refresh_async(self, token_dto: TokenDTO) -> TokenDTO:
if token_dto is None: