public async Task <ActionResult <ApiResponse> > ForgetPassword([Required, EmailAddress] string email) { var appUser = await userManager.FindByEmailAsync(email); if (appUser == null) { return(new ApiResponse(404, new ApiError("User not found"))); } var passwordToken = await userManager.GeneratePasswordResetTokenAsync(appUser); var passwordLink = $"urltofrontend?token={HttpUtility.UrlEncode(passwordToken)}&email={email}"; var mailBuilder = MailHelper.BuildMail(MailTypeEnum.NewUser, new EmailAddress { Name = "Support", Address = "*****@*****.**" }, new EmailAddress { Name = appUser.FirstName, Address = appUser.Email }, passwordLink); hangfireJobService.ProcessFireAndForgetJobs <IEmailService>(x => x.Send(mailBuilder)); return(new ApiResponse("Reset password link was sent", true)); }
public async Task <ActionResult <ApiResponse> > Register([FromBody] RegisterDto model) { var appUser = new ApplicationUser { FirstName = model.FirstName, LastName = model.LastName, Email = model.Email, UserName = model.Email }; var result = await userManager.CreateAsync(appUser, model.Password); if (result.Succeeded) { var confirmationToken = await userManager.GenerateEmailConfirmationTokenAsync(appUser); var confirmationLink = BaseUrl + $"/api/{ApiVersion}/account/confirm-email?token={HttpUtility.UrlEncode(confirmationToken)}&email={appUser.Email}"; await userManager.AddToRoleAsync(appUser, model.Role); await signInManager.SignInAsync(appUser, false); var mailBuilder = MailHelper.BuildMail(MailTypeEnum.NewUser, new EmailAddress { Name = "Support", Address = "*****@*****.**" }, new EmailAddress { Name = appUser.FirstName, Address = appUser.Email }, confirmationLink); hangfireJobService.ProcessFireAndForgetJobs <IEmailService>(x => x.Send(mailBuilder)); var user = mapper.Map <UserDto>(appUser); user.Token = (string) await GenerateJwtToken(appUser); return(new ApiResponse("User registered.", user)); } return(new ApiResponse(400, new ApiError("User non registered"))); }
public async Task <ActionResult <ApiResponse> > Login([FromBody] LoginDto login) { var result = await signInManager.PasswordSignInAsync(login.Email, login.Password, false, false); if (result.Succeeded) { var appUser = userManager.Users.SingleOrDefault(x => x.Email == login.Email); var mailBuilder = MailHelper.BuildMail( MailTypeEnum.LoginUser, new EmailAddress { Name = "Support", Address = "*****@*****.**" }, new EmailAddress { Name = appUser.FirstName, Address = appUser.Email }); hangfireJobService.ProcessFireAndForgetJobs <IEmailService>(x => x.Send(mailBuilder)); var user = mapper.Map <UserDto>(appUser); user.Token = (string) await GenerateJwtToken(appUser); return(new ApiResponse("Login succesfully", user)); } return(new ApiResponse(401, new ApiError("Invalid login credentials"))); }