[] 로그인 관련 데이터 로직 변경

This commit is contained in:
김선규 2025-06-09 17:46:49 +09:00
parent 6a543945e7
commit a9462ca9b5
3 changed files with 1705 additions and 13 deletions

View File

@ -27,7 +27,7 @@ namespace Back.Program.Controllers.V1
private readonly IAppRepository _appRepository; private readonly IAppRepository _appRepository;
private readonly ISessionService _sessionService; private readonly ISessionService _sessionService;
public AppController(AppDbContext dbContext, ILogger<AppController> logger, IRepositoryService repositoryService, JwtTokenService jwtTokenService,IAppService appService, IAppRepository appRepository, ISessionService sessionService) public AppController(AppDbContext dbContext, ILogger<AppController> logger, IRepositoryService repositoryService, JwtTokenService jwtTokenService, IAppService appService, IAppRepository appRepository, ISessionService sessionService)
{ {
_dbContext = dbContext; _dbContext = dbContext;
_logger = logger; _logger = logger;
@ -38,23 +38,23 @@ namespace Back.Program.Controllers.V1
_sessionService = sessionService; _sessionService = sessionService;
} }
// 이 키값의 제한 시간은 24h이다 // 이 키값의 제한 시간은 24h이다
[HttpGet] [HttpGet]
[CustomOperation("헤더 정보 생성", "헤더에 접근하기 위한 키 값 받아오기", "시스템")] [CustomOperation("헤더 정보 생성", "헤더에 접근하기 위한 키 값 받아오기", "시스템")]
public async Task<IActionResult> GetHeaderValue(string type, string specific, string project) public async Task<IActionResult> GetHeaderValue(string type, string specific, string project)
{ {
if (string.IsNullOrEmpty(specific) || string.IsNullOrEmpty(type) || string.IsNullOrEmpty(project)) if (string.IsNullOrEmpty(specific) || string.IsNullOrEmpty(type) || string.IsNullOrEmpty(project))
return BadRequest(APIResponse.InvalidInputError()); return BadRequest(APIResponse.InvalidInputError());
if (!ModelState.IsValid) return BadRequest(APIResponse.InvalidInputError()); if (!ModelState.IsValid) return BadRequest(APIResponse.InvalidInputError());
string summary = _repositoryService.ReadSummary(typeof(AppController), "GetHeaderValue"); string summary = _repositoryService.ReadSummary(typeof(AppController), "GetHeaderValue");
var result = await _appService.GetHeader(summary, type, specific, project); var result = await _appService.GetHeader(summary, type, specific, project);
return Ok(result); return Ok(result);
} }
[HttpGet("version")] [HttpGet("version")]
[CustomOperation("앱 버전 확인","앱 버전을 확인해서 업데이트 여부 판단", "시스템")] [CustomOperation("앱 버전 확인", "앱 버전을 확인해서 업데이트 여부 판단", "시스템")]
public async Task<IActionResult> GetVersionData(string type) public async Task<IActionResult> GetVersionData(string type)
{ {
if (string.IsNullOrEmpty(type)) return BadRequest(APIResponse.InvalidInputError()); if (string.IsNullOrEmpty(type)) return BadRequest(APIResponse.InvalidInputError());
@ -62,7 +62,7 @@ namespace Back.Program.Controllers.V1
var result = await _appService.GetVersion(summary, type); var result = await _appService.GetVersion(summary, type);
return Ok(result); return Ok(result);
} }
[HttpGet("retryAccess")] [HttpGet("retryAccess")]
[CustomOperation("엑세스 토큰 재발급", "액세스 토큰 재발급 동작 수행", "시스템")] [CustomOperation("엑세스 토큰 재발급", "액세스 토큰 재발급 동작 수행", "시스템")]
public async Task<IActionResult> RetryAccessToken(string refresh) public async Task<IActionResult> RetryAccessToken(string refresh)

View File

@ -30,10 +30,16 @@ public class OutController: ControllerBase
_kakaoService = kakaoService; _kakaoService = kakaoService;
_sessionService = sessionService; _sessionService = sessionService;
} }
[HttpGet("kakao/auth")] [HttpGet("kakao/auth")]
[CustomOperation("카카오 로그인", "카카오 로그인 동작", "사용자")] [CustomOperation("카카오 로그인", "카카오 로그인 동작", "사용자")]
public async Task<IActionResult> KakaoLogin([FromQuery] string? scope) public async Task<IActionResult> KakaoLogin([FromQuery] string? scope, [FromQuery] string? redirectPath)
{ {
if (!string.IsNullOrEmpty(redirectPath))
{
await _sessionService.SetString("redirectPath", redirectPath);
}
var url = await _kakaoService.GetAuthorizationUrl(scope ?? ""); var url = await _kakaoService.GetAuthorizationUrl(scope ?? "");
Console.WriteLine($"카카오 로그인 API: {url}"); Console.WriteLine($"카카오 로그인 API: {url}");
return Ok(new { url }); return Ok(new { url });
@ -46,7 +52,6 @@ public class OutController: ControllerBase
Console.WriteLine($"리다이렉트 : {response}"); Console.WriteLine($"리다이렉트 : {response}");
if (success) if (success)
{ {
// HttpContext.Session.SetString("AccessToken", response);
var (idSuccess, idResponse) = await _kakaoService.UserMe(response); var (idSuccess, idResponse) = await _kakaoService.UserMe(response);
if (idSuccess) if (idSuccess)
{ {
@ -59,7 +64,6 @@ public class OutController: ControllerBase
Console.WriteLine($"login = {loginResult.JsonToString()}"); Console.WriteLine($"login = {loginResult.JsonToString()}");
if (loginResult.status.code == "000") if (loginResult.status.code == "000")
{ {
var data = loginResult.data as LoginAPIResponse ?? new LoginAPIResponse(); var data = loginResult.data as LoginAPIResponse ?? new LoginAPIResponse();
if (data != null) if (data != null)
{ {
@ -68,7 +72,19 @@ public class OutController: ControllerBase
if (await _sessionService.SetString("token", token) && if (await _sessionService.SetString("token", token) &&
await _sessionService.SetString("refresh", refresh)) await _sessionService.SetString("refresh", refresh))
{ {
return Redirect("/about"); var (hasPath, redirectPath) = await _sessionService.GetString("redirectPath");
await _sessionService.Remove("redirectPath"); // 사용 후 세션에서 제거
// 로그인 성공 flag 쿠키 저장
Response.Cookies.Append("IsLogin", "true", new CookieOptions
{
HttpOnly = false,
Secure = true,
SameSite = SameSiteMode.Lax,
Path = "/",
Expires = DateTime.Now.AddDays(1)
});
return Redirect(hasPath && !string.IsNullOrEmpty(redirectPath) ? redirectPath : "/about");
} }
} }
} }
@ -83,13 +99,20 @@ public class OutController: ControllerBase
{ {
return BadRequest(new { error = "로그인 실패", message = loginResult.status.message }); return BadRequest(new { error = "로그인 실패", message = loginResult.status.message });
} }
// return Ok(new { id="cc" });
} }
} }
Console.WriteLine($"ID_res = {idResponse}"); Console.WriteLine($"ID_res = {idResponse}");
} }
return BadRequest(); return BadRequest();
} }
// // 로그아웃 API 예시 (이미 있다면 해당 위치에 추가)
// [HttpGet("logout")]
// public IActionResult Logout()
// {
// // 세션/쿠키 등 로그아웃 처리
// Response.Cookies.Delete("IsLogin");
// // 기타 로그아웃 처리 로직...
// return Redirect("/");
// }
} }

1669
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff