코딩캠프/AI 웹개발 취업캠프

[AI 웹개발 취업캠프] 72Day - 프로젝트 23일차

고랑E 2023. 11. 1. 23:10
728x90

오늘 할일 이메일 인증코드 체크 해서 상태값 true로 만들어주는거..

 

생각해보니 email_auths 테이블에 status 컬럼을 안만들어 줬다..

기본은 false로 해주고 만들어준다.

alembic 마이그레이션 파일에

 

sa.Column('status', sa.Boolean, nullable=False, server_default='false'),

 

 

추가 해주고 models.py 에도 추가해준다..

 

status = Column(Boolean, default=False)

 

 

다운그레이드 하고 다시 올린다.

 

# 바로 전 마이그레이션 다운그레이드
alembic downgrade -1

# 최신까지 마이그레이션
alembic upgrade head

 

 

schemas.py 에 요청으로 받을 email, code를 정의해주고

 

class EmailAuthCheck(BaseModel):
    email: str
    code: str

 

 

main.py 위쪽에 가져올걸 임포트하고  api 로 /email/check 만들어준다.

 

# check_email_code 추가
from BE.crud import create_user, get_user, verify_password, get_user_info, update_user_info, get_models, get_my_models, create_model, get_model, email_code, check_email_code

# EmailAuthCheck 추가
from BE.schemas import UserCreate, UserLogin, UserUpdate, ModelCreate, EmailSend, EmailAuthCheck

 

맞았을때 200, 틀렸을때 401 상태코드로 보내준다.

 

@app.post("/email/check")
def check_email_auth(email_auth: EmailAuthCheck, db: Session = Depends(get_db)):
    if check_email_code(db, email_auth):
        return JSONResponse(status_code=200, content={"message": "인증코드가 맞습니다."})
    else:
        return JSONResponse(status_code=401, content={"message": "인증코드가 틀렸습니다."})

 

 

crup.py 에 check_email_code 함수를 만들어준다.

 

def check_email_code(db: Session, email_auth: EmailAuthCheck):
    db_email_code = db.query(EmailAuth).filter(EmailAuth.email == email_auth.email).first()
    if db_email_code and db_email_code.code == email_auth.code:
        db_email_code.status = True
        db.commit()
        return True
    return False

 

테스트를 해보면

 

 

잘 바뀐다!!!

 

 

 

본 후기는 정보통신산업진흥원(NIPA)에서 주관하는 <AI 서비스완성! AI+웹개발 취업캠프 - 프론트엔드&백엔드> 과정 학습/프로젝트/과제 기록으로 작성되었습니다.