double user creation fail
This commit is contained in:
parent
b70806195e
commit
b53aab012d
1 changed files with 20 additions and 13 deletions
|
@ -4,6 +4,7 @@ from datetime import datetime
|
|||
|
||||
from passlib.context import CryptContext
|
||||
from pydantic import BaseModel, validator
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from . import models
|
||||
|
@ -83,10 +84,12 @@ class User(UserBase):
|
|||
.first())
|
||||
|
||||
if user is None:
|
||||
# inexistent user, fake doing password verification
|
||||
crypt_context.dummy_verify()
|
||||
return None
|
||||
|
||||
if not crypt_context.verify(password, user.password):
|
||||
# password hash mismatch
|
||||
return None
|
||||
|
||||
return cls.from_orm(user)
|
||||
|
@ -97,21 +100,25 @@ class User(UserBase):
|
|||
db: Session,
|
||||
user: UserCreate,
|
||||
crypt_context: CryptContext,
|
||||
) -> User:
|
||||
user = models.User(
|
||||
name=user.name,
|
||||
password=crypt_context.hash(user.password),
|
||||
capabilities=[
|
||||
models.UserCapability(capability=capability)
|
||||
for capability in user.capabilities
|
||||
]
|
||||
)
|
||||
) -> User | None:
|
||||
try:
|
||||
user = models.User(
|
||||
name=user.name,
|
||||
password=crypt_context.hash(user.password),
|
||||
capabilities=[
|
||||
models.UserCapability(capability=capability)
|
||||
for capability in user.capabilities
|
||||
]
|
||||
)
|
||||
|
||||
db.add(user)
|
||||
db.commit()
|
||||
db.refresh(user)
|
||||
db.add(user)
|
||||
db.commit()
|
||||
db.refresh(user)
|
||||
|
||||
return cls.from_orm(user)
|
||||
return cls.from_orm(user)
|
||||
|
||||
except IntegrityError:
|
||||
pass
|
||||
|
||||
|
||||
class DistinguishedNameBase(BaseModel):
|
||||
|
|
Loading…
Reference in a new issue