feat: 이메일 중복 체크 API 구현 (#58)
All checks were successful
SPMS_API/pipeline/head This commit looks good
All checks were successful
SPMS_API/pipeline/head This commit looks good
Reviewed-on: https://git.ipstein.myds.me/SPMS/SPMS_API/pulls/61
This commit is contained in:
commit
e96bbff727
|
|
@ -33,6 +33,19 @@ public class AuthController : ControllerBase
|
||||||
return Ok(ApiResponse<SignupResponseDto>.Success(result, "회원가입 완료. 이메일 인증이 필요합니다."));
|
return Ok(ApiResponse<SignupResponseDto>.Success(result, "회원가입 완료. 이메일 인증이 필요합니다."));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpPost("email/check")]
|
||||||
|
[AllowAnonymous]
|
||||||
|
[SwaggerOperation(
|
||||||
|
Summary = "이메일 중복 체크",
|
||||||
|
Description = "회원가입 전 이메일 사용 가능 여부를 확인합니다.")]
|
||||||
|
[SwaggerResponse(200, "이메일 중복 체크 성공", typeof(ApiResponse<EmailCheckResponseDto>))]
|
||||||
|
[SwaggerResponse(400, "잘못된 요청")]
|
||||||
|
public async Task<IActionResult> CheckEmailAsync([FromBody] EmailCheckRequestDto request)
|
||||||
|
{
|
||||||
|
var result = await _authService.CheckEmailAsync(request);
|
||||||
|
return Ok(ApiResponse<EmailCheckResponseDto>.Success(result));
|
||||||
|
}
|
||||||
|
|
||||||
[HttpPost("login")]
|
[HttpPost("login")]
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
[SwaggerOperation(
|
[SwaggerOperation(
|
||||||
|
|
|
||||||
10
SPMS.Application/DTOs/Auth/EmailCheckRequestDto.cs
Normal file
10
SPMS.Application/DTOs/Auth/EmailCheckRequestDto.cs
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace SPMS.Application.DTOs.Auth;
|
||||||
|
|
||||||
|
public class EmailCheckRequestDto
|
||||||
|
{
|
||||||
|
[Required(ErrorMessage = "이메일은 필수입니다.")]
|
||||||
|
[EmailAddress(ErrorMessage = "올바른 이메일 형식이 아닙니다.")]
|
||||||
|
public string Email { get; set; } = string.Empty;
|
||||||
|
}
|
||||||
11
SPMS.Application/DTOs/Auth/EmailCheckResponseDto.cs
Normal file
11
SPMS.Application/DTOs/Auth/EmailCheckResponseDto.cs
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace SPMS.Application.DTOs.Auth;
|
||||||
|
|
||||||
|
public class EmailCheckResponseDto
|
||||||
|
{
|
||||||
|
public string Email { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
[JsonPropertyName("is_available")]
|
||||||
|
public bool IsAvailable { get; set; }
|
||||||
|
}
|
||||||
|
|
@ -9,4 +9,5 @@ public interface IAuthService
|
||||||
Task<TokenRefreshResponseDto> RefreshTokenAsync(TokenRefreshRequestDto request);
|
Task<TokenRefreshResponseDto> RefreshTokenAsync(TokenRefreshRequestDto request);
|
||||||
Task LogoutAsync(long adminId);
|
Task LogoutAsync(long adminId);
|
||||||
Task ChangePasswordAsync(long adminId, ChangePasswordRequestDto request);
|
Task ChangePasswordAsync(long adminId, ChangePasswordRequestDto request);
|
||||||
|
Task<EmailCheckResponseDto> CheckEmailAsync(EmailCheckRequestDto request);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -215,4 +215,14 @@ public class AuthService : IAuthService
|
||||||
_adminRepository.Update(admin);
|
_adminRepository.Update(admin);
|
||||||
await _unitOfWork.SaveChangesAsync();
|
await _unitOfWork.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<EmailCheckResponseDto> CheckEmailAsync(EmailCheckRequestDto request)
|
||||||
|
{
|
||||||
|
var exists = await _adminRepository.EmailExistsAsync(request.Email);
|
||||||
|
return new EmailCheckResponseDto
|
||||||
|
{
|
||||||
|
Email = request.Email,
|
||||||
|
IsAvailable = !exists
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user