示例#1
0
        public async Task <ActionResult> ConfirmUser(UserConfirmModel model)
        {
            try
            {
                // Save user credentials
                User user = await _users.SaveUserCredentials(model.Token, model.Password);

                // Audit log
                _auditLog.Log(AuditStream.UserSecurity, "Registration Completed",
                              new
                {
                    userId = user.ID
                },
                              new
                {
                    remote_ip = Request.UserHostAddress,
                    browser   = Request.Browser.Browser
                });
            }
            catch (EmailExpiredException)
            {
                return(View("EmailLinkExpired", new Models.ErrorModel {
                    Message = ConfigurationManager.AppSettings["DataLinkerContactEmail"]
                }));
            }

            Toastr.Success("Email verification process was successfully completed.");

            return(View("EmailConfirmed", new Models.ErrorModel()));
        }
示例#2
0
        public async Task <IActionResult> OnPostAsync()
        {
            if (this.HttpContext.User?.Identity?.Name != null)
            {
                string userName = this.HttpContext.User.Identity.Name;

                if (!Request.Cookies.ContainsKey(UserConstants.SkillsConfirmationCookieName))
                {
                    UserProfile userProfile = _userProfileService.GetUser();

                    UserConfirmModel confirmSkillsModel = new UserConfirmModel()
                    {
                        Name     = userProfile.Fullname,
                        Username = userName,
                    };

                    ValidatedApiResponse <User> confirmResult = await _usersApiClient.ConfirmSkills(userProfile.Id, confirmSkillsModel);

                    if (confirmResult.StatusCode != HttpStatusCode.OK)
                    {
                        throw new InvalidOperationException($"Failed to confirm skills for {userName}");
                    }

                    SetCookie();
                }
            }

            return(Redirect("/"));
        }
示例#3
0
        public async Task <ActionResult> UserConfirm(string userId, string code, string Nt)
        {
            AppUser user    = UserManager.FindById(userId);
            double  timeInt = Convert.ToDouble(Nt);

            if (timeInt + 3 * 3600 <= TimeHelper.ConvertDateTimeInt(DateTime.UtcNow) || timeInt > TimeHelper.ConvertDateTimeInt(DateTime.UtcNow) || timeInt == 0)
            {
                return(RedirectToAction("Error404", "Account", new { ErrorMessage = "Link Has Expired" }));
            }
            EnsureLoggedOut();
            if (userId == null || code == null || user == null)
            {
                return(RedirectToLocal());
            }
            if (await UserManager.IsEmailConfirmedAsync(userId))
            {
                return(RedirectToLocal());
            }
            UserConfirmModel mode = new UserConfirmModel()
            {
                Code = code,
                Id   = userId
            };

            ViewBag.UserName = user.PayRollUser;
            return(View(mode));
        }
示例#4
0
        public async Task <IActionResult> UpdateHasConfirmedSkills()
        {
            if (EnableAuthBypass())
            {
                return(Ok());
            }

            if (!User.Identity.IsAuthenticated)
            {
                return(new UnauthorizedResult());
            }

            UserProfile userProfile = _userProfileService.GetUser();

            UserConfirmModel confirmSkillsModel = new UserConfirmModel
            {
                Name     = userProfile.Fullname,
                Username = User.Identity.Name
            };

            ValidatedApiResponse <User> confirmResult = await _usersApiClient.ConfirmSkills(userProfile.Id, confirmSkillsModel);

            if (confirmResult.StatusCode == HttpStatusCode.OK)
            {
                return(Ok());
            }

            return(confirmResult.ModelState == null?BadRequest("Could not confirm user skills") : BadRequest(confirmResult.ModelState));
        }
示例#5
0
        public async Task ConfirmSkills()
        {
            string           id    = NewRandomString();
            UserConfirmModel model = new UserConfirmModel();

            await AssertPostRequest($"confirm-skills?userId={id}",
                                    model,
                                    new ApiUser(),
                                    () => _client.ConfirmSkills(id, model));
        }
        private FilterDefinition <User> ByUserConfirm(UserConfirmModel model)
        {
            if (!string.IsNullOrEmpty(model.UserId) && ObjectId.TryParse(model.UserId, out ObjectId id) &&
                !string.IsNullOrEmpty(model.Code) && Guid.TryParse(model.Code, out Guid code))
            {
                return(Query.Filter.And(ById(id), ByCodeConfirm(code.ToString())));
            }

            return(null);
        }
        public async Task <User> FilterAsync(UserConfirmModel model)
        {
            FilterDefinition <User> filter = ByUserConfirm(model);

            if (filter != null)
            {
                return(await Collection.Find(filter).SingleOrDefaultAsync());
            }

            return(null);
        }
        public User Filter(UserConfirmModel model)
        {
            FilterDefinition <User> filter = ByUserConfirm(model);

            if (filter != null)
            {
                return(Collection.Find(filter).SingleOrDefault());
            }

            return(null);
        }
