public void CreatePasswordValidation() { User _testUserPassword = new User { UserId = 1, UserEmail = "*****@*****.**", Password = "******", FirstName = "Davey", LastName = "Cornelissen", BirthDay = DateTime.Now, PhoneNumber = "0628433115", PpPath = "/Test/Profile.PNG" }; _accountLogic.CreateUser(_testUserPassword); }
public async Task <IActionResult> Create(CreateAccountViewModel model) { if (!ModelState.IsValid) { return(View(model)); } try { var profileImagePaCombine = Path.Combine(_hostingEnvironment.WebRootPath, mapRootProfileImages); string _NewFile = await AddFileToDirectory(model.PPath, profileImagePaCombine); string image = _NewFile ?? ""; User _newUser = new User { UserEmail = model.UserEmail, Password = model.Password, FirstName = model.FirstName, LastName = model.LastName, BirthDay = model.Birthday, PhoneNumber = model.PhoneNumber, PpPath = image }; _accountLogic.CreateUser(_newUser); return(RedirectToAction("Login", "Account")); } catch (ExceptionHandler exception) { ViewData[exception.Index] = exception.Message; return(View(model)); } }
public async Task <IActionResult> CreateUser(CreateUserViewModel createUser) { try { var sequenceData = await sequenceLogic.GetSequenceDataAsync <LoginUpSequenceData>(remove : false); CheckUpParty(sequenceData); var loginUpParty = await tenantRepository.GetAsync <LoginUpParty>(sequenceData.UpPartyId); if (!loginUpParty.EnableCreateUser) { throw new InvalidOperationException("Create user not enabled."); } Func <IActionResult> viewError = () => { createUser.SequenceString = SequenceString; createUser.CssStyle = loginUpParty.CssStyle; return(View(nameof(CreateUser), createUser)); }; if (!ModelState.IsValid) { return(viewError()); } logger.ScopeTrace("Create user post."); var session = await sessionLogic.GetAndUpdateSessionCheckUserAsync(loginUpParty, GetDownPartyLink(loginUpParty, sequenceData)); if (session != null) { return(await loginUpLogic.LoginResponseAsync(session.Claims.ToClaimList())); } try { var claims = new List <Claim>(); if (!createUser.GivenName.IsNullOrWhiteSpace()) { claims.AddClaim(JwtClaimTypes.GivenName, createUser.GivenName); } if (!createUser.FamilyName.IsNullOrWhiteSpace()) { claims.AddClaim(JwtClaimTypes.FamilyName, createUser.FamilyName); } var user = await userAccountLogic.CreateUser(createUser.Email, createUser.Password, claims : claims); if (user != null) { return(await LoginResponseAsync(loginUpParty, GetDownPartyLink(loginUpParty, sequenceData), user)); } } catch (UserExistsException uex) { logger.ScopeTrace(uex.Message, triggerEvent: true); ModelState.AddModelError(nameof(createUser.Email), localizer["A user with the email already exists."]); } catch (PasswordLengthException plex) { logger.ScopeTrace(plex.Message); ModelState.AddModelError(nameof(createUser.Password), RouteBinding.CheckPasswordComplexity ? localizer["Please use {0} characters or more with a mix of letters, numbers and symbols.", RouteBinding.PasswordLength] : localizer["Please use {0} characters or more.", RouteBinding.PasswordLength]); } catch (PasswordComplexityException pcex) { logger.ScopeTrace(pcex.Message); ModelState.AddModelError(nameof(createUser.Password), localizer["Please use a mix of letters, numbers and symbols"]); } catch (PasswordEmailTextComplexityException pecex) { logger.ScopeTrace(pecex.Message); ModelState.AddModelError(nameof(createUser.Password), localizer["Please do not use the email or parts of it."]); } catch (PasswordUrlTextComplexityException pucex) { logger.ScopeTrace(pucex.Message); ModelState.AddModelError(nameof(createUser.Password), localizer["Please do not use parts of the URL."]); } catch (PasswordRiskException prex) { logger.ScopeTrace(prex.Message); ModelState.AddModelError(nameof(createUser.Password), localizer["The password has previously appeared in a data breach. Please choose a more secure alternative."]); } return(viewError()); } catch (Exception ex) { throw new EndpointException($"Create user failed, Name '{RouteBinding.UpParty.Name}'.", ex) { RouteBinding = RouteBinding }; } }
public async Task <IActionResult> CreateUser(CreateUserViewModel createUser) { try { var sequenceData = await sequenceLogic.GetSequenceDataAsync <LoginUpSequenceData>(remove : false); var loginUpParty = await tenantRepository.GetAsync <LoginUpParty>(sequenceData.UpPartyId); Func <IActionResult> viewError = () => { createUser.SequenceString = SequenceString; createUser.CssStyle = loginUpParty.CssStyle; return(View(nameof(CreateUser), createUser)); }; if (!ModelState.IsValid) { return(viewError()); } logger.ScopeTrace("Create user post."); (var session, var sessionUser) = await sessionLogic.GetAndUpdateSessionCheckUserAsync(loginUpParty); if (session != null) { return(await loginUpLogic.LoginResponseAsync(loginUpParty, sessionUser, session.CreateTime, session.AuthMethods, session.SessionId)); } if (ModelState.IsValid) { try { var claims = new List <Claim>(); if (!createUser.GivenName.IsNullOrWhiteSpace()) { claims.AddClaim(JwtClaimTypes.GivenName, createUser.GivenName); } if (!createUser.FamilyName.IsNullOrWhiteSpace()) { claims.AddClaim(JwtClaimTypes.FamilyName, createUser.FamilyName); } var user = await accountLogic.CreateUser(createUser.Email, createUser.Password, claims); if (user != null) { return(await LoginResponse(loginUpParty, user)); } } catch (UserExistsException uex) { logger.ScopeTrace(uex.Message); ModelState.AddModelError(nameof(createUser.Email), localizer["A user with the email already exists."]); } catch (PasswordLengthException cex) { logger.ScopeTrace(cex.Message); ModelState.AddModelError(nameof(createUser.Password), localizer[$"Please use {RouteBinding.PasswordLength} characters or more{(RouteBinding.CheckPasswordComplexity ? " with a mix of letters, numbers and symbols" : string.Empty)}."]); } catch (PasswordComplexityException cex) { logger.ScopeTrace(cex.Message); ModelState.AddModelError(nameof(createUser.Password), localizer["Please use a mix of letters, numbers and symbols"]); } catch (PasswordEmailTextComplexityException tex) { logger.ScopeTrace(tex.Message); ModelState.AddModelError(nameof(createUser.Password), localizer["Please do not use the email or parts of it."]); } catch (PasswordUrlTextComplexityException tex) { logger.ScopeTrace(tex.Message); ModelState.AddModelError(nameof(createUser.Password), localizer["Please do not use parts of the url."]); } catch (PasswordRiskException rex) { logger.ScopeTrace(rex.Message); ModelState.AddModelError(nameof(createUser.Password), localizer["The password has previously appeared in a data breach. Please choose a more secure alternative."]); } } return(viewError()); } catch (Exception ex) { throw new EndpointException($"Create user failed, Name '{RouteBinding.UpParty.Name}'.", ex) { RouteBinding = RouteBinding }; } }