/// <summary> /// User payload validations: /// Email matches ^([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5})$ regex. /// Password matches confirm password. /// First and last name does not exceed 20 chars. /// Country and city does not exceed 20 chars. /// Street does not exceed 50 chars. /// Building number > 0. /// </summary> public GenericStatusMessage ValidateCreateUserData(CreateUserPayload payload) { if (!payload.Username.Matches(EmailRegexPattern)) { return(new GenericStatusMessage(false, "Username is not an email.")); } using (ReservationDataContext context = new ReservationDataContext()) { bool usernameExists = context.Users.Any(x => x.Username == payload.Username); if (usernameExists) { return(new GenericStatusMessage(false, "Username already exists.")); } } if (!payload.Password.CheckLength(25, 8) || !payload.ConfirmPassword.CheckLength(25, 8)) { return(new GenericStatusMessage(false, "Passwords should be between 8 and 25 characters.")); } if (payload.Password != payload.ConfirmPassword) { return(new GenericStatusMessage(false, "Passwords do not match.")); } return(ValidateUserData(payload)); }
private User ConvertUserFromPayload(CreateUserPayload payload, UserRole role) { return(new User { Username = payload.Username, PasswordHash = PasswordHasher.Create(payload.Password), FirstName = payload.FirstName, LastName = payload.LastName, Country = payload.Country, City = payload.City, Street = payload.Street, BuildingNumber = payload.BuildingNumber, Role = role }); }
public GenericStatusMessage CreateUser([FromBody] CreateUserPayload payload, UserRole role) { UserValidationService userValidationService = new UserValidationService(); GenericStatusMessage genericStatusMessage = userValidationService.ValidateCreateUserData(payload); if (!genericStatusMessage.Success) { Response.StatusCode = 400; return(genericStatusMessage); } UserManipulationService userManipulationService = new UserManipulationService(); return(userManipulationService.AddUser(payload, role)); }
public async Task <ActionResult> SignUp([FromBody] SignUpViewModel signUpModel) { var user = await _signUpService.SignUpAsync(signUpModel.MapTo <User>()); if (user == null) { return(Conflict()); } var payload = new CreateUserPayload { DomainId = user.Id, Email = user.Email, Role = signUpModel.Role, Password = signUpModel.Password }; await _identityService.CreateUserAsync(payload); return(Ok()); }
public GenericStatusMessage AddUser(CreateUserPayload payload, UserRole role) { try { Logger.Debug($"Attempting to create new user {payload.Username}"); using (ReservationDataContext context = new ReservationDataContext()) { User user = ConvertUserFromPayload(payload, role); context.Users.Add(user); context.SaveChanges(); } Logger.Debug($"{payload.Username} was created successfully."); return(new GenericStatusMessage(true)); } catch (DbEntityValidationException e) { string exceptionMessage = e.EntityValidationErrors.FirstOrDefault()?.ValidationErrors.FirstOrDefault()?.ErrorMessage; Logger.Error($"Failed to create user {payload.Username}. Error: '{exceptionMessage}'"); return(new GenericStatusMessage(false, "Failed to add user, please contact support.")); } }
public override void Up() { UserManipulationService userManipulationService = new UserManipulationService(); CreateUserPayload owner = new CreateUserPayload { FirstName = "Ron", LastName = "Shachar", Country = "Israel", City = "Tel Aviv", Street = "Rambam", BuildingNumber = 6, Password = "******", ConfirmPassword = "******", Username = "******" }; userManipulationService.AddUser(owner, UserRole.RoomOwner); long ownerId = 0; using (ReservationDataContext context = new ReservationDataContext()) { ownerId = context.Users.Single(x => x.Username == "*****@*****.**").Id; } RoomManipulationService roomManipulationService = new RoomManipulationService(); CreateRoomPayload roomPayload = new CreateRoomPayload { Name = "Globo Gym", Country = "Israel", City = "Givatayim", Street = "Borochov", BuildingNumber = 5, IsActive = true, WorkingHours = CreateDefaultWorkingHours(Days.Sunday, Days.Tuesday, Days.Thursday) }; roomManipulationService.AddRoom(roomPayload, ownerId); }
public async Task CreateUserAsync(CreateUserPayload userPayload) { string json = JsonConvert.SerializeObject(userPayload); await _queueService.SendJsonAsync(json, "IdentityExchange", "sign.up"); }