Example #1
0
        public async Task <ActionResult> EditWebsite(ProfileEditWebsiteModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            try
            {
                var svcWebsiteData = new MUser_UpdateWebsite()
                {
                    WebsiteUrl = model.WebsiteUrl
                };

                await UserMicroService.UpdateWebsiteAsync(GetUserId(), svcWebsiteData);

                AddFeedbackMessage(Feedback.FeedbackMessageTypes.Informational, "Website changed.");

                return(RedirectToAction("Index"));
            }
            catch (ServiceException ex)
            {
                AddModelErrors(ex);
                return(View());
            }
        }
Example #2
0
        public async Task <ActionResult> ForgotPassword(LoginForgotPasswordViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            try
            {
                var user = await UserMicroService.GetUserByNameAsync(model.Email);

                if (user == null)
                {
                    throw new ServiceException("Invalid user ID or password.");
                }

                var userId      = user.UserId;
                var isConfirmed = await UserMicroService.GetEmailConfirmedAsync(userId);

                if (isConfirmed)
                {
                    await SendEmailResetAsync(userId);
                }

                return(RedirectToAction("ForgotPasswordConfirmation", "Login"));
            }
            catch (ServiceException ex)
            {
                AddModelErrors(ex);
                return(View());
            }
        }
Example #3
0
        public async Task <ActionResult> EditTimeZone(ProfileEditTimeZoneModel model)
        {
            if (!ModelState.IsValid)
            {
                if (model.TimeZones == null)
                {
                    model.TimeZones = GetTimeZones(string.IsNullOrEmpty(model.TimeZoneId));
                }
                return(View(model));
            }

            try
            {
                var svcTimeZoneData = new MUser_UpdateTimeZone()
                {
                    TimeZoneId = model.TimeZoneId
                };

                await UserMicroService.UpdateTimeZoneAsync(GetUserId(), svcTimeZoneData);

                UserLocale.RemoveFrom(HttpContext);

                AddFeedbackMessage(Feedback.FeedbackMessageTypes.Informational, "Timezone changed.");

                return(RedirectToAction("Index"));
            }
            catch (ServiceException ex)
            {
                AddModelErrors(ex);
                return(View());
            }
        }
Example #4
0
        public async Task <ActionResult> Index()
        {
            var svcProfileDetailData = await UserMicroService.GetUserAsync(GetUserId());

            var model = ModelFactory.CreateProfileDetailModel(svcProfileDetailData);

            return(View(model));
        }
Example #5
0
        private async Task SendEmailResetAsync(string userId)
        {
            var code = await UserManagementMicroService.GeneratePasswordResetTokenAsync(userId);

            var callbackUrl = Url.Action("ResetPassword", "Login", values: new { userId, code }, protocol: Request.Scheme);

            await UserMicroService.SendResetEmailAsync(userId, callbackUrl);
        }
Example #6
0
        private async Task SendConfirmationEmailAsync(string userId)
        {
            var code = await UserManagementMicroService.GenerateEmailConfirmationTokenAsync(userId);

            var callbackUrl = Url.Action("ConfirmEmail", "Login", values: new { userId, code }, protocol: Request.Scheme);

            await UserMicroService.SendConfirmationEmailAsync(userId, callbackUrl);
        }
Example #7
0
        public async Task <ActionResult> EditShippingAddress()
        {
            var svcProfileDetailData = await UserMicroService.GetUserAsync(GetUserId());

            var model = ModelFactory.CreateProfileEditShippingAddressModel(svcProfileDetailData);

            model.StateCodes = GetStateCodes(string.IsNullOrEmpty(model.StateCode));

            return(View(model));
        }
Example #8
0
        public async Task <ActionResult> Index(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            try
            {
                var user = await UserMicroService.GetUserByNameAsync(model.Email);

                if (user == null)
                {
                    throw new ServiceException("Invalid user ID or password.");
                }

                var userId    = user.UserId;
                var confirmed = await UserMicroService.GetEmailConfirmedAsync(userId);

                if (!confirmed)
                {
                    await SendConfirmationEmailAsync(userId);

                    AddModelError("Your email address has not been confirmed.  A confirmation email has been sent.");
                    return(View());
                }

                var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.IsPersistent, lockoutOnFailure : true);

                if (result.IsLockedOut)
                {
                    AddModelError("This account has been locked out.  Please reset your password to recover.");
                    return(View());
                }
                else if (result.RequiresTwoFactor)
                {
                    // Used by two-factor authentication.
                    return(View());
                }
                else if (!result.Succeeded)
                {
                    AddModelError("Invalid user ID or password.");
                    return(View());
                }

                UserLocale.RemoveFrom(HttpContext);

                return(RedirectToLocal(returnUrl));
            }
            catch (ServiceException ex)
            {
                AddModelErrors(ex);
                return(View());
            }
        }
