backend/fastapi/app/process/user/manage_user.py
2024-12-06 14:12:28 +09:00

241 lines
6.1 KiB
Python

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 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",
}