Exemplo n.º 1
0
        /// <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
     });
 }
Exemplo n.º 3
0
        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));
        }
Exemplo n.º 4
0
        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."));
     }
 }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
 public async Task CreateUserAsync(CreateUserPayload userPayload)
 {
     string json = JsonConvert.SerializeObject(userPayload);
     await _queueService.SendJsonAsync(json, "IdentityExchange", "sign.up");
 }