update login

This commit is contained in:
2025-11-28 16:07:59 -03:00
parent 2b0efc654a
commit c71e19eacb
14 changed files with 251 additions and 16 deletions

View File

@@ -43,6 +43,7 @@ app.include_router(enrollments.scorm, prefix='/enrollments')
app.include_router(users.router, prefix='/users')
app.include_router(users.emails, prefix='/users')
app.include_router(users.orgs, prefix='/users')
app.include_router(users.password, prefix='/users')
app.include_router(orders.router, prefix='/orders')
app.include_router(orgs.admins, prefix='/orgs')
app.include_router(orgs.custom_pricing, prefix='/orgs')

View File

@@ -9,8 +9,9 @@ from config import USER_TABLE
from .emails import router as emails
from .orgs import router as orgs
from .password import router as password
__all__ = ['emails', 'orgs']
__all__ = ['emails', 'orgs', 'password']
router = Router()
dyn = DynamoDBPersistenceLayer(USER_TABLE, dynamodb_client)

View File

@@ -0,0 +1,42 @@
from http import HTTPStatus
from typing import Annotated
from aws_lambda_powertools.event_handler.api_gateway import Router
from aws_lambda_powertools.event_handler.exceptions import NotFoundError
from aws_lambda_powertools.event_handler.openapi.params import Body
from layercake.dateutils import now
from layercake.dynamodb import DynamoDBPersistenceLayer, KeyPair
from passlib.hash import pbkdf2_sha256
from api_gateway import JSONResponse
from boto3clients import dynamodb_client
from config import USER_TABLE
router = Router()
dyn = DynamoDBPersistenceLayer(USER_TABLE, dynamodb_client)
class UserNotFoundError(NotFoundError): ...
@router.post('/<user_id>/password')
def password(
user_id: str,
new_password: Annotated[str, Body(min_length=6, embed=True)],
):
with dyn.transact_writer() as transact:
transact.condition(
key=KeyPair(user_id, '0'),
cond_expr='attribute_exists(sk)',
exc_cls=UserNotFoundError,
)
transact.put(
item={
'id': user_id,
'sk': 'PASSWORD',
'hash': pbkdf2_sha256.hash(new_password),
'created_at': now(),
}
)
return JSONResponse(status_code=HTTPStatus.NO_CONTENT)