Beispiel #1
0
        public async Task TestForgotUserName2()
        {
            var controller     = new AccountController();
            var forgotUserName = new ForgotUsernameViewModel {
                Email = "*****@*****.**"
            };

            controller = InitOwinContext(controller);
            var result = await controller.ForgotUsername(forgotUserName);

            Assert.IsInstanceOf(typeof(ViewResult), result);
        }
        public async Task <ActionResult> ForgotUsername(ForgotUsernameViewModel forgotUsername)
        {
            var recaptcha          = new ReCaptcha();
            var responseFromServer = recaptcha.OnActionExecuting();

            if (responseFromServer.StartsWith("true", StringComparison.Ordinal))
            {
                if (forgotUsername != null && ModelState.IsValid)
                {
                    var userByEmail = await DatabaseContext.RegisteredUsers.Find(new BsonDocument {
                        { "Account.Email", forgotUsername.Email }
                    }).ToListAsync();

                    if (userByEmail.Count > 0)
                    {
                        using (var mail = new MailMessage())
                        {
                            mail.To.Add(forgotUsername.Email);
                            mail.Subject = "Royal Holloway LETS Username Recovery";
                            mail.Body    = "<p>Hello " + userByEmail[0].About.FirstName + ",</p><h3>Forgotten your username?</h3><p>We got a request about your Royal Holloway LETS account's username.<br/>Please find your username highlighted in bold below.<br/></p><h2>" + userByEmail[0].Account.UserName + "</h2><p>All the best,<br/>Royal Holloway LETS</p>";
                            SendEmail(mail);
                            ModelState.AddModelError("Success", "Please check you email, We have sent you your username.");
                            forgotUsername.Email = null;
                        }
                    }
                    else
                    {
                        ModelState.AddModelError("Email", "Sorry, The Email you provided is not present in our system.");
                        return(View(forgotUsername));
                    }
                }
            }
            else
            {
                ModelState.AddModelError("ReCaptcha", "Incorrect CAPTCHA entered.");
                return(View(forgotUsername));
            }
            return(View());
        }
        public async Task <ViewResult> ForgotUserName(ForgotUsernameViewModel unameForgot)
        {
            if (!ModelState.IsValid)
            {
                ModelState.AddModelError(nameof(unameForgot.Email), "Uw emailadres is incorrect, controleer dit aub");
            }
            else
            {
                var user = await _userManager.FindByEmailAsync(unameForgot.Email); //searching user by name

                if (user == null)                                                  //user not found
                {
                    ModelState.AddModelError(nameof(unameForgot.Email), "Uw emailadres is incorrect, controleer dit aub");
                }
                else
                {
                    await SendEmail(user, new ForgotUsernameMailMessageBuilder(user.UserName));

                    return(View("ForgotUserNameEnd")); //succeeded
                }
            }
            return(View());
        }
        //public ForgotUsernameController()
        //{
        //    userAccountService = new UserAccountService();
        //}

        // GET: ForgotUsername
        public ActionResult InitiateFindUser()
        {
            logger.Debug("ForgotUsername_Index");

            //set parameters
            string relayState = Request["relayState"];

            if (string.IsNullOrEmpty(relayState) && Request.QueryString["RelayState"] != null)
            {
                relayState = Request.QueryString["RelayState"];
            }
            else if (string.IsNullOrEmpty(relayState) && TempData["relayState"] != null)
            {
                relayState = (string)TempData["relayState"];
            }
            TempData["relayState"] = relayState;


            ForgotUsernameViewModel forgotUsername = new ForgotUsernameViewModel();

            ViewBag.IsNotFound = false;
            return(View("InitiateFindUser", forgotUsername));
        }
        public ActionResult CheckForUser(ForgotUsernameViewModel forgotUsernameViewModel)
        {
            logger.Debug("CheckForUser");
            CustomUser customUser = null;

            ViewBag.IsNotFound = false;
            if (!ModelState.IsValid)
            {
                return(View("Index", forgotUsernameViewModel));
            }

            //need to check against custom user profile since aicpaId is part of criteria
            //ajc debug
            //this implementation contains support for multiple return users
            //for now, returned records greater than 1 is considered an error

            System.Text.StringBuilder buildFilter = null;
            // build buildFilter
            //pagelimit cannot exceed 200
            buildFilter = new System.Text.StringBuilder();
            buildFilter.Append("status eq \"ACTIVE\" and ");
            buildFilter.Append("profile.lastName eq \"" + forgotUsernameViewModel.LastName + "\" and ");
            buildFilter.Append("profile.policyNumber eq \"" + forgotUsernameViewModel.policyNumber + "\"");
            //buildFilter.Append("&limit=8");

            PagedResults <CustomUser> pagedCustomUser;
            //CustomUserProfile customUserProfile = new CustomUserProfile();
            Uri  myNextPage     = null;
            bool isThisLastPage = true;

            do
            {
                if (isThisLastPage)
                {
                    pagedCustomUser = oktaUserMgmt.ListCustomUsersExtended(searchType: "search", criteria: buildFilter.ToString());
                }
                else
                {
                    pagedCustomUser = oktaUserMgmt.ListCustomUsersExtended(searchType: "search", criteria: buildFilter.ToString(), nextPage: myNextPage);
                }


                isThisLastPage = pagedCustomUser.IsLastPage;
                myNextPage     = pagedCustomUser.NextPage;
                int rspCount = pagedCustomUser.Results.Count;
                foreach (var customUser1 in pagedCustomUser.Results)
                {
                    logger.Debug("oktaId= " + customUser1.Id + " customId= " + customUser1.Profile.customId + " lastName= " + customUser1.Profile.LastName);
                }
                if (rspCount == 1)
                {
                    logger.Debug("successful; found single user ");
                    //send email with userName/email
                    customUser            = pagedCustomUser.Results[0];
                    TempData["firstName"] = customUser.Profile.FirstName;
                    TempData["userName"]  = customUser.Profile.Login;
                    SendEmail(customUser);
                    var routeValues = new RouteValueDictionary();
                    routeValues.Add("login", pagedCustomUser.Results[0].Profile.Login);
                    routeValues.Add("email", pagedCustomUser.Results[0].Profile.Email);
                    return(RedirectToAction("UserFound", routeValues));
                }
                else
                {
                    logger.Error("Error found " + rspCount.ToString() + " users matching criteria");
                    return(RedirectToAction("UserNOTFound"));
                }
            } while (!isThisLastPage);
        }