示例#1
0
        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));
        }
示例#2
0
        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")));
        }
示例#3
0
        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")));
        }