diff --git a/Program/V1/Controllers/UserController.cs b/Program/V1/Controllers/UserController.cs index 23e30c9..3cafb18 100644 --- a/Program/V1/Controllers/UserController.cs +++ b/Program/V1/Controllers/UserController.cs @@ -345,8 +345,106 @@ public class UserController : ControllerBase return StatusCode(500, APIResponse.UnknownError($"[{summary}], {ex.Message}")); } } - - // [HttpGet("set")] + + + [HttpGet("cancel")] + [CustomOperation("회원 탈퇴", "사용자 탈퇴", "사용자")] + public async Task Cancel(string token, string refresh) + { + if (string.IsNullOrEmpty(token) || string.IsNullOrEmpty(refresh)) + return BadRequest(APIResponse.InvalidInputError()); + if (!ModelState.IsValid) return BadRequest(APIResponse.InvalidInputError()); + string summary = String.Empty; + + try + { + summary = _repositoryService.ReadSummary(typeof(UserController), "Cancel"); + + + // 여기서 애초에 토큰 관련 에러가 2개가 나오게 만들어져 있음 + var validateToken = await _repositoryService.ValidateToken(token, refresh); + var user = await _dbContext.User.FirstOrDefaultAsync(u => u.uid == validateToken.uid); + + if (user == null) + return Ok(APIResponse.Send("001", $"[{summary}], 회원 정보 확인 오류", Empty)); + + + var logUser = new LogUser + { + uid = validateToken.uid, + create_date = DateTime.Now, + create_uid = "System", + log = "" + }; + + string returnCode = "000"; + string returnMsg = $"[{summary}], 정상"; + if (await _repositoryService.DeleteData(user)) + logUser.log = $"[{summary}] : 정상"; + else + { + logUser.log = $"[{summary}] : 실패"; + returnMsg = $"[{summary}], 실패"; + returnCode = "001"; + } + + if (!(await _repositoryService.SaveData(logUser))) + _logger.LogError($"[{summary}] : 로그 저장 실패"); + + return Ok(APIResponse.Send(returnCode, returnMsg, Empty)); + + + } + catch (TokenException tokenEx) + { + return Ok(APIResponse.Send("101", $"[{summary}], 입력 받은 토큰의 문제", Empty)); + } + catch (RefreshRevokeException refreshEx) + { + return Ok(APIResponse.Send("102", $"[{summary}], 폐기된 리프레시 토큰", Empty)); + } + catch (Exception ex) + { + return StatusCode(500, APIResponse.UnknownError($"[{summary}], {ex.Message}")); + } + } +} + + +// 근데 회원 정보를 변경하는게 뭐뭐를 변경해야 하는지 아직 정해진게 없어서 이건 일단 보류 + /* + [HttpGet("set")] + [CustomOperation("회원 정보 변경", "회원 정보 변경", "사용자")] + public async Task SetUserData(string token, string refresh) //, [FromBody]) + { + if (string.IsNullOrEmpty(token) || string.IsNullOrEmpty(refresh)) + return BadRequest(APIResponse.InvalidInputError()); + if (!ModelState.IsValid) return BadRequest(APIResponse.InvalidInputError()); + string summary = String.Empty; + + try + { + summary = _repositoryService.ReadSummary(typeof(UserController), "Cancel"); + + + // 여기서 애초에 토큰 관련 에러가 2개가 나오게 만들어져 있음 + var validateToken = await _repositoryService.ValidateToken(token, refresh); + var user = await _dbContext.User.FirstOrDefaultAsync(u => u.uid == validateToken.uid); + + } + catch (TokenException tokenEx) + { + return Ok(APIResponse.Send("101", $"[{summary}], 입력 받은 토큰의 문제", Empty)); + } + catch (RefreshRevokeException refreshEx) + { + return Ok(APIResponse.Send("102", $"[{summary}], 폐기된 리프레시 토큰", Empty)); + } + catch (Exception ex) + { + return StatusCode(500, APIResponse.UnknownError($"[{summary}], {ex.Message}")); + } + } }