예제 #1
0
        private void btnAddUser_Click(object sender, EventArgs e)
        {
            if (ValidateControls())
            {
                try
                {
                    SystemUser systemUser = new SystemUser();
                    if (cmbStaff.SelectedIndex != -1)
                    {
                        Staff staff = (Staff)cmbStaff.SelectedItem;
                        systemUser.PersonId = staff.PersonId;
                        if (staff.Email == string.Empty)
                        {
                            staff.Email = txtEmail.Text;
                            StaffData sd = new StaffData();
                            sd.Update(staff);
                        }
                    }

                    SystemUserData sud = new SystemUserData();
                    systemUser.FirstName    = txtFirstName.Text;
                    systemUser.LastName     = txtLastName.Text;
                    systemUser.UserName     = txtUserName.Text;
                    systemUser.Email        = txtEmail.Text;
                    systemUser.UserPassword = "******";

                    sud.CreateUser(systemUser);
                    this.DialogResult = DialogResult.OK;
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
예제 #2
0
 private void btnOK_Click(object sender, EventArgs e)
 {
     if (CheckIfLoginDetailsProvided())
     {
         SystemUserData sd = new SystemUserData();
         Jarvis.CurrentUser = sd.GetSystemUser(txtUsername.Text, txtPassword.Text);
         if (Jarvis.CurrentUser == null)
         {
             //  MessageBox.Show("Couldn't authenticate user", "Login error", MessageBoxButtons.OK, MessageBoxIcon.Error);
             CouldntAuthenticateUser("Password or Username is incorrect");
             this.DialogResult = System.Windows.Forms.DialogResult.None;
         }
         else
         {
             if (String.Compare(txtPassword.Text, Jarvis.CurrentUser.UserPassword) == 0)
             {
                 this.DialogResult = System.Windows.Forms.DialogResult.OK;
             }
             else
             {
                 CouldntAuthenticateUser("Password or Username is incorrect");
                 //MessageBox.Show("Couldn't authenticate user", "Login error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                 this.DialogResult = System.Windows.Forms.DialogResult.None;
             }
         }
     }
     else
     {
         CouldntAuthenticateUser("Please provide login credentials");
         // MessageBox.Show("Please provide login credentials", "Login error", MessageBoxButtons.OK, MessageBoxIcon.Error);
         this.DialogResult = System.Windows.Forms.DialogResult.None;
     }
 }
예제 #3
0
        private OrderData MapOrderData(UserOrder order)
        {
            if (order == null)
            {
                return(null);
            }

            SystemUserData systemUserData = new SystemUserData
            {
                Email     = order.UserSystem.Email,
                Phone     = order.UserSystem.Phone,
                FirstName = order.UserSystem.FirsName,
                LastName  = order.UserSystem.LastName,
                IdUser    = order.UserId
            };

            OrderData orderData = new OrderData
            {
                // ReSharper disable once PossibleInvalidOperationException
                IdEntity       = order.IdEntity.Value,
                DateOrder      = order.DateOrder,
                Address        = order.Address,
                OrderStatus    = order.OrderStatus,
                Products       = order.Products,
                UserSystemData = systemUserData
            };

            return(orderData);
        }
예제 #4
0
        public ServiceResult Create(string sessionToken, SystemUserData userData)
        {
            #region Check the administrator password is correct


            var user = _dbContext.UserAuthorizationsToken.GetByToken(sessionToken);

            string login    = user.UserSystem.UserAdmittance.Login;
            string password = userData.OldPassword;

            string newHash = _passwordHash.GeneratePasswordHash(login, password);
            string oldHash = user.UserSystem.UserAdmittance.PasswordHash;

            if (newHash != oldHash)
            {
                ServiceResult errorResult = new ServiceResult(ServiceResult.ResultConnectionEnum.AccessDenied,
                                                              "To create a new user, you must confirm the current password.");
                return(errorResult);
            }


            #endregion

            return(CreatByRegistration(userData));
        }
예제 #5
0
        public ActionResult Create([FromBody] SystemUserData userData)
        {
            if (userData == null)
            {
                return(BadRequest("Input request is empty"));
            }

            #region Check input data

            try
            {
                var dataRequestValidator = new SystemUserDataValidator();

                var validationResult = dataRequestValidator.Validate(userData);

                if (!validationResult.IsValid)
                {
                    string errorMessage = "";

                    foreach (var error in validationResult.Errors)
                    {
                        errorMessage += error.ErrorMessage + " ";
                    }

                    return(Conflict(errorMessage));
                }
            }
            catch (Exception e)
            {
                _logger.LogError($"Create new system user. Input data failed validation. Full validator exception message: {e.Message}");
                return(StatusCode(StatusCodes.Status500InternalServerError, "Internal server error"));
            }
            #endregion
            #region Check password

            var validatorPassword       = new PasswordValidator();
            var validatorPasswordResult = validatorPassword.Validate(userData.NewPassword);

            if (!validatorPasswordResult.IsValid)
            {
                string messageError = validatorPasswordResult.Errors.FirstOrDefault()?.ErrorMessage;
                return(Conflict(messageError));
            }

            #endregion

            var    claims       = HttpContext.User.Claims.ToList();
            string sessionToken = claims.FirstOrDefault(c => c.Type == AuthorizationDataModel.ClaimSessionToken)?.Value;

            ServiceResult result = _userSystemService.Create(sessionToken, userData);

            if (result.ResultConnection != ServiceResult.ResultConnectionEnum.Correct)
            {
                _logger.LogError($"User system service error: {result.Message}");
                return(StatusCode(StatusCodes.Status500InternalServerError, result.Message));
            }

            return(StatusCode(StatusCodes.Status201Created));
        }
예제 #6
0
        private void PopulateUsers()
        {
            SystemUserData    data = new SystemUserData();
            List <SystemUser> list = data.GetList().ConvertAll(x => x as SystemUser);

            cmbUserName.ValueMember   = "PersonId";
            cmbUserName.DisplayMember = "UserName";
            cmbUserName.DataSource    = list;
            cmbUserName.SelectedIndex = -1;
        }
예제 #7
0
 private void btnSave_Click(object sender, EventArgs e)
 {
     if (MessageBox.Show("Are you sure you want to save changes?", "Save changes", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
     {
         try
         {
             sud = new SystemUserData("WithTransaction");
             // sud = new SystemUserData();
             sud.SaveSystemUserRoleActions(_userList);
             this.DialogResult = DialogResult.OK;
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.Message, "Save changes", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
     }
 }
        public ServiceResult CreateNewUser(RegistrationRequest registrationData)
        {
            SystemUserData systemUserData = new SystemUserData
            {
                Login       = registrationData.Login,
                OldPassword = registrationData.Password,
                NewPassword = registrationData.Password,
                Email       = registrationData.Email,
                Phone       = registrationData.Phone,
                FirstName   = registrationData.FirstName,
                LastName    = registrationData.LastName,
                IdUser      = 0,
                Role        = (new UserRole(UserRole.RoleEnum.User)).GetRoleName(),
                Status      = (new UserStatus(UserStatus.StatusEnum.Active)).GetStatusName()
            };

            var serviceResult = _userSystemService.CreatByRegistration(systemUserData);

            return(serviceResult);
        }
예제 #9
0
        public void Update_CorrectParametersAdmin()
        {
            string userLogin = "******";
            string userToken = _sessionTokenMock.GenerateSessionToken(userLogin);

            SystemUserData userData = new SystemUserData
            {
                Login       = "******",
                Email       = "test",
                FirstName   = "test",
                LastName    = "test",
                IdUser      = 2,
                OldPassword = "******",
                NewPassword = "******",
                Phone       = "test",
                Role        = new UserRole(UserRole.RoleEnum.User).GetRoleName(),
                Status      = new UserStatus(UserStatus.StatusEnum.Active).GetStatusName()
            };

            var result = _userSystemService.Update(userToken, userData);

            Assert.IsTrue(result.ResultConnection == ServiceResult.ResultConnectionEnum.Correct);
        }
예제 #10
0
        private SystemUserData MapUserToData(UserSystem user)
        {
            if (user == null)
            {
                return(null);
            }

            SystemUserData result = new SystemUserData
            {
                IdUser      = user.IdEntity.Value,
                FirstName   = user.FirsName,
                LastName    = user.LastName,
                Phone       = user.Phone,
                Email       = user.Email,
                Login       = user.UserAdmittance.Login,
                OldPassword = "",
                NewPassword = "",
                Role        = user.UserAdmittance.UserRole.GetRoleName(),
                Status      = user.UserAdmittance.UserStatus.GetStatusName()
            };

            return(result);
        }
예제 #11
0
 public SystemUserList()
 {
     InitializeComponent();
     sud = new SystemUserData();
 }
예제 #12
0
        public ServiceResult CreatByRegistration(SystemUserData userData)
        {
            #region Check uniq login

            bool loginIsUnique = _dbContext.UserAdmittances.LoginUserIsUnique(userData.Login);

            if (!loginIsUnique)
            {
                var typeError   = ServiceResult.ResultConnectionEnum.InvalidRequestData;
                var resultError = new ServiceResult(typeError, "User with the same name already exists!");
                return(resultError);
            }

            #endregion


            string passwordHash;

            passwordHash = _passwordHash.GeneratePasswordHash(userData.Login, userData.NewPassword);

            var userStatus = new UserStatus(userData.Status);
            var userRole   = new UserRole(userData.Role);

            var userAdmittance = new UserAdmittance(userData.Login, passwordHash, userStatus, userRole);

            var systemUser = new UserSystem
            {
                FirsName       = userData.FirstName,
                LastName       = userData.LastName,
                Phone          = userData.Phone,
                Email          = userData.Email,
                UserAdmittance = userAdmittance
            };

            bool userIsSave;

            #region Save new user


            int?idUserAdmittance = _dbContext.UserAdmittances.Insert(systemUser.UserAdmittance);

            if (idUserAdmittance.HasValue && idUserAdmittance.Value > 0)
            {
                systemUser.UserAdmittanceId = idUserAdmittance.Value;

                int?idUser = _dbContext.UsersSystem.Insert(systemUser);

                if (idUser.HasValue && idUser > 0)
                {
                    userIsSave = true;
                }
                else
                {
                    _dbContext.UserAdmittances.Delete(idUserAdmittance.Value);
                    userIsSave = false;
                }
            }
            else
            {
                userIsSave = false;
            }


            #endregion

            if (!userIsSave)
            {
                var typeError   = ServiceResult.ResultConnectionEnum.SystemError;
                var resultError = new ServiceResult(typeError, "Save new user failed, please try again");
                return(resultError);
            }

            var typeResult = ServiceResult.ResultConnectionEnum.Correct;
            var result     = new ServiceResult(typeResult, "Save new user completed");
            return(result);
        }
예제 #13
0
        public ServiceResult Update(string sessionToken, SystemUserData userData)
        {
            #region Check access

            var userAccess = _dbContext.UserAuthorizationsToken.GetByToken(sessionToken);

            if (userAccess.UserSystem.UserAdmittance.Login != userData.Login &&
                userAccess.UserSystem.UserAdmittance.UserRole.Role != UserRole.RoleEnum.Admin)
            {
                string messageError = "Only user and administrator can change user information. ";
                var    resultError  = new ServiceResult(ServiceResult.ResultConnectionEnum.AccessDenied, messageError);
                return(resultError);
            }


            if (userAccess.UserSystem.IdEntity != null && userAccess.UserSystem.IdEntity.Value == userData.IdUser)
            {
                if (userAccess.UserSystem.UserAdmittance.UserRole.Role != new UserRole(userData.Role).Role ||
                    userAccess.UserSystem.UserAdmittance.UserStatus.Status != new UserStatus(userData.Status).Status)
                {
                    string messageError = "Information about this user can be changed only through the user's personal account.";
                    var    resultError  = new ServiceResult(ServiceResult.ResultConnectionEnum.AccessDenied, messageError);
                    return(resultError);
                }
            }

            string checkHash = _passwordHash.GeneratePasswordHash(userAccess.UserSystem.UserAdmittance.Login, userData.OldPassword);
            if (checkHash != userAccess.UserSystem.UserAdmittance.PasswordHash)
            {
                ServiceResult errorResult = new ServiceResult(ServiceResult.ResultConnectionEnum.AccessDenied,
                                                              "To update user information, you must confirm the current password. ");
                return(errorResult);
            }

            #endregion

            var user = _dbContext.UsersSystem.GetUserByLogin(userData.Login);

            user.FirsName = userData.FirstName;
            user.LastName = userData.LastName;
            user.Email    = userData.Email;
            user.Phone    = userData.Phone;
            user.UserAdmittance.UserRole   = new UserRole(userData.Role);
            user.UserAdmittance.UserStatus = new UserStatus(userData.Status);

            if (!string.IsNullOrEmpty(userData.NewPassword))
            {
                user.UserAdmittance.PasswordHash = _passwordHash.GeneratePasswordHash(userData.Login, userData.NewPassword);
            }

            bool updateResultAdmittances;
            bool updateResultUser = false;

            updateResultAdmittances = _dbContext.UserAdmittances.Update(user.UserAdmittance);

            if (updateResultAdmittances)
            {
                updateResultUser = _dbContext.UsersSystem.Update(user);
            }

            if (!updateResultAdmittances || !updateResultUser)
            {
                return(new ServiceResult(ServiceResult.ResultConnectionEnum.SystemError, "Failed to save user information."));
            }


            return(new ServiceResult(ServiceResult.ResultConnectionEnum.Correct, "User information successfully changed"));
        }