[✨] 회원 탈퇴 API 생성
This commit is contained in:
parent
19fb34bc32
commit
6963c5eadb
|
@ -31,7 +31,8 @@ public class UserController : ControllerBase
|
||||||
private readonly JwtTokenService _jwtTokenService;
|
private readonly JwtTokenService _jwtTokenService;
|
||||||
private readonly IRepositoryService _repositoryService;
|
private readonly IRepositoryService _repositoryService;
|
||||||
|
|
||||||
public UserController(AppDbContext dbContext, ILogger<UserController> logger, JwtTokenService jwtTokenService, IRepositoryService repositoryService)
|
public UserController(AppDbContext dbContext, ILogger<UserController> logger, JwtTokenService jwtTokenService,
|
||||||
|
IRepositoryService repositoryService)
|
||||||
{
|
{
|
||||||
_dbContext = dbContext;
|
_dbContext = dbContext;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
@ -43,58 +44,61 @@ public class UserController : ControllerBase
|
||||||
[CustomOperation("회원 정보 조회", "회원 정보 조회 (자기자신)", "사용자")]
|
[CustomOperation("회원 정보 조회", "회원 정보 조회 (자기자신)", "사용자")]
|
||||||
public async Task<IActionResult> GetUserData(string token, string refresh)
|
public async Task<IActionResult> GetUserData(string token, string refresh)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(token) || string.IsNullOrEmpty(refresh)) return BadRequest(APIResponse.InvalidInputError());
|
if (string.IsNullOrEmpty(token) || string.IsNullOrEmpty(refresh))
|
||||||
if(!ModelState.IsValid) return BadRequest(APIResponse.InvalidInputError());
|
return BadRequest(APIResponse.InvalidInputError());
|
||||||
|
if (!ModelState.IsValid) return BadRequest(APIResponse.InvalidInputError());
|
||||||
string summary = String.Empty;
|
string summary = String.Empty;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var validateToken = await _repositoryService.ValidateToken(token, refresh);
|
var validateToken = await _repositoryService.ValidateToken(token, refresh);
|
||||||
summary = _repositoryService.ReadSummary(typeof(PushController), "GetUserData");
|
summary = _repositoryService.ReadSummary(typeof(UserController), "GetUserData");
|
||||||
|
|
||||||
var user = await _dbContext.User
|
var user = await _dbContext.User
|
||||||
.Where(u => u.uid == validateToken.uid)
|
.Where(u => u.uid == validateToken.uid)
|
||||||
.Select(u => new User
|
.Select(u => new User
|
||||||
{
|
{
|
||||||
uid = u.uid,
|
uid = u.uid,
|
||||||
name = u.name,
|
name = u.name,
|
||||||
auto_login_yn = u.auto_login_yn,
|
auto_login_yn = u.auto_login_yn,
|
||||||
birth = u.birth,
|
birth = u.birth,
|
||||||
device_id = u.device_id,
|
device_id = u.device_id,
|
||||||
login_date = u.login_date,
|
login_date = u.login_date,
|
||||||
type = u.type
|
type = u.type
|
||||||
})
|
})
|
||||||
.FirstOrDefaultAsync();
|
.FirstOrDefaultAsync();
|
||||||
|
|
||||||
return Ok(APIResponse.Send("000", $"[{summary}], 정상", user));
|
return Ok(APIResponse.Send("000", $"[{summary}], 정상", user));
|
||||||
}
|
}
|
||||||
catch (TokenException tokenEx)
|
catch (TokenException tokenEx)
|
||||||
{
|
{
|
||||||
_logger.LogInformation($"[{summary}] : {tokenEx}");
|
_logger.LogInformation($"[{summary}] : {tokenEx}");
|
||||||
return Ok(APIResponse.Send("001", $"[{summary}], 토큰에 문제가 있음",Empty));
|
return Ok(APIResponse.Send("001", $"[{summary}], 토큰에 문제가 있음", Empty));
|
||||||
}
|
}
|
||||||
catch (RefreshRevokeException refreshEx)
|
catch (RefreshRevokeException refreshEx)
|
||||||
{
|
{
|
||||||
_logger.LogInformation($"[{summary}] : {refreshEx}");
|
_logger.LogInformation($"[{summary}] : {refreshEx}");
|
||||||
return Ok(APIResponse.Send("001", $"[{summary}], 폐기된 리프레시 토큰",Empty));
|
return Ok(APIResponse.Send("001", $"[{summary}], 폐기된 리프레시 토큰", Empty));
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
return StatusCode(500, APIResponse.UnknownError(ex.Message));
|
return StatusCode(500, APIResponse.UnknownError(ex.Message));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("academy")]
|
[HttpGet("academy")]
|
||||||
[CustomOperation("학원 리스트 확인", "사용자가 등록된 학원 리스트 확인", "사용자")]
|
[CustomOperation("학원 리스트 확인", "사용자가 등록된 학원 리스트 확인", "사용자")]
|
||||||
public async Task<IActionResult> ReadAcademyInfo(string token, string refresh)
|
public async Task<IActionResult> ReadAcademyInfo(string token, string refresh)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(token) || string.IsNullOrEmpty(refresh)) return BadRequest(APIResponse.InvalidInputError());
|
if (string.IsNullOrEmpty(token) || string.IsNullOrEmpty(refresh))
|
||||||
if(!ModelState.IsValid) return BadRequest(APIResponse.InvalidInputError());
|
return BadRequest(APIResponse.InvalidInputError());
|
||||||
|
if (!ModelState.IsValid) return BadRequest(APIResponse.InvalidInputError());
|
||||||
string summary = String.Empty;
|
string summary = String.Empty;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var validateToken = await _repositoryService.ValidateToken(token, refresh);
|
var validateToken = await _repositoryService.ValidateToken(token, refresh);
|
||||||
summary = _repositoryService.ReadSummary(typeof(PushController), "ReadAcademyInfo");
|
summary = _repositoryService.ReadSummary(typeof(UserController), "ReadAcademyInfo");
|
||||||
|
|
||||||
var academies = await (from ua in _dbContext.UserAcademy
|
var academies = await (from ua in _dbContext.UserAcademy
|
||||||
join a in _dbContext.Academy on ua.bid equals a.bid
|
join a in _dbContext.Academy on ua.bid equals a.bid
|
||||||
|
@ -106,17 +110,17 @@ public class UserController : ControllerBase
|
||||||
}).ToListAsync();
|
}).ToListAsync();
|
||||||
|
|
||||||
|
|
||||||
return Ok(APIResponse.Send("000",$"[{summary}], 정상.",academies));
|
return Ok(APIResponse.Send("000", $"[{summary}], 정상.", academies));
|
||||||
}
|
}
|
||||||
catch (TokenException tokenEx)
|
catch (TokenException tokenEx)
|
||||||
{
|
{
|
||||||
_logger.LogInformation($"[{summary}] : {tokenEx}");
|
_logger.LogInformation($"[{summary}] : {tokenEx}");
|
||||||
return Ok(APIResponse.Send("001", $"[{summary}], 토큰에 문제가 있음",Empty));
|
return Ok(APIResponse.Send("001", $"[{summary}], 토큰에 문제가 있음", Empty));
|
||||||
}
|
}
|
||||||
catch (RefreshRevokeException refreshEx)
|
catch (RefreshRevokeException refreshEx)
|
||||||
{
|
{
|
||||||
_logger.LogInformation($"[{summary}] : {refreshEx}");
|
_logger.LogInformation($"[{summary}] : {refreshEx}");
|
||||||
return Ok(APIResponse.Send("001", $"[{summary}], 폐기된 리프레시 토큰",Empty));
|
return Ok(APIResponse.Send("001", $"[{summary}], 폐기된 리프레시 토큰", Empty));
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -131,13 +135,14 @@ public class UserController : ControllerBase
|
||||||
public async Task<IActionResult> Login(string acctype, string sns_id)
|
public async Task<IActionResult> Login(string acctype, string sns_id)
|
||||||
{
|
{
|
||||||
// API 동작 파라미터 입력 값 확인
|
// API 동작 파라미터 입력 값 확인
|
||||||
if (string.IsNullOrEmpty(acctype) && string.IsNullOrEmpty(sns_id)) return BadRequest(APIResponse.InvalidInputError());
|
if (string.IsNullOrEmpty(acctype) && string.IsNullOrEmpty(sns_id))
|
||||||
if(!ModelState.IsValid) return BadRequest(APIResponse.InvalidInputError());
|
return BadRequest(APIResponse.InvalidInputError());
|
||||||
|
if (!ModelState.IsValid) return BadRequest(APIResponse.InvalidInputError());
|
||||||
string summary = String.Empty;
|
string summary = String.Empty;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
summary = _repositoryService.ReadSummary(typeof(PushController), "Login");
|
summary = _repositoryService.ReadSummary(typeof(UserController), "Login");
|
||||||
|
|
||||||
var login = await _dbContext.Login
|
var login = await _dbContext.Login
|
||||||
.FirstOrDefaultAsync(l => l.sns_type == acctype && l.sns_id == sns_id);
|
.FirstOrDefaultAsync(l => l.sns_type == acctype && l.sns_id == sns_id);
|
||||||
|
@ -149,7 +154,7 @@ public class UserController : ControllerBase
|
||||||
.FirstOrDefaultAsync(u => u.uid == login.uid);
|
.FirstOrDefaultAsync(u => u.uid == login.uid);
|
||||||
|
|
||||||
// 회원 정보 없음
|
// 회원 정보 없음
|
||||||
if (user == null) return Ok(APIResponse.Send("002", $"[{summary}], 회원 정보 오류",Empty));
|
if (user == null) return Ok(APIResponse.Send("002", $"[{summary}], 회원 정보 오류", Empty));
|
||||||
|
|
||||||
// 정상적으로 User 테이블에도 있는것이 확인 됨
|
// 정상적으로 User 테이블에도 있는것이 확인 됨
|
||||||
user.login_date = DateTime.Now;
|
user.login_date = DateTime.Now;
|
||||||
|
@ -170,7 +175,7 @@ public class UserController : ControllerBase
|
||||||
log = $"[{summary}] : 정상"
|
log = $"[{summary}] : 정상"
|
||||||
};
|
};
|
||||||
await _repositoryService.SaveData<LogUser>(logUser);
|
await _repositoryService.SaveData<LogUser>(logUser);
|
||||||
return Ok(APIResponse.Send("000",$"[{summary}], 정상",
|
return Ok(APIResponse.Send("000", $"[{summary}], 정상",
|
||||||
new { token = accessToken, refresh = refreshToken.refresh_token }));
|
new { token = accessToken, refresh = refreshToken.refresh_token }));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -189,7 +194,7 @@ public class UserController : ControllerBase
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return Ok(APIResponse.Send("001", $"[{summary}], 로그인 정보 없음",Empty));
|
return Ok(APIResponse.Send("001", $"[{summary}], 로그인 정보 없음", Empty));
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -202,12 +207,12 @@ public class UserController : ControllerBase
|
||||||
[CustomOperation("회원 가입", "사용자 회원 가입", "사용자")]
|
[CustomOperation("회원 가입", "사용자 회원 가입", "사용자")]
|
||||||
public async Task<IActionResult> UserRegister([FromBody] UserAll request)
|
public async Task<IActionResult> UserRegister([FromBody] UserAll request)
|
||||||
{
|
{
|
||||||
if(!ModelState.IsValid) return BadRequest(APIResponse.InvalidInputError());
|
if (!ModelState.IsValid) return BadRequest(APIResponse.InvalidInputError());
|
||||||
string summary = String.Empty;
|
string summary = String.Empty;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
summary = _repositoryService.ReadSummary(typeof(PushController), "UserRegister");
|
summary = _repositoryService.ReadSummary(typeof(UserController), "UserRegister");
|
||||||
var localPartEmail = request.email.Substring(0, request.email.IndexOf('@'));
|
var localPartEmail = request.email.Substring(0, request.email.IndexOf('@'));
|
||||||
var uid = $"AM{localPartEmail}{DateTime.Now:yyyyMMdd}";
|
var uid = $"AM{localPartEmail}{DateTime.Now:yyyyMMdd}";
|
||||||
|
|
||||||
|
@ -274,7 +279,7 @@ public class UserController : ControllerBase
|
||||||
if (await _repositoryService.SaveData<LogUser>(logUser))
|
if (await _repositoryService.SaveData<LogUser>(logUser))
|
||||||
_logger.LogError($"[{summary}] : 로그 저장 성공");
|
_logger.LogError($"[{summary}] : 로그 저장 성공");
|
||||||
|
|
||||||
return Ok(APIResponse.Send("000",$"[{summary}], 정상",new
|
return Ok(APIResponse.Send("000", $"[{summary}], 정상", new
|
||||||
{
|
{
|
||||||
accessToken = token,
|
accessToken = token,
|
||||||
refreshToken = refreshToken.refresh_token
|
refreshToken = refreshToken.refresh_token
|
||||||
|
@ -303,13 +308,14 @@ public class UserController : ControllerBase
|
||||||
[CustomOperation("로그아웃", "사용자 로그아웃", "사용자")]
|
[CustomOperation("로그아웃", "사용자 로그아웃", "사용자")]
|
||||||
public async Task<IActionResult> Logout(string token, string refresh)
|
public async Task<IActionResult> Logout(string token, string refresh)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(token) || string.IsNullOrEmpty(refresh)) return BadRequest(APIResponse.InvalidInputError());
|
if (string.IsNullOrEmpty(token) || string.IsNullOrEmpty(refresh))
|
||||||
|
return BadRequest(APIResponse.InvalidInputError());
|
||||||
if (!ModelState.IsValid) return BadRequest(APIResponse.InvalidInputError());
|
if (!ModelState.IsValid) return BadRequest(APIResponse.InvalidInputError());
|
||||||
string summary = String.Empty;
|
string summary = String.Empty;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
summary = _repositoryService.ReadSummary(typeof(PushController), "UserRegister");
|
summary = _repositoryService.ReadSummary(typeof(UserController), "UserRegister");
|
||||||
|
|
||||||
// 여기서 애초에 토큰 관련 에러가 2개가 나오게 만들어져 있음
|
// 여기서 애초에 토큰 관련 에러가 2개가 나오게 만들어져 있음
|
||||||
var validateToken = await _repositoryService.ValidateToken(token, refresh);
|
var validateToken = await _repositoryService.ValidateToken(token, refresh);
|
||||||
|
@ -322,6 +328,7 @@ public class UserController : ControllerBase
|
||||||
await _repositoryService.SaveData<RefreshToken>(refreshToken);
|
await _repositoryService.SaveData<RefreshToken>(refreshToken);
|
||||||
return Ok(APIResponse.Send("000", $"[{summary}], 로그아웃 정상", Empty));
|
return Ok(APIResponse.Send("000", $"[{summary}], 로그아웃 정상", Empty));
|
||||||
}
|
}
|
||||||
|
|
||||||
// 리프레시 토큰이 없다?? 그럼 이거 무조건 문제지 (이유를 알 수 없는)
|
// 리프레시 토큰이 없다?? 그럼 이거 무조건 문제지 (이유를 알 수 없는)
|
||||||
return Ok(APIResponse.UnknownError());
|
return Ok(APIResponse.UnknownError());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user