from fastapi import APIRouter, Depends, HTTPException, Header, Body, status, Request from db import crud_user from sqlalchemy.orm import Session from db.base import get_db from db import models, schemas from process.logger import logger # 로그인 수행 async def do_login(user_id, user_pw, db): # DB에서 유저 정보 확인 db_result_ori = crud_user.do_login(user_id=user_id, user_pw=user_pw, db=db) db_result = [] for db_data in db_result_ori: db_result.append(db_data) # 일치하는 유저가 있는지 확인 if len(db_result) == 0: return { "result": "FAIL" } else: return { "result": "OK", "user_seq": db_result[0] } # 마지막 로그인 시간 업데이트 async def update_last_login_dt(user_seq, db): # 마지막 로그인 시간 업데이트 db_result = crud_user.update_last_login_dt(user_seq=user_seq, db=db) if db_result: return { "result": "OK" } else: return { "result": "FAIL", } # 아이디 찾기(닉네임, 이메일) async def find_id_by_name_email(nickname, user_email, db): # DB에서 회원정보 찾기 db_result_ori = crud_user.find_id_by_name_email(nickname=nickname, user_email=user_email, db=db) db_result = [] for db_data in db_result_ori: db_result.append(db_data) # 일치하는 유저가 있는지 확인 if len(db_result) == 0: return { "result": "FAIL" } else: db_result = db_result[0] return { "result": "OK", "user_seq": db_result[0], "user_id": db_result[1] } # 아이디 찾기(user_seq) async def find_id_by_user_seq(user_seq, db): # DB에서 회원정보 찾기 db_result_ori = crud_user.find_id_by_user_seq(user_seq=user_seq, db=db) db_result = [] for db_data in db_result_ori: db_result.append(db_data) # 일치하는 유저가 있는지 확인 if len(db_result) == 0: return { "result": "FAIL" } else: db_result = db_result[0] return { "result": "OK", "user_id": db_result[0], "user_email": db_result[1] } # 이메일 발송 3회 이상 됐는지 확인 async def select_send_email_cnt(user_email, db): db_result_ori = crud_user.select_send_email_cnt(user_email=user_email, db=db) db_result = [] for db_data in db_result_ori: db_result.append(db_data) db_result = db_result[0][0] return { "result": "OK", "send_email_cnt": db_result } # 이메일 발송내역 기록(하루 3회만 발송가능하게 하기 위함) async def insert_send_email_info(user_seq, cert_type, user_info, cert_code, db): db_result = crud_user.insert_send_email_info(user_seq=user_seq, cert_type=cert_type, user_info=user_info, cert_code=cert_code, db=db) if db_result: return { "result": "OK" } else: return { "result": "FAIL", } # 비밀번호 찾기 수행 async def find_password_by_id_email(user_id, user_email, db): # DB에서 회원정보 찾기 db_result_ori = crud_user.find_password_by_id_email(user_id=user_id, user_email=user_email, db=db) db_result = [] for db_data in db_result_ori: db_result.append(db_data) # 일치하는 유저가 있는지 확인 if len(db_result) == 0: return { "result": "FAIL" } else: return { "result": "OK", "user_seq": db_result[0] } # 비밀번호 업데이트 수행 async def update_new_password(user_seq, new_pw, new_solt, db): # 회원정보 업데이트 db_result = crud_user.update_new_password(user_seq=user_seq, new_pw=new_pw, new_solt=new_solt, db=db) if db_result: return { "result": "OK" } else: return { "result": "FAIL", } # 유저 회원가입 진행 async def insert_new_user(user_info, db): # DB에서 신규 유저 등록 db_result_manage_user = crud_user.insert_new_user(user_info=user_info, db=db) # 인증코드 입력 결과 if not db_result_manage_user: return { "result": "FAIL" } else: return { "result": "OK", } # 프로필 이미지 업데이트 async def update_profile_img(user_seq, profile_img, db): db_result = crud_user.update_profile_img(user_seq=user_seq, profile_img=profile_img, db=db) # 인증코드 입력 결과 if db_result: return { "result": "OK" } else: return { "result": "FAIL", } # 마이페이지 - 유저 정보 가져오기 async def get_my_info_by_user_seq(user_seq, db): # DB에서 유저 정보 가져오기 db_result_ori = crud_user.get_my_info_by_user_seq(user_seq=user_seq, db=db) db_result = [] for db_data in db_result_ori: db_result.append(db_data) # 데이터 1개만 존재하는지 확인 if len(db_result) == 1: # 데이터 key value 구분해주기 db_result = db_result[0] return { "result": "OK", "data": { "nickname": db_result[0], "user_email": db_result[1], "department": db_result[2], "profile_img": db_result[3], "introduce_myself": db_result[4] } } return { "result": "FAIL" } # 현재 비밀번호 일치 확인 async def check_current_user_pw(user_seq, user_pw, db): db_result_ori = crud_user.check_current_user_pw(user_seq=user_seq, user_pw=user_pw, db=db) db_result = [] for db_data in db_result_ori: db_result.append(db_data) if db_result[0][0] == 1: return { "result": "OK" } else: return { "result": "FAIL", } # 회원정보 업데이트 async def update_user_info(user_info, db): # 회원정보 업데이트 db_result = crud_user.update_user_info(user_info=user_info, db=db) if db_result: return { "result": "OK" } else: return { "result": "FAIL", } # 회원 탈퇴 처리 async def user_withdraw(user_seq, db): db_result = crud_user.user_withdraw(user_seq=user_seq, db=db) if db_result: return { "result": "OK" } else: return { "result": "FAIL", }