public override void Process(SignInArgs args) { try { // get current user string username = args.User.InnerUser.Profile.Email; GetUserRequest request = new GetUserRequest(username); GetUserResult user = _customerServiceProvider.GetUser(request); if (!user.Success || user.CommerceUser == null) { // if user isn't a customer, run customer create pipeline string password = Guid.NewGuid().ToString(); CreateUserRequest createUserRequest = new CreateUserRequest(username, password, username, _storefrontContext.CurrentStorefront.ShopName); CreateUserResult createUserResult = _customerServiceProvider.CreateUser(createUserRequest); } // identify commerce user and merge anonymous cart Cart result = _cartManager.GetCurrentCart(_visitorContext, _storefrontContext, false).Result; Tracker.Current.CheckForNull().Session.IdentifyAs("CommerceUser", username); _visitorContext.UserJustLoggedIn(); _cartManager.MergeCarts(_storefrontContext.CurrentStorefront, _visitorContext, _visitorContext.CustomerId, result); } catch (Exception ex) { // log error Sitecore.Diagnostics.Log.Error($"Failed to create a customer for external user login {args.User.UserName}. {ex.Message}", this); } }
public ActionResult Register(RegisterModel model) { IAccountContract ac = Actor.Public.AsAccountManager(); IUserContract uc = Actor.Public.AsUserManager(); BzureUser user = new BzureUser(uc.GenerateUserID(), model.UserName) { EMail = model.Email, Password = ac.EncryptPassword(model.Password), RoleValue = 0, OpenID = string.Empty, State = 0, NickName = model.UserName }; CreateUserResult result = ac.CreateUser(user); if (result == CreateUserResult.Success) { user.SignIn(false);//登录 return(Redirect("/")); } else { RegisterViewModel ViewModel = new RegisterViewModel() { Title = "注册", Message = result.StringValue(), MasterViewModel = this.MasterViewModel }; return(this.Result(ViewModel)); } }
public ManagerResponse <CreateUserResult, CommerceUser> RegisterUser(RegisterUserInputModel inputModel) { Assert.ArgumentNotNull(inputModel, "inputModel"); Assert.ArgumentNotNullOrEmpty(inputModel.FirstName, "inputModel.FirstName"); Assert.ArgumentNotNullOrEmpty(inputModel.LastName, "inputModel.LastName"); CreateUserResult result; // Attempt to register the user try { var request = new CreateUserRequest(inputModel.UserName, inputModel.Password, inputModel.UserName, StorefrontContext.Current.ShopName); request.Properties.Add("FirstName", inputModel.FirstName); request.Properties.Add("LastName", inputModel.LastName); result = this.CustomerServiceProvider.CreateUser(request); } catch (MembershipCreateUserException e) { result = new CreateUserResult { Success = false }; result.SystemMessages.Add(new SystemMessage { Message = ErrorCodeToString(e.StatusCode) }); } result.WriteToSitecoreLog(); return(new ManagerResponse <CreateUserResult, CommerceUser>(result, result.CommerceUser)); }
/// <summary> /// Registers the user. /// </summary> /// <param name="storefront">The storefront.</param> /// <param name="inputModel">The input model.</param> /// <returns> /// The manager result where the user is returned as the Result. /// </returns> public virtual ManagerResponse <CreateUserResult, CommerceUser> RegisterUser([NotNull] CommerceStorefront storefront, RegisterUserInputModel inputModel) { Assert.ArgumentNotNull(storefront, "storefront"); Assert.ArgumentNotNull(inputModel, "inputModel"); Assert.ArgumentNotNullOrEmpty(inputModel.UserName, "inputModel.UserName"); Assert.ArgumentNotNullOrEmpty(inputModel.Password, "inputModel.Password"); CreateUserResult result; // Attempt to register the user try { var request = new CreateUserRequest(inputModel.UserName, inputModel.Password, inputModel.UserName, storefront.ShopName); result = this.CustomerServiceProvider.CreateUser(request); if (!result.Success) { Helpers.LogSystemMessages(result.SystemMessages, result); } } catch (MembershipCreateUserException e) { result = new CreateUserResult { Success = false }; result.SystemMessages.Add(new Commerce.Services.SystemMessage { Message = ErrorCodeToString(e.StatusCode) }); } return(new ManagerResponse <CreateUserResult, CommerceUser>(result, result.CommerceUser)); }
public ManagerResponse <CreateUserResult, CommerceUser> RegisterUserCustomer(IStorefrontContext storefrontContext, string userName, string password, string email, string secondaryEmail) { Assert.ArgumentNotNull(storefrontContext, nameof(storefrontContext)); Assert.ArgumentNotNullOrEmpty(userName, nameof(userName)); Assert.ArgumentNotNullOrEmpty(password, nameof(password)); CreateUserResult createUserResult1; try { var createUserRequest = new CreateUserRequest(userName, password, email, storefrontContext.CurrentStorefront.ShopName); createUserRequest.Properties.Add("SecondEmail", secondaryEmail); createUserResult1 = CustomerServiceProvider.CreateUser(createUserRequest); //createUserResult1 = CustomerServiceProvider.CreateUser(new CreateUserRequest(userName, password, email, storefrontContext.CurrentStorefront.ShopName)); if (!createUserResult1.Success) { Helpers.LogSystemMessages(createUserResult1.SystemMessages, createUserResult1); } else if (createUserResult1.Success) { if (createUserResult1.CommerceUser == null) { if (createUserResult1.SystemMessages.Count == 0) { createUserResult1.Success = false; createUserResult1.SystemMessages.Add(new SystemMessage() { Message = storefrontContext.GetSystemMessage("User Already Exists") }); } } } } catch (MembershipCreateUserException ex) { CreateUserResult createUserResult2 = new CreateUserResult { Success = false }; createUserResult1 = createUserResult2; createUserResult1.SystemMessages.Add(new SystemMessage() { Message = ErrorCodeToString(storefrontContext, ex.StatusCode) }); } catch (Exception ex) { CreateUserResult createUserResult2 = new CreateUserResult { Success = false }; createUserResult1 = createUserResult2; createUserResult1.SystemMessages.Add(new SystemMessage() { Message = storefrontContext.GetSystemMessage("Unknown Membership Provider Error") }); } CreateUserResult serviceProviderResult = createUserResult1; return(new ManagerResponse <CreateUserResult, CommerceUser>(serviceProviderResult, serviceProviderResult.CommerceUser)); }
/// <summary> /// /// </summary> /// <param name="createUser"></param> /// <returns></returns> public CreateUserResult CreateNewUser(UserCreationDto createUser, ClaimsPrincipal claims) { CreateUserResult result = new CreateUserResult() { CreationError = UserCreationError.NoError, IsCreatedSuccesfully = true }; // First check if user alredy exists in database var users = userRepo.GetUsers(new UserQueryParameters() { UserName = createUser.UserName }); if (users.Any(u => string.Compare(u.UserName, createUser.UserName, StringComparison.OrdinalIgnoreCase) == 0)) { result.IsCreatedSuccesfully = false; result.CreationError = UserCreationError.LoginAlreadyExists; return(result); } Users user = Mapper.Map <Users>(createUser); // Create appropriate user data according to flags if (createUser.IsTeacher) { Teachers teacher = Mapper.Map <Teachers>(createUser); teacherRepo.AddTeacher(teacher, claims); teacherRepo.Save(); user.TeacherId = teacher.TeacherId; result.CreatedUser = Mapper.Map <UserDto>(teacher); } if (createUser.IsStudent) { Students student = Mapper.Map <Students>(createUser); studentRepo.AddStudent(student, claims); studentRepo.Save(); user.StudentId = student.StudentId; result.CreatedUser = Mapper.Map <UserDto>(student); } if (createUser.IsParent) { Parents parent = Mapper.Map <Parents>(createUser); parentRepo.AddParent(parent, claims); parentRepo.Save(); user.ParentId = parent.ParentId; result.CreatedUser = Mapper.Map <UserDto>(parent); } userRepo.CreateUser(user, claims); userRepo.Save(); result.CreatedUser.UserId = user.UserId.ToString(); return(result); }
/********************************************************************************** ***************/ private void CreateNewUser(string username, string password, string firstName, string lastName, string phoneNumber, string email) { CreateUserResult result = CreateUserResult.Failed; User user = new User(username, password, firstName, lastName, phoneNumber, email); result = _passwordService.CreateNewUser(user); _loginView.DisplayCreateNewUserResult(result, _passwordService.GetMinimumPasswordLength()); }
public async Task <CreateUserResult> CreateUserAsync(UserItemInputDto input) { string message = string.Empty; var result = new CreateUserResult(); var success = DataModelValidate.AddOrUpdateUserValidate(input, ref message); if (!success) { result.Success = false; result.Message = message; return(result); } if (await _userAppServiceClient.IsMobileExistedAsync(input.Mobile)) { result.Success = false; result.Message = "手机号码已经存在"; return(result); } var userResult = await _userAppServiceClient.FindByUsernameAsync(input.Username); if (userResult.Item1 != null) { result.Success = false; result.Message = "用户名存在"; return(result); } //通过,开始创建用户 var dto = new UserItemDto { IdCardNo = input.IdCardNo, Username = input.Username, Password = input.UserPwd, Name = input.Name, EmployeeNumber = input.EmployeeNumber, Avatar = input.Avatar, Mobile = input.Mobile, IsActive = true }; var returnDto = await _userAppServiceClient.CreateUserAsync(dto); if (returnDto == null) { result.Success = false; result.Message = "创建用户失败,请重新尝试"; return(result); } //记录Id result.Success = true; result.Message = "创建用户成功!"; return(result); }
public void UserCreationShouldFailIfEmailAddressIsAlreadyTaken() { CreateUserRequest createUserRequest = new CreateUserRequest { Email = "*****@*****.**" }; CreateUserResult createUserResult = _createUserHandler.Handle(createUserRequest); Assert.IsFalse(createUserResult.Succeeded); }
/// <summary> /// Starts cycle for new account creation. /// </summary> public IActionResult CreateUser([FromForm] string email, [FromForm] string userName, [FromForm] string pass, [FromForm] string captcha, [FromForm] string lang) { // Must have all fields if (string.IsNullOrEmpty(email) || string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(pass) || string.IsNullOrEmpty(captcha) || string.IsNullOrEmpty(lang)) { logger.LogWarning(new EventId(), "Missing request data in CreateUser."); return(StatusCode(400, "Missing request data.")); } // Verify email, user and pass criteria. If they fail here, that's an invalid request: client should have checked. bool dataValid = true; if (!auth.IsEmailValid(email)) { dataValid = false; } Regex reUsrName = new Regex(@"^[\._\-\p{L}\p{N}]+$"); if (!reUsrName.Match(userName).Success) { dataValid = false; } if (userName.Length < 3) { dataValid = false; } if (!auth.IsPasswordValid(pass)) { dataValid = false; } if (!dataValid) { return(StatusCode(400, "Invalid data; check for validation criteria.")); } // Verify captcha if (!isCaptchaOk(captcha)) { return(StatusCode(400, "Captcha didn't verify.")); } // See if user can be created Auth.CreateUserResult cur = auth.CreateUser(lang, email, userName, pass); CreateUserResult res = new CreateUserResult { Success = (cur == 0), UserNameExists = (cur & Auth.CreateUserResult.UserNameExists) == Auth.CreateUserResult.UserNameExists, EmailExists = (cur & Auth.CreateUserResult.EmailExists) == Auth.CreateUserResult.EmailExists, }; return(new ObjectResult(res)); }
public async Task <IActionResult> CreateNewAccount(CreateUserViewModel cmd) { var user = new User() { Email = cmd.Email, UserName = cmd.UserName, Password = cmd.Password }; CreateUserResult result = await _mediator.Send(new CreateUserCommand(user)); return(HandleResult(result, _mapper.Map <UserDto>(result.User))); }
public HttpResponseMessage CreateUser(string userName, string password, string email) { CreateUserResult result = new CreateUserResult(); try { using (SqlConnection connection = new SqlConnection(Constants.ConnectionStr)) { connection.Open(); // Check if user name already exist string checkExistenceQuery = "SELECT * FROM dbo.users WHERE [UserName] = @userName"; using (SqlCommand cmd = new SqlCommand(checkExistenceQuery, connection)) { cmd.Parameters.Add("@userName", SqlDbType.VarChar, 255).Value = userName; using (SqlDataReader reader = cmd.ExecuteReader()) { if (reader.Read()) { result.message = $"User name {userName} already exist!"; return(Utilities.CreateJsonReponse(Request, result)); } } } // Create new user string createNewUserQuery = "INSERT INTO dbo.users ([UserName], [Password], [Email], [AuthToken]) VALUES (@userName, @password, @email, @authToken)"; using (SqlCommand cmd = new SqlCommand(createNewUserQuery, connection)) { string authToken = Convert.ToBase64String(Guid.NewGuid().ToByteArray()); cmd.Parameters.Add("@userName", SqlDbType.VarChar, 255).Value = userName; cmd.Parameters.Add("@password", SqlDbType.VarChar, 255).Value = password; cmd.Parameters.Add("@email", SqlDbType.VarChar, 255).Value = email; cmd.Parameters.Add("@authToken", SqlDbType.VarChar, 255).Value = authToken; cmd.ExecuteNonQuery(); result.success = true; result.message = $"User {userName} created"; return(Utilities.CreateJsonReponse(Request, result)); } } } catch (Exception e) { result.message = $"Failed to create new user: {e.Message}"; return(Utilities.CreateJsonReponse(Request, result)); } }
public virtual ManagerResponse <CreateUserResult, CommerceUser> RegisterUser(IStorefrontContext storefrontContext, string userName, string password, string email, StringPropertyCollection propertyBag = null) { Diagnostics.Assert.ArgumentNotNull(storefrontContext, "storefrontContext"); Diagnostics.Assert.ArgumentNotNullOrEmpty(userName, "userName"); Diagnostics.Assert.ArgumentNotNullOrEmpty(password, "password"); CreateUserResult createUserResult; try { CreateUserRequest request = new CreateUserRequest(userName, password, email, storefrontContext.CurrentStorefront.ShopName); request.CopyPropertyBag(propertyBag); createUserResult = _customerServiceProvider.CreateUser(request); if (!createUserResult.Success) { Helpers.LogSystemMessages(createUserResult.SystemMessages, createUserResult); } else if (createUserResult.Success && createUserResult.CommerceUser == null && createUserResult.SystemMessages.Count == 0) { createUserResult.Success = false; createUserResult.SystemMessages.Add(new SystemMessage { Message = storefrontContext.GetSystemMessage("User Already Exists") }); } } catch (MembershipCreateUserException ex) { createUserResult = new CreateUserResult { Success = false }; createUserResult.SystemMessages.Add(new SystemMessage { Message = ex.StatusCode.ToString() }); } catch (Exception ex) { createUserResult = new CreateUserResult { Success = false }; createUserResult.SystemMessages.Add(new SystemMessage { Message = storefrontContext.GetSystemMessage("Unknown Membership Provider Error") }); } return(new ManagerResponse <CreateUserResult, CommerceUser>(createUserResult, createUserResult.CommerceUser)); }
public CreateUserResult CreateUser(LoginRegisterModel user, string role) { CreateUserResult result = new CreateUserResult(); AppUser appuser = new AppUser() { UserName = user.UserName, Email = user.Email }; try { if (_userManager.Users.SingleOrDefault(u => u.UserName == user.UserName) != null) { result.Message = "Пользователь с таким логином уже существует"; result.Success = false; result.IsAlreadyExist = true; } else { IdentityResult userCreation = _userManager.CreateAsync(appuser, user.Password).Result; IdentityResult inRoleAdding = _userManager.AddToRoleAsync(appuser, role).Result; if (userCreation.Succeeded) { if (inRoleAdding.Succeeded) { result.IsAlreadyExist = false; result.Success = true; result.Message = "Пользователь успешно создан"; result.UserId = appuser.Id; } else { AppUser appUser = _userManager.Users.SingleOrDefault(u => u.UserName == user.UserName); _userManager.DeleteAsync(appUser); result.IsAlreadyExist = false; result.Other = true; result.Message = "Не удалось создать пользователя"; } } } } catch (Exception ex) { result.Message = "Не удалось создать пользователя " + ex; } return(result); }
/// <summary> /// 创建新用户 /// </summary> /// <param name="User"></param> /// <returns>是否成功</returns> public CreateUserResult CreateUser(BzureUser User) { CreateUserResult result = this.Decorator.CreateUser(User); if (result == CreateUserResult.Success) { //为每个新创建的用户指定一个默认的角色 TeamRole[] role = Actor.Public.GetRoleByName("注册用户"); IEnumerable <string> Ids = role.Select((TeamRole r) => { return(r.ID); }); if (role.IsNotNull()) { Actor.Public.AuthorizeUser(User, Ids.ToArray(), (bool ok) => { }); } } return(result); }
public void UserCreationShouldSucceedIfEmailAddressIsAvailable() { string emailAddress = "*****@*****.**"; CreateUserRequest createUserRequest = new CreateUserRequest { Email = emailAddress, Password = "******", ConfirmedPassword = "******", Gender = GenderType.Female, UnitsOfMeasure = MeasurementSystem.Imperial }; CreateUserResult createUserResult = _createUserHandler.Handle(createUserRequest); BodyFitTrackerContext bodyFitTrackerContext = DatabaseConnectionFactory.GetInMemoryDatabase(false); Assert.IsNotNull(bodyFitTrackerContext.AppUsers.Where(x => x.Email == emailAddress).First()); Assert.IsTrue(createUserResult.Succeeded); }
public ManagerResponse <CreateUserResult, CommerceUser> RegisterUser(RegisterUserInputModel inputModel) { Assert.ArgumentNotNull(inputModel, nameof(inputModel)); Assert.ArgumentNotNullOrEmpty(inputModel.UserName, nameof(inputModel.UserName)); Assert.ArgumentNotNullOrEmpty(inputModel.Password, nameof(inputModel.Password)); if (StorefrontContext.Current == null) { throw new InvalidOperationException("Cannot be called without a valid storefront context."); } CreateUserResult result; // Attempt to register the user try { var request = new CreateUserRequest(inputModel.UserName, inputModel.Password, inputModel.UserName, StorefrontContext.Current.ShopName); result = CustomerServiceProvider.CreateUser(request); result.WriteToSitecoreLog(); if (result.Success && result.CommerceUser == null && !result.SystemMessages.Any()) { // Connect bug: This is a work around to a Connect bug. When the user already exists,connect simply aborts the pipeline but // does not set the success flag nor does it return an error message. result.Success = false; result.SystemMessages.Add(new SystemMessage { Message = DictionaryPhraseRepository.Current.Get("/System Messages/Accounts/User Already Exists", "User name already exists. Please enter a different user name.") }); } } catch (MembershipCreateUserException e) { result = new CreateUserResult { Success = false }; result.SystemMessages.Add(new SystemMessage { Message = ErrorCodeToString(e.StatusCode) }); } return(new ManagerResponse <CreateUserResult, CommerceUser>(result, result.CommerceUser)); }
/// <summary> /// Registers the user. /// </summary> /// <param name="storefront">The storefront.</param> /// <param name="inputModel">The input model.</param> /// <returns> /// The manager result where the user is returned as the Result. /// </returns> public virtual ManagerResponse <CreateUserResult, CommerceUser> RegisterUser([NotNull] CommerceStorefront storefront, RegisterUserInputModel inputModel) { Assert.ArgumentNotNull(storefront, "storefront"); Assert.ArgumentNotNull(inputModel, "inputModel"); Assert.ArgumentNotNullOrEmpty(inputModel.UserName, "inputModel.UserName"); Assert.ArgumentNotNullOrEmpty(inputModel.Password, "inputModel.Password"); CreateUserResult result; // Attempt to register the user try { var request = new CreateUserRequest(inputModel.UserName, inputModel.Password, inputModel.UserName, storefront.ShopName); result = this._customerServiceProvider.CreateUser(request); // if (!result.Success) // { // Helpers.LogSystemMessages(result.SystemMessages, result); // } // else if (result.Success && result.CommerceUser == null && result.SystemMessages.Count() == 0) { // Connect bug: This is a work around to a Connect bug. When the user already exists,connect simply aborts the pipeline but // does not set the success flag nor does it return an error message. result.Success = false; result.SystemMessages.Add(new SystemMessage { Message = StorefrontManager.GetSystemMessage(StorefrontConstants.SystemMessages.UserAlreadyExists) }); } } catch (MembershipCreateUserException e) { result = new CreateUserResult { Success = false }; result.SystemMessages.Add(new Commerce.Services.SystemMessage { Message = ErrorCodeToString(e.StatusCode) }); } return(new ManagerResponse <CreateUserResult, CommerceUser>(result, result.CommerceUser)); }
public ManagerResponse <CreateUserResult, CommerceUser> CreateUser(string userName, string email, string password, string shopName) { Assert.ArgumentNotNullOrEmpty(userName, nameof(userName)); Assert.ArgumentNotNullOrEmpty(email, nameof(email)); Assert.ArgumentNotNullOrEmpty(password, nameof(password)); Assert.ArgumentNotNullOrEmpty(shopName, nameof(shopName)); // Commerce needs domain name to be presented in the user name var fullUserName = $"{Constants.CommerceUsersDomainName}\\{userName}"; var createUserRequest = new CreateUserRequest(fullUserName, password, email, shopName); CreateUserResult createUserResult = this.customerServiceProvider.CreateUser(createUserRequest); if (!createUserResult.Success || createUserResult.CommerceUser == null) { Log.Warn("User creation failed", this.GetType()); } return(new ManagerResponse <CreateUserResult, CommerceUser>(createUserResult, createUserResult.CommerceUser)); }
public async Task <CreateUserResult> CreateUserAsync(string userName, string password) { var user = new IdentityUser { Email = userName, UserName = userName }; var createUserResult = new CreateUserResult(); createUserResult.RegisterResult = await userManager.CreateAsync(user, password); if (createUserResult.RegisterResult.Succeeded) { var token = await userManager.GenerateEmailConfirmationTokenAsync(user); createUserResult.ConfirmEmailResult = await userManager.ConfirmEmailAsync(user, token); } return(createUserResult); }
/// <summary> /// Executes the business logic of the CreateUser processor. /// </summary> /// <param name="args">The args.</param> public override void Process(ServicePipelineArgs args) { Assert.ArgumentNotNull(args, "args"); CreateUserRequest request = (CreateUserRequest)args.Request; CreateUserResult result = (CreateUserResult)args.Result; using (ICustomersServiceChannel channel = this.GetClient()) { Guid customerId; if (!request.Properties.Contains("UserId") || !Guid.TryParse(request.Properties["UserId"].ToString(), out customerId)) { customerId = Guid.NewGuid(); } CustomerModel customerModel = new CustomerModel { CustomerGuid = customerId, FirstName = request.UserName, LastName = request.UserName, Company = request.Shop.Name, Active = true }; channel.CreateCustomer(customerId, customerModel); request.Properties["UserId"] = customerId; var commerceUser = this.EntityFactory.Create <CommerceUser>("CommerceUser"); commerceUser.ExternalId = customerId.ToString(); commerceUser.UserName = request.UserName; commerceUser.Email = request.Email; commerceUser.Shops = new ReadOnlyCollection <string>(new List <string> { request.Shop.Name }); commerceUser.CreationDate = DateTime.UtcNow; result.CommerceUser = commerceUser; } }
public async Task <XuIdentityResult> Handle(SocialMediaLoginQuery request, CancellationToken cancellationToken) { XuIdentityResult Result = new XuIdentityResult(); User userInfo = await _unitOfWork.Users.FirstOrDefaultAsync(u => u.Email == request.Email); // If user does not exist if (userInfo == null) { // Create the new user CreateUserResult userResult = await _mediator.Send(new CreateUserCommand(new User() { Email = request.Email, UserName = request.Name, Avatar = request.PhotoUrl, SocialMediaId = request.Id, Password = Helpers.GenerateUniqueId(), Provider = (AuthProvider)Enum.Parse(typeof(AuthProvider), request.Provider), })); if (userResult.State != OperationState.Success) { return(OperationResult.CopyResult <XuIdentityResult>(userResult)); } // User created successfully userInfo = userResult.User; } // Check user is not suspended if (userInfo.AccountSuspended) { Result.ErrorContent = new ErrorContent("Your Account Has Been Suspended.", ErrorOrigin.Client); return(Result); } return(await _mediator.Send(new GetLogedInUserClaimsQuery(userInfo, false))); }
public IActionResult CreateUser(FrontUser frontUser) { CreateUserResult result = new CreateUserResult(); LoginRegisterModel loginRegisterModel = new LoginRegisterModel() { UserName = frontUser.UserName, Password = frontUser.Password }; FrontCustomer frontCustomer = new FrontCustomer() { Address = frontUser.Address, Name = frontUser.Name }; var userCreationResult = _marketUoW.UseUserMngmtRepository().CreateUser(loginRegisterModel, "User"); if (userCreationResult.Success) { var assignResult = _marketUoW.UseUserMngmtRepository().AssignCustomer(frontCustomer, userCreationResult.UserId).Result; if (assignResult.Succeeded) { result.Success = true; } ; } return(Ok(result)); }
/// <summary> /// Creates pending new user and starts confirmation cycle. /// </summary> public CreateUserResult CreateUser(string lang, string email, string userName, string pass) { email = email.ToLowerInvariant().Trim(); // Salt password, hash // http://www.c-sharpcorner.com/article/hashing-passwords-in-net-core-with-tips/ // https://crackstation.net/hashing-security.htm string salt = getRandomString(); string hash = getHash(pass + salt); CreateUserResult res = CreateUserResult.OK; int count; int userId = -1; using (MySqlConnection conn = DB.GetConn()) using (MySqlCommand ins = DB.GetCmd(conn, "InsNewUser")) using (MySqlCommand sel1 = DB.GetCmd(conn, "SelUserByName")) using (MySqlCommand sel2 = DB.GetCmd(conn, "SelUserByEmail")) using (MySqlTransaction trans = conn.BeginTransaction()) { ins.Parameters["@email"].Value = email; ins.Parameters["@user_name"].Value = userName; ins.Parameters["@pass_hash"].Value = hash; ins.Parameters["@pass_salt"].Value = salt; ins.Parameters["@registered"].Value = DateTime.UtcNow; ins.ExecuteNonQuery(); userId = (int)ins.LastInsertedId; count = 0; sel1.Parameters["@user_name"].Value = userName; using (var rdr = sel1.ExecuteReader()) { while (rdr.Read()) { ++count; } } if (count > 1) { res |= CreateUserResult.UserNameExists; } count = 0; sel2.Parameters["@email"].Value = email; using (var rdr = sel2.ExecuteReader()) { while (rdr.Read()) { ++count; } } if (count > 1) { res |= CreateUserResult.EmailExists; } if (res == 0) { trans.Commit(); } else { trans.Rollback(); } } if (res != CreateUserResult.OK) { return(res); } // User created: store confirmation token; send email using (MySqlConnection conn = DB.GetConn()) { DateTime expiry = DateTime.UtcNow; expiry = expiry.AddMinutes(60); string code = fileConfToken(conn, userId, expiry, null, (int)ConfirmedAction.Register); string msg = pageProvider.GetPage(lang, "?/mail.regconfirm", false).Html; string url = baseUrl + lang + "/user/confirm/" + code; msg = string.Format(msg, url); string senderName = mut == Mutation.HDD ? TextProvider.Instance.GetString(lang, "emails.senderNameHDD") : TextProvider.Instance.GetString(lang, "emails.senderNameCHD"); emailer.SendMail(email, senderName, TextProvider.Instance.GetString(lang, "emails.regConfirm"), msg, true); } return(res); }
/*************************************************************************************************/ public void DisplayCreateNewUserResult(CreateUserResult result, int minimumPasswordLength) { switch (result) { case CreateUserResult.UsernameTaken: UIHelper.UpdateStatusLabel("Username taken!", createNewUserResultLabel, ErrorLevel.Error); break; case CreateUserResult.Failed: UIHelper.UpdateStatusLabel("Unsuccessful!", createNewUserResultLabel, ErrorLevel.Error); break; case CreateUserResult.PasswordNotValid: UIHelper.UpdateStatusLabel("Password does not meet requirements!", createNewUserResultLabel, ErrorLevel.Error); break; case CreateUserResult.UsernameNotValid: UIHelper.UpdateStatusLabel("Invalid username!", createNewUserResultLabel, ErrorLevel.Error); break; case CreateUserResult.FirstNameNotValid: UIHelper.UpdateStatusLabel("First name not valid!", createNewUserResultLabel, ErrorLevel.Error); break; case CreateUserResult.LastNameNotValid: UIHelper.UpdateStatusLabel("Last name not valid!", createNewUserResultLabel, ErrorLevel.Error); break; case CreateUserResult.PhoneNumberNotValid: UIHelper.UpdateStatusLabel("Phone number not valid!", createNewUserResultLabel, ErrorLevel.Error); break; case CreateUserResult.EmailNotValid: UIHelper.UpdateStatusLabel("Email not valid!", createNewUserResultLabel, ErrorLevel.Error); break; case CreateUserResult.NoLowerCaseCharacter: UIHelper.UpdateStatusLabel("Password must have lower case!", createNewUserResultLabel, ErrorLevel.Error); break; case CreateUserResult.LengthRequirementNotMet: UIHelper.UpdateStatusLabel(string.Format(CultureInfo.CurrentCulture, "Password must have length: {0}!", minimumPasswordLength), createNewUserResultLabel, ErrorLevel.Error); break; case CreateUserResult.NoNumber: UIHelper.UpdateStatusLabel("Password must have number!", createNewUserResultLabel, ErrorLevel.Error); break; case CreateUserResult.NoSpecialCharacter: UIHelper.UpdateStatusLabel("Password must have special character!", createNewUserResultLabel, ErrorLevel.Error); break; case CreateUserResult.NoUpperCaseCharacter: UIHelper.UpdateStatusLabel("Password must have upper case!", createNewUserResultLabel, ErrorLevel.Error); break; case CreateUserResult.Successful: UIHelper.UpdateStatusLabel("Success. Please log in.", createNewUserResultLabel, ErrorLevel.Ok); createUsernameTextBox.Text = ""; createPasswordTextBox.Text = ""; createFirstNameTextBox.Text = ""; createLastNameTextBox.Text = ""; createEmailTextBox.Text = ""; createPhoneNumberTextBox.Text = ""; break; default: createNewUserResultLabel.Text = "Unsuccessful."; createNewUserResultLabel.ForeColor = Color.Red; break; } createNewUserResultLabel.Visible = true; }
/// <summary> /// Initializes a new instance of the <see cref="RegisterBaseJsonResult"/> class. /// </summary> /// <param name="result">The result.</param> public RegisterBaseResultApiModel(CreateUserResult result) : base(result) { }
/// <summary> /// Initializes a new instance of the <see cref="RegisterBaseJsonResult"/> class. /// </summary> /// <param name="result">The result.</param> public RegisterBaseJsonResult(CreateUserResult result) : base(result) { }
/*************************************************************************************************/ public CreateUserResult CreateNewUser(User user) { CreateUserResult createUserResult = CreateUserResult.Failed; if (user != null) { User queryResult = _dbcontext.GetUserByUsername(user.Username); if (queryResult != null) { createUserResult = CreateUserResult.UsernameTaken; } else { UserInformationResult verifyUser = VerifyUserInformation(user); ChangeUserPasswordResult verifyPassword = VerifyPasswordRequirements(user.PlainTextPassword); // Verify that username and password pass requirements if (!VerifyUsernameRequirements(user.Username)) { createUserResult = CreateUserResult.UsernameNotValid; } else if (verifyPassword != ChangeUserPasswordResult.Success) { switch (verifyPassword) { case ChangeUserPasswordResult.Failed: createUserResult = CreateUserResult.PasswordNotValid; break; case ChangeUserPasswordResult.LengthRequirementNotMet: createUserResult = CreateUserResult.LengthRequirementNotMet; break; case ChangeUserPasswordResult.NoLowerCaseCharacter: createUserResult = CreateUserResult.NoLowerCaseCharacter; break; case ChangeUserPasswordResult.NoNumber: createUserResult = CreateUserResult.NoNumber; break; case ChangeUserPasswordResult.NoSpecialCharacter: createUserResult = CreateUserResult.NoSpecialCharacter; break; case ChangeUserPasswordResult.NoUpperCaseCharacter: createUserResult = CreateUserResult.NoUpperCaseCharacter; break; case ChangeUserPasswordResult.PasswordsDoNotMatch: createUserResult = CreateUserResult.PasswordNotValid; break; default: createUserResult = CreateUserResult.PasswordNotValid; break; } } else if (verifyUser != UserInformationResult.Success) { switch (verifyUser) { case UserInformationResult.InvalidEmail: createUserResult = CreateUserResult.EmailNotValid; break; case UserInformationResult.InvalidFirstName: createUserResult = CreateUserResult.FirstNameNotValid; break; case UserInformationResult.InvalidLastName: createUserResult = CreateUserResult.LastNameNotValid; break; case UserInformationResult.InvalidPhoneNumber: createUserResult = CreateUserResult.PhoneNumberNotValid; break; case UserInformationResult.Failed: createUserResult = CreateUserResult.Failed; break; } } else { createUserResult = CreateUserResult.Successful; UserEncrypedData newEncryptedData = _masterPassword.GenerateNewUserEncryptedDataFromPassword(user.PlainTextPassword); User newUser = new User( newEncryptedData.UniqueGUID, // Leave unique guid in plaintext _encryptDecrypt.Encrypt(newEncryptedData.RandomGeneratedKey, user.PlainTextPassword), // Encrypt the random key with the users password user.Username, // Leave username in plaintext newEncryptedData.Iterations.ToString(CultureInfo.CurrentCulture), // Leave iterations in plaintext newEncryptedData.Salt, newEncryptedData.Hash, _encryptDecrypt.Encrypt(user.FirstName, newEncryptedData.RandomGeneratedKey), // Encrypt with decrypted random key _encryptDecrypt.Encrypt(user.LastName, newEncryptedData.RandomGeneratedKey), // Encrypt with decrypted random key _encryptDecrypt.Encrypt(user.PhoneNumber, newEncryptedData.RandomGeneratedKey), // Encrypt with decrypted random key _encryptDecrypt.Encrypt(user.Email, newEncryptedData.RandomGeneratedKey) // Encrypt with decrypted random key ); _dbcontext.AddUser(newUser); } } } return(createUserResult); }
/// <summary> /// Registers the user. /// </summary> /// <param name="storefront">The storefront.</param> /// <param name="inputModel">The input model.</param> /// <returns> /// The manager result where the user is returned as the Result. /// </returns> public virtual ManagerResponse<CreateUserResult, CommerceUser> RegisterUser([NotNull] CommerceStorefront storefront, RegisterUserInputModel inputModel) { Assert.ArgumentNotNull(storefront, "storefront"); Assert.ArgumentNotNull(inputModel, "inputModel"); Assert.ArgumentNotNullOrEmpty(inputModel.UserName, "inputModel.UserName"); Assert.ArgumentNotNullOrEmpty(inputModel.Password, "inputModel.Password"); CreateUserResult result; // Attempt to register the user try { var request = new CreateUserRequest(inputModel.UserName, inputModel.Password, inputModel.UserName, storefront.ShopName); result = this.CustomerServiceProvider.CreateUser(request); if (!result.Success) { Helpers.LogSystemMessages(result.SystemMessages, result); } else if (result.Success && result.CommerceUser == null && result.SystemMessages.Count() == 0) { // Connect bug: This is a work around to a Connect bug. When the user already exists,connect simply aborts the pipeline but // does not set the success flag nor does it return an error message. result.Success = false; result.SystemMessages.Add(new SystemMessage { Message = StorefrontManager.GetSystemMessage("UserAlreadyExists") }); } } catch (MembershipCreateUserException e) { result = new CreateUserResult { Success = false }; result.SystemMessages.Add(new Commerce.Services.SystemMessage { Message = ErrorCodeToString(e.StatusCode) }); } return new ManagerResponse<CreateUserResult, CommerceUser>(result, result.CommerceUser); }
/// <summary> /// Registers the user. /// </summary> /// <param name="storefront">The storefront.</param> /// <param name="inputModel">The input model.</param> /// <returns> /// The manager result where the user is returned as the Result. /// </returns> public virtual ManagerResponse<CreateUserResult, CommerceUser> RegisterUser([NotNull] CommerceStorefront storefront, RegisterUserInputModel inputModel) { Assert.ArgumentNotNull(storefront, "storefront"); Assert.ArgumentNotNull(inputModel, "inputModel"); Assert.ArgumentNotNullOrEmpty(inputModel.UserName, "inputModel.UserName"); Assert.ArgumentNotNullOrEmpty(inputModel.Password, "inputModel.Password"); CreateUserResult result; // Attempt to register the user try { var request = new CreateUserRequest(inputModel.UserName, inputModel.Password, inputModel.UserName, storefront.ShopName); result = this.CustomerServiceProvider.CreateUser(request); if (!result.Success) { Helpers.LogSystemMessages(result.SystemMessages, result); } } catch (MembershipCreateUserException e) { result = new CreateUserResult { Success = false }; result.SystemMessages.Add(new Commerce.Services.SystemMessage { Message = ErrorCodeToString(e.StatusCode) }); } return new ManagerResponse<CreateUserResult, CommerceUser>(result, result.CommerceUser); }
public IActionResult RegisterManager(LoginRegisterModel user) { CreateUserResult result = _marketUoW.UseUserMngmtRepository().CreateUser(user, "Manager"); return(Ok(result)); }
/// <summary> /// 创建新用户 /// </summary> /// <param name="User"></param> /// <returns>是否成功</returns> public CreateUserResult CreateUser(BzureUser User) { CreateUserResult result = this.Decorator.CreateUser(User); return(result); }