Example #1
0
async def create_user(
        *,
        user_in: BaseUserCreate,
        # current_user: User = Depends(get_current_active_superuser),
        background_tasks: BackgroundTasks
):
    """
    Create new user.
    """
    user = await User.get_by_email(email=user_in.email)
    if user:
        raise HTTPException(
            status_code=400,
            detail="The user with this username already exists in the system.",
        )

    hashed_password = get_password_hash(user_in.password)
    db_user = BaseUserCreate(
        **user_in.create_update_dict(), hashed_password=hashed_password
    )
    created_user = await User.create(db_user)

    if settings.EMAILS_ENABLED and user_in.email:
        background_tasks.add_task(
            send_new_account_email, email_to=user_in.email, username=user_in.email, password=user_in.password
        )
    return created_user
Example #2
0
 async def retrieve_meta(self, user_in: BaseUserUpdate, current_user: User = Depends(get_current_active_user)):
     """
     更新自己的用户
     """
     if user_in.password is not None and user_in.password != "string":
         hashed_password = get_password_hash(user_in.password)
         current_user.hashed_password = hashed_password
     if user_in.username is not None and user_in.password != "string":
         current_user.username = user_in.username
     if user_in.email is not None and user_in.password != "*****@*****.**":
         current_user.email = user_in.email
     current_user.first_name = user_in.first_name
     current_user.last_name = user_in.last_name
     await current_user.save()
     return current_user
async def update_user_me(
    user_in: BaseUserUpdate,
    current_user: User = Depends(get_current_active_user)):
    """
    Update own user.
    """
    if user_in.password is not None:
        hashed_password = get_password_hash(user_in.password)
        current_user.hashed_password = hashed_password
    if user_in.username is not None:
        current_user.username = user_in.username
    if user_in.email is not None:
        current_user.email = user_in.email
    await current_user.save()
    return current_user
Example #4
0
async def reset_password(token: str = Body(...), new_password: str = Body(...)):
    """
    Reset password
    """
    email = verify_password_reset_token(token)
    if not email:
        raise HTTPException(status_code=400, detail="Invalid token")
    user = await User.get_by_email(email=email)
    if not user:
        raise HTTPException(
            status_code=404,
            detail="The user with this username does not exist in the system.",
        )
    elif not User.is_active:
        raise HTTPException(status_code=400, detail="Inactive user")
    hashed_password = get_password_hash(new_password)
    user.hashed_password = hashed_password
    await user.save()
    return {"msg": "Password updated successfully"}
Example #5
0
 async def create(cls, user: BaseUserCreate) -> "User":
     user_dict = user.dict()
     password_hash = password.get_password_hash(password=user.password)
     model = cls(**user_dict, password_hash=password_hash)
     await model.save()
     return model