update login
This commit is contained in:
@@ -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')
|
||||
|
||||
@@ -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)
|
||||
|
||||
42
api.saladeaula.digital/app/routes/users/password.py
Normal file
42
api.saladeaula.digital/app/routes/users/password.py
Normal 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)
|
||||
Reference in New Issue
Block a user