![]() 
                    
                      
                      
                      오늘은 처음에 만들었던 회원가입 기능을 조금 보완해보자 main.py # 기존 코드 @app.post("/signup") def signup(user: UserCreate, db: Session = Depends(get_db)): create_user(db, user) return JSONResponse(content={"message": "회원가입이 완료되었습니다."}, status_code=201) # 변경 코드 @app.post("/signup") def signup(user: UserCreate, db: Session = Depends(get_db)): created_user = create_user(db, user) if created_user is not False: return JSONRes..
                     
                   
                
                  
                    ![]() 
                    
                      
                      
                      오늘 할일 이메일 인증코드 체크 해서 상태값 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를 정의해..
                     
                   
                
                  
                    ![]() 
                    
                      
                      
                      어제 만들었던 이메일 발송 코드에서 빠진게 있어서.. 수정하려고 한다. 한주가 바껴서 다시 k-mooc 강의 까지 들어야되서.. 바쁘다..플젝도 해야되는데 강의도 들어야해.. email_auths 테이블의 email 컬럼에 unique key가 빠졌다.. models, alembic 파일 수정을 해준다. models.py email 부분에 unique=True 를 추가해준다. class EmailAuth(Base): __tablename__ = "email_auths" id = Column(BigInteger, primary_key=True, index=True) email = Column(String(255), unique=True) code = Column(String(8)) 저번에 작성했던 migr..
                     
                   
                
                  
                    ![]() 
                    
                      
                      
                      멀티 팩터 인증(MFA)에 대한 AWS 공식 문서 https://docs.aws.amazon.com/ko_kr/IAM/latest/UserGuide/id_credentials_mfa_enable_virtual.html?icmpid=docs_iam_console#enable-virt-mfa-for-own-iam-user 가상 멀티 팩터 인증(MFA) 디바이스 활성화(콘솔) - AWS Identity and Access Management 코드를 생성한 후 즉시 요청을 제출하세요. 코드를 생성한 후 너무 오래 기다렸다 요청을 제출할 경우 MFA 디바이스가 사용자와 연결은 되지만 MFA 디바이스가 동기화되지 않습니다. 이는 시간 기 docs.aws.amazon.com 간단하게 말하자면 음.. 게임 로그인 했을..
                     
                   
                
                  
                    ![]() 
                    
                      
                      
                      인증을 어떻게 처리할 것인가에 대해서 의견을 정하기위해 미뤄놨던 이메일 인증을 구현해보려고 한다. Gmail의 SMTP(Simple Mail Transfer Protocol)를 이용해 이메일을 발송할거다. 우선 Gmail SMTP 설정 단계 IMAP 사용 2단계 인증 앱 비밀번호 Gmail SMTP 설정 IMAP 사용 메일로 들어간다 https://mail.google.com/mail/u/1 Gmail 이메일 또는 휴대전화 accounts.google.com 우측 상단 설정 > 모든 설정 보기 를 눌러준다. 전달 및 POP/IMAP로 들어가준다. 왼쪽에 있던 사진을 오른쪽 사진처럼 IMAP 사용을 한다. IMAP 사용, 자동 삭제 사용, IMAP 메일 수 제한하지 않음 후 변경사항 저장 IMAP 사용 빼..
                     
                   
                
                  
                    ![]() 
                    
                      
                      
                      이제 이미지 로컬 저장 -> s3 저장으로 바꿔보자 어제 물어본 내용 오늘 회의때 해제 해줬다고 확인해 달라고 한다, 그래서 시작!! AWS S3 세팅 IAM 계정으로 로그인 로그인 후 화면 S3로 들어간다. 버킷 만들기 일반 구성 버킷 이름을 pid-bucket 으로 해주고 지역을 서울로 한다. 객체 소유권 ACL 비활성화 이 버킷의 퍼블릭 액세스 차단 설정 일단은 생성할때 차단으로 설정한다.. 어짜피 수정해야됨 버킷 버전 관리 비활성화 태그 다음으로 패스 기본 암호화 Amazon S3 관리형 키(SSE-S3) 고급 설정 객체 잠금 - 비활성화 응 안돼!~ 그냥 내 aws 계정으로 테스트 버킷을 생성했다. 버킷 이름만 pid-bucket-test 로 해서 나머지는 동일하게 생성 했다. 사용자 그룹 생성..
                     
                   
                
                  
                    ![]() 
                    
                      
                      
                      오늘은 이미지 업로드 기능을 구현 해보자 fastapi 공식문서에 나와있는 것 처럼 https://fastapi.tiangolo.com/tutorial/request-files/ 일단 python-multipart 를 설치한다. pip install python-multipart main.py 상단 fastapi에 File, UploadFile 를 임포트 한다. from fastapi import FastAPI, Depends, HTTPException, File, UploadFile @app.put("/users/{userId}/img") async def update_user_image(userId: int, file: UploadFile, db: Session = Depends(get_db)): r..
                     
                   
                
                  
                    ![]() 
                    
                      
                      
                      소개 윈도우 기준으로 작성 마인크래프트 자바에디션(JE)는 기본적으로 Java라는 언어로 만들어졌다. 구동을 위해서는 Java가 설치가 필수입니다. 마인크래프트 버전에 따라 자바의 버전도 다르게 설치해야 된다. 일반 서버(spigot, paper 등등) 1.18 ~ Java 17 1.16.5 ~ 1.17.1 Java 16 1.13 ~ Java 11 ~ 1.12.2 Java 8 모드 서버(forge) 1.18 ~ Java 17 1.17 ~ Java 16 ~ 1.16.5 Java 8 다운로드 링크 Java SE Development Kit 에서 OS에 맞게 설치하면 된다. Java 8 https://www.oracle.com/java/technologies/javase/javase8u211-later-arc..
                     
                   
                
                  
                    ![]() 
                    
                      
                      
                      모델 생성 모델 생성 할때 받을 데이터 정의 해주고 schemas.py class ModelCreate(BaseModel): userId: int title: str private: bool file: str description: str main.py # 상단에 create_model 및 ModelCreate 추가 from BE.crud import create_user, get_user, verify_password, get_user_info, update_user_info, get_models, get_my_models, create_model from BE.schemas import UserCreate, UserLogin, UserUpdate, ModelCreate @app.post("/model..
                     
                   
                
                  
                    ![]() 
                    
                      
                      
                      개인 모델 리스트 가져오기 main.py # get_my_models 추가 from BE.crud import create_user, get_user, verify_password, get_user_info, update_user_info, get_models, get_my_models @app.get("/my-models/{userId}") def read_my_models(userId: int, db: Session = Depends(get_db)): my_models_in_db = get_my_models(db, userId) return my_models_in_db crud.py def get_my_models(db: Session, userId: int): return db.query(Model..
                     
                   
                
                  
                    ![]() 
                    
                      
                      
                      오늘은 오전,후 에 일정이 있어서 너무 늦게 개발시작한 탓에 전체 모델 리스트을 조회 하는 기능을 만드는데 일단 조회만 가능하게 코드를 추가하고 나중에 상황에 맞게 수정해야겠다.. main.py # 상단 get_models 추가 from BE.crud import create_user, get_user, verify_password, get_user_info, update_user_info, get_models /models, get으로 요청했을때 모델 테이블을 조회할 수 있게 해준다. @app.get("/models") def read_models(db: Session = Depends(get_db)): models_in_db = get_models(db) return models_in_db crud...
                     
                   
                
                  
                    ![]() 
                    
                      
                      
                      오늘은 정보 수정을 해야겠다 정보 수정할 모든 데이터는 닉네임, 패스워드이고 이 2개만 하면되서 비교적으로 간단한거같다..아마두 ㅋㅋ main.py #상단 부분에 update_user_info from BE.crud import create_user, get_user, verify_password, get_user_info, update_user_info @app.patch("/users/{userId}") def update_user(userId: int, db: Session = Depends(get_db)): update_user_info(db, userId) return JSONResponse(content={"message": "정보가 수정되었습니다."}, status_code=200) crud..