Example #9
0
        public async Task <ActionResult> EditEmail()
        {
            var svcProfileDetailData = await UserMicroService.GetUserAsync(GetUserId());

            var model = new ProfileEditEmailModel()
            {
                Email = svcProfileDetailData.Email
            };

            return(View(model));
        }
Example #10
0
        public async Task <ActionResult> EditNickname()
        {
            var svcProfileDetailData = await UserMicroService.GetUserAsync(GetUserId());

            var model = new ProfileEditNicknameModel()
            {
                Nickname = svcProfileDetailData.NickName
            };

            return(View(model));
        }
Example #11
0
        public async Task <ActionResult> EditTimeZone()
        {
            var svcProfileDetailData = await UserMicroService.GetUserAsync(GetUserId());

            var model = new ProfileEditTimeZoneModel()
            {
                TimeZoneId = svcProfileDetailData.TimeZoneId
            };

            model.TimeZones = GetTimeZones(string.IsNullOrEmpty(model.TimeZoneId));

            return(View(model));
        }
Example #12
0
        public async Task <ActionResult> DeleteShippingAddress()
        {
            try
            {
                await UserMicroService.UpdateShippingAddressAsync(GetUserId(), null);

                return(RedirectToAction("Index"));
            }
            catch (ServiceException ex)
            {
                AddModelErrors(ex);
                return(View());
            }
        }
Example #13
0
        public async Task <ActionResult> ResetPassword(string userId, string code)
        {
            try
            {
                var email = await UserMicroService.GetUserEmailAsync(userId);

                var model = new LoginResetPasswordViewModel()
                {
                    UserId = userId,
                    Code   = code,
                    Email  = email
                };

                return(View(model));
            }
            catch (ServiceException ex)
            {
                AddModelErrors(ex);
                return(View());
            }
        }
Example #14
0
        public async Task <ActionResult> EditShippingAddress(ProfileEditShippingAddressModel model)
        {
            //if (!ControllerModelFactory.IsValidPostalCode(model.PostalCode))
            //{
            //    ModelState.AddModelError("PostalCode", "Invalid postal code.");
            //}
            if (!ModelState.IsValid)
            {
                if (model.StateCodes == null)
                {
                    model.StateCodes = GetStateCodes(string.IsNullOrEmpty(model.StateCode));
                }
                return(View(model));
            }

            try
            {
                var svcShippingAddressData = new MUser_UpdateShippingAddress()
                {
                    AddressLine1 = Trim(model.AddressLine1),
                    AddressLine2 = Trim(model.AddressLine2),
                    City         = Trim(model.City),
                    StateCode    = Trim(model.StateCode),
                    PostalCode   = ModelFactory.ParsePostalCode(model.PostalCode),
                    CountryCode  = Trim(model.CountryCode) ?? "US"
                };

                await UserMicroService.UpdateShippingAddressAsync(GetUserId(), svcShippingAddressData);

                AddFeedbackMessage(Feedback.FeedbackMessageTypes.Informational, "Shipping address changed.");

                return(RedirectToAction("Index"));
            }
            catch (ServiceException ex)
            {
                AddModelErrors(ex);
                return(View());
            }
        }
Example #15
0
        public async Task <AUser_UserSummaryList> GetUsersAsync(AUser_GetUsers request)
        {
            using var log = BeginFunction(nameof(UserAdminService), nameof(GetUsersAsync), request);
            try
            {
                await Assert(SecurityPolicy.IsPrivileged).ConfigureAwait(false);

                var mSummaries = await UserMicroService.GetUserSummariesAsync(request.UserName, request.Role, request.RecordCount);

                var result = new AUser_UserSummaryList()
                {
                    MSummaries = mSummaries
                };

                log.Result(result);

                return(result);
            }
            catch (Exception ex)
            {
                log.Exception(ex);
                throw;
            }
        }