示例#9
0
        public async Task <ActionResult> UserConfirm(UserConfirmModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View(viewModel));
            }
            var user = UserManager.FindById(viewModel.Id);

            if (user != null)
            {
                IdentityResult result = UserManager.ConfirmEmail(viewModel.Id, viewModel.Code);
                if (result.Succeeded)
                {
                    //await UserManager.ResetPasswordAsync(user.Id, viewModel.code, viewModel.Password);
                    var resultPW = UserManager.ChangePassword(user.Id, "Pay123456", viewModel.Password);
                    if (resultPW.Succeeded)
                    {
                        Employee e = user.Employee.SingleOrDefault();
                        e.F124 = 0;
                        db.SaveChanges();
                        await ApplicationSignInManager.PasswordSignInAsync(user.UserName, viewModel.Password, true, shouldLockout : false);

                        SignCookieAsync(user);
                        return(RedirectToLocal());
                    }
                    else
                    {
                        AddErrors(resultPW);
                        return(View(viewModel));
                    };
                }
                else
                {
                    AddErrors(result);
                    return(View(viewModel));
                }
            }
            return(View(viewModel));
        }
示例#10
0
        public ActionResult ConfirmUser(string token)
        {
            try
            {
                // Check whether token is valid for setup users credentials
                _users.GetUserByEmailConfirmationToken(token);
            }
            catch (EmailExpiredException)
            {
                return(View("EmailLinkExpired", new Models.ErrorModel {
                    Message = ConfigurationManager.AppSettings["DataLinkerContactEmail"]
                }));
            }

            // Setup model
            var model = new UserConfirmModel
            {
                Token = token
            };

            // Return result
            return(View(model));
        }
        public async Task <ValidatedApiResponse <User> > ConfirmSkills(string userId, UserConfirmModel userConfirmModel)
        {
            Guard.IsNullOrWhiteSpace(userId, nameof(userId));

            return(await ValidatedPostAsync <User, UserConfirmModel>($"confirm-skills?userId={userId}", userConfirmModel));
        }
示例#12
0
        public async Task OnPostAsync_GivenCookieDoesNotAlreadyExistsAndCallingConfirmSkillsReturnsNoContent_SetsCookieReturnsRedirectResult()
        {
            //Arrange
            const string upn      = "*****@*****.**";
            IIdentity    identity = Substitute.For <IIdentity>();

            identity
            .Name
            .Returns(upn);

            ClaimsPrincipal claimsPrincipal = new ClaimsPrincipal(identity);

            HttpContext httpContext = Substitute.For <HttpContext>();

            httpContext
            .User
            .Returns(claimsPrincipal);

            UserConfirmModel userConfirmModel = new UserConfirmModel();

            User user = new User();

            UserProfile userProfile = new UserProfile()
            {
                Firstname = "First",
                Lastname  = "Last",
                Id        = "123",
                UPN       = upn
            };

            IUserProfileService userProfileService = CreateUserProfileService();

            userProfileService
            .GetUser()
            .Returns(userProfile);

            IUsersApiClient apiClient = CreateUsersApiClient();

            apiClient
            .ConfirmSkills(Arg.Is("123"), Arg.Is <UserConfirmModel>(u => u.Username == upn && u.Name == userProfile.Fullname))
            .Returns(new ValidatedApiResponse <User>(HttpStatusCode.OK, user));

            ConfirmSkillsModel pageModel = CreatePageModel(apiClient, userProfileService);

            pageModel.PageContext = new PageContext
            {
                HttpContext = httpContext
            };

            //Act
            IActionResult result = await pageModel.OnPostAsync();

            //Assert
            result
            .Should()
            .BeOfType <RedirectResult>()
            .Which
            .Url
            .Should()
            .Be("/");
        }