Added new API check if user with email exists or not

This commit is contained in:
ashutosh.nehete 2025-08-05 11:18:31 +05:30
parent 7bf30d722b
commit 60a3b3ab22

View File

@ -6,8 +6,11 @@ using Marco.Pms.Model.Utilities;
using Marco.Pms.Model.ViewModels.Employee;
using Marco.Pms.Services.Service.ServiceInterfaces;
using MarcoBMS.Services.Helpers;
using MarcoBMS.Services.Service;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using System.Net.Mail;
namespace MarcoBMS.Services.Controllers
{
@ -18,14 +21,17 @@ namespace MarcoBMS.Services.Controllers
public class UserController : ControllerBase
{
private readonly UserHelper _userHelper;
private readonly UserManager<ApplicationUser> _userManager;
private readonly EmployeeHelper _employeeHelper;
private readonly ILoggingService _logger;
private readonly IProjectServices _projectServices;
private readonly RolesHelper _rolesHelper;
public UserController(EmployeeHelper employeeHelper, IProjectServices projectServices, UserHelper userHelper, RolesHelper rolesHelper)
public UserController(EmployeeHelper employeeHelper, UserManager<ApplicationUser> userManager, ILoggingService logger, IProjectServices projectServices, UserHelper userHelper, RolesHelper rolesHelper)
{
_userManager = userManager;
_userHelper = userHelper;
_logger = logger;
_employeeHelper = employeeHelper;
_projectServices = projectServices;
_rolesHelper = rolesHelper;
@ -81,5 +87,44 @@ namespace MarcoBMS.Services.Controllers
return Ok(ApiResponse<object>.SuccessResponse(profile, "Success", 200));
}
[HttpGet("email/{email}")]
public async Task<IActionResult> GetUserByEmail(string email)
{
var isvalid = IsValidEmail(email);
if (!isvalid)
{
_logger.LogWarning("User provided invalid email address");
return BadRequest(ApiResponse<object>.ErrorResponse("Invalid email", "Invalid email", 400));
}
var user = await _userManager.FindByEmailAsync(email);
if (user == null)
{
_logger.LogInfo("User with email {Email} not found in ASP.NET users table", email);
return Ok(ApiResponse<object>.SuccessResponse(true, "User not exists", 200));
}
else
{
_logger.LogInfo("User with email {Email} founded in ASP.NET users table", email);
return Ok(ApiResponse<object>.SuccessResponse(false, "User exists", 200));
}
}
private static bool IsValidEmail(string email)
{
if (string.IsNullOrWhiteSpace(email))
return false;
try
{
var addr = new MailAddress(email);
return addr.Address == email.Trim();
}
catch
{
return false;
}
}
}
}