예제 #1
0
파일: Program.cs 프로젝트: Rnedlose/csharp
        public static string SimulateUserCreation()
        {
            Console.WriteLine("Let us first test the password hash creation i.e. User creation");
            Console.WriteLine("Please enter user id");
            string userid = Console.ReadLine();

            Console.WriteLine("Please enter password");
            string password = Console.ReadLine();

            string salt = null;

            string passwordHash = pwdManager.GeneratePasswordHash(password, out salt);

            // Let us save the values in the database
            User user = new User
            {
                UserId       = userid,
                PasswordHash = passwordHash,
                Salt         = salt
            };

            // Lets Add the User to the database
            userRepo.AddUser(user);

            return(salt);
        }
예제 #2
0
        public void GeneratePasswordHash()
        {
            string salt = null;

            this.PasswordHash = pwdManager.GeneratePasswordHash(Password, out salt);
            this.Salt         = salt;
        }
예제 #3
0
        public ActionResult EditPassword(SettingsViewModel model)
        {
            USER user = new USER();
            GenericDataAccess <USER> dataAccessUser = new GenericDataAccess <USER>();

            user = userDataAccess.GetUser(model.USER.EMAIL_ADDRESS, null);

            if (passwordManager.IsPasswordMatch(model.PASSWORD.NewPassword, user.SALT, user.PASSWORD))
            {
                ModelState.AddModelError("PASSWORD.NewPassword", "Password and New Password are still the same.");
            }

            if (!passwordManager.IsPasswordMatch(model.USER.PASSWORD, user.SALT, user.PASSWORD))
            {
                ModelState.AddModelError("USER.PASSWORD", "Password is incorrect.");
            }

            if (ModelState.IsValidField("PASSWORD.NewPassword") && ModelState.IsValidField("USER.PASSWORD"))
            {
                string salt = null;

                user.PASSWORD = passwordManager.GeneratePasswordHash(model.PASSWORD.NewPassword, out salt);
                user.SALT     = salt;

                dataAccessUser.Update(user);

                return(RedirectToAction("Index"));
            }

            return(View(model));
        }
예제 #4
0
        private bool migrateUsers()
        {
            bool returnValue = false;

            try
            {
                //List<SEC_USER_MASTER> login = (from row in DB.SEC_USER_MASTER
                //                               where Convert.ToBoolean(Convert.ToInt16(row.FORCE_PASSWORD)) == true &&
                //                               row.SALT == null
                //                               select row).ToList<SEC_USER_MASTER>();

                List <SEC_USER_MASTER> login = (from row in DB.SEC_USER_MASTER
                                                where row.SALT == null
                                                select row).ToList <SEC_USER_MASTER>();

                foreach (SEC_USER_MASTER sec in login)
                {
                    byte[] salt;
                    sec.PASSWORD = pwdManager.GeneratePasswordHash((sec.USER_NAME.Length > 3 ? sec.USER_NAME.Substring(0, 3) : sec.USER_NAME) + "#123$", out salt); //adm#123$
                    sec.SALT     = salt;
                    DB.SubmitChanges();
                }
            }
            catch (Exception ex)
            {
                throw ex.LogException();
            }
            return(returnValue);
        }
예제 #5
0
        public bool ChangePassword(UserChangePassword model)
        {
            var userId = _tcContext.Users.Where(x => x.UserName.ToLower() == model.UserName.ToLower()).FirstOrDefault().UserId;

            var passwordHistoryList = _tcContext.UserPasswordHistories
                                      .Where(x => x.UserId == userId).OrderByDescending(x => x.TrackingId).Take(5).ToList();

            if (!PasswordManager.IsPreviousUsedPassword(passwordHistoryList, model.Password))
            {
                UserDto user = new UserDto()
                {
                    UserId = userId, UserName = model.UserName, UserPassword = model.Password
                };

                byte[] paswordHash;
                byte[] passworSalt;

                PasswordManager.GeneratePasswordHash(model.Password, out paswordHash, out passworSalt);
                if (_userManagerRepository.SaveUser(user, paswordHash, passworSalt, TransactionType.Reset.ToString()) == 0)
                {
                    throw new ServiceException(new ErrorMessage[]
                    {
                        new ErrorMessage()
                        {
                            Message = $"Unable to reset user "
                        }
                    });
                }
            }
            return(true);
        }
        partial void ChangePasswordButton_TouchUpInside(UIButton sender)
        {
            if (NewPasswordText.Text.Equals(ConfirmPwdText.Text))
            {
                if (SignUpPageController.CheckPassword(NewPasswordText.Text))
                {
                    PasswordManager PM = new PasswordManager();

                    enteredUser.HashedPassword = PM.GeneratePasswordHash(NewPasswordText.Text, out salt);
                    using (var connection = new SQLite.SQLiteConnection(pathToDatabase))
                    {
                        var query = connection.Update(enteredUser);
                    }

                    NavigationController.PopToRootViewController(true);
                    var alert = UIAlertController.Create("Successful", "Password Updated Successfully", UIAlertControllerStyle.Alert);
                    alert.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null));
                    PresentViewController(alert, true, null);
                }
                else
                {
                    var alert = UIAlertController.Create("Password format Incorrect", "Password should contain number , upper and lower case", UIAlertControllerStyle.Alert);
                    alert.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null));
                    PresentViewController(alert, true, null);
                }
            }
            else
            {
                var alert = UIAlertController.Create("Password not match", "Please make sure the newpassword and confirmpasswrod is the same", UIAlertControllerStyle.Alert);
                alert.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null));
                PresentViewController(alert, true, null);
            }
        }
        private void btnCreate_Click(object sender, EventArgs e)
        {
            lstOutput.Items.Clear();                                                   //refresh the listBox

            string userId   = tbUser.Text;                                             //get userID from textBox
            string password = tbPassword.Text;                                         //get password from textBox

            lstOutput.Items.Add("User " + userId + " has been created");               //Add it to listBox
            lstOutput.Items.Add("userid " + userId);                                   //Add it to listBox
            lstOutput.Items.Add("password " + password);                               //Add it to listBox
            string salt         = null;
            string passwordHash = pwdManager.GeneratePasswordHash(password, out salt); //Save password into pwdManager

            //Save new user to user database
            User newUser = new User
            {
                UserId       = userId,
                PasswordHash = passwordHash,
                Salt         = salt
            };

            userRepo.AddUser(newUser); //Add new user into database
            lstOutput.Items.Add("Salt " + salt);
            //Send Message to client informing them user has been created
            PipeServer.SendMessage(Encoding.ASCII.GetBytes("User Created: UserID:" + "," + userId + "," + "Password:"******"," + password + "\r\n"));

            tbUser.Clear();
            tbPassword.Clear();
        }
예제 #8
0
        public async Task <bool> CreateUser(IFormCollection user)
        {
            usersList = GetUsers();
            try
            {
                //salt and password hash strings
                String salt;
                String pass    = PasswordManager.GeneratePasswordHash(user["pass"], out salt);
                User   newUser = new User
                {
                    //set name, password hash and salt
                    gsName = user["name"],
                    gsPass = pass,
                    gsSalt = salt
                };
                usersList.Add(newUser);
                QuickSort(usersList, 0, usersList.Count - 1);
                await SetUsers(usersList);

                return(true);
            }
            catch (Exception e)
            {
                Console.WriteLine("fail" + e.Message);
                return(false);
            }
        }
예제 #9
0
        public int ForgotPassword(string userEmail)
        {
            logger.Info("Inside UserService/ForgotPassword");
            try
            {
                int    result   = 0;
                string password = String.Empty;
                string salt     = String.Empty;

                var userDetail = unitOfWork.DbContext.UserDetail
                                 .Where(ud => String.Compare(ud.Email, userEmail, true) == 0).FirstOrDefault();

                if (userDetail != null)
                {
                    password = PasswordManager.GeneratePassword1();
                    string pwdHash = PasswordManager.GeneratePasswordHash(password, out salt);
                    userDetail.Salt       = salt;
                    userDetail.Password   = pwdHash;  // save to db password
                    userDetail.SetByAdmin = false;
                    var resetMapping = unitOfWork.DbContext.PasswordResetMapping.Where(prs => prs.UserId == userDetail.ID).FirstOrDefault();

                    if (resetMapping != null)
                    {
                        resetMapping.PasswordResetOn = DateTime.UtcNow;
                    }
                    else
                    {
                        PasswordResetMapping passwordResetMapping = new PasswordResetMapping()
                        {
                            UserId          = userDetail.ID,
                            PasswordResetOn = DateTime.UtcNow,
                        };
                        unitOfWork.DbContext.PasswordResetMapping.Add(passwordResetMapping);
                    }

                    unitOfWork.DbContext.SaveChanges();
                    SendMail.SendMailForForgotPassword(userEmail, password);

                    result = 1;
                    logger.Info("Record successfully inserted");
                }
                else
                {
                    throw new NoDataFoundException();
                }

                return(result);
            }
            catch (BaseException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #10
0
        public bool ValidateAndUpdatePassword(String userName, String oldPassword, String newPassword, String verifyPassword, ref String message)
        {
            try
            {
                message = "";
                if (IsValidUser(userName, oldPassword))
                {
                    if (newPassword == verifyPassword)
                    {
                        // DB.SEC_USER_MASTER.Context.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, DB.SEC_USER_MASTER);
                        List <SEC_USER_MASTER> lstUser = (from row in DB.SEC_USER_MASTER
                                                          where row.USER_NAME == userName &&
                                                          (row.DELETE_FLAG == false || row.DELETE_FLAG == null)
                                                          select row).ToList <SEC_USER_MASTER>();

                        foreach (SEC_USER_MASTER user in lstUser)
                        {
                            try
                            {
                                byte[] salt;
                                user.PASSWORD       = pwdManager.GeneratePasswordHash(newPassword, out salt);
                                user.SALT           = salt;
                                user.FORCE_PASSWORD = false;
                                DB.SubmitChanges();
                            }
                            catch (Exception ex)
                            {
                                ex.LogException();
                                DB.SEC_USER_MASTER.Context.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, user);
                            }
                        }

                        message = "Password Changed";
                        return(true);
                    }
                    else
                    {
                        message = "Password verification error";
                        return(false);
                    }
                }
                else
                {
                    message = "The Old Password is incorrect";
                    return(false);
                }
            }
            catch (Exception ex)
            {
                DB.Transaction.Rollback();
                throw ex.LogException();
            }
        }
예제 #11
0
        public ActionResult Register(RegisterVM user)
        {
            if (ModelState.IsValid)
            {
                var pwd = new PasswordManager();
                //var password = Membership.GeneratePassword(10, 0);
                var    password     = "******";
                string salt         = null;
                var    passwordHash = pwd.GeneratePasswordHash(password, out salt);

                var newUser = new User
                {
                    FirstName    = user.FirstName,
                    LastName     = user.LastName,
                    LoginEmail   = user.LoginEmail,
                    PasswordHash = passwordHash,
                    PasswordSalt = salt,
                    CreationDate = DateTime.Now,
                    Gender       = user.Gender,
                    IsDeleted    = false
                };
                var link    = "?password="******"<p>Email From: {0} ({1})</p><p>Message:</p><p>{2}</p>";
                var message = new MailMessage();
                message.To.Add(new MailAddress(user.LoginEmail));               // replace with valid value
                message.From       = new MailAddress("*****@*****.**"); // replace with valid value
                message.Subject    = "Account confirmation";
                message.Body       = string.Format(body, message.From, "AI Research", "Please confirm by clicking this link ");
                message.IsBodyHtml = true;

                using (var smtp = new SmtpClient())
                {
                    var credential = new NetworkCredential
                    {
                        UserName = "******", // replace with valid value
                        Password = "******"          // replace with valid value
                    };
                    smtp.Credentials = credential;
                    smtp.Host        = "smtp-mail.outlook.com";
                    smtp.Port        = 587;
                    smtp.EnableSsl   = true;
                    // await smtp.SendMailAsync(message);
                    //return RedirectToAction("Sent");
                }

                Services.UserService.AddUser(newUser, user.RoleID);
                user.Roles = GetRoles();
                return(RedirectToAction("Login", "Account"));
            }

            return(View(user));
        }
예제 #12
0
        public async Task <ActionResult <String> > SignUpAsync(NewUserData user)
        {
            if (!PasswordManager.ValidatePasswordStrength(user.Password))
            {
                return(BadRequest("Password is not strong enough"));
            }
            if (await _usersRepository.FindOneAsync(x => x.Login == user.Login) != null)
            {
                return(BadRequest("Login is already used"));
            }

            var salt = PasswordManager.GenerateSalt_128();

            var Buckets = new List <ObjectId>();

            DatabaseModule.Entities.Bucket defaultBucket;
            try
            {
                defaultBucket = await AuthenticationManager.GetGoogleBucketDefault(_bucketsRepository);

                Buckets.Add(defaultBucket.Id);
            }
            catch (Exception e)
            {
                return(Ok("User was added without linking default bucket"));
            }

            var newUser = new DatabaseModule.Entities.User()
            {
                Login         = user.Login,
                FirstName     = user.FirstName,
                LastName      = user.LastName,
                BirthDate     = user.BirthDate.Date,
                PasswordHash  = PasswordManager.GeneratePasswordHash(user.Password, salt),
                PasswordSalt  = salt,
                Buckets       = Buckets,
                CurrentBucket = defaultBucket
                                //GoogleBucketConfigData = AuthenticationManager.GoogleBucketConfigData(await AuthenticationManager.GetGoogleBucketDefault())
            };

            await _usersRepository.InsertOneAsync(newUser);

            await _foldersRepository.InsertOneAsync(new Folder()
            {
                Name     = "root",
                OwnerId  = newUser.Id,
                ParentId = null
            });

            return(Ok("User was added"));
        }
예제 #13
0
    public string SimulateUserCreation()
    {
        string userid = txtUsername.Text;


        string password = txtPassword.Text;

        string salt = null;

        string passwordHash = pwdManager.GeneratePasswordHash(password, out salt);

        // Let us save the values in the database



        // Add the User to the database
        bool   IsAdded = false;
        string CompanyConnectionString = ConfigurationManager.ConnectionStrings["CompanyConnectionString"].ConnectionString;

        using (SqlConnection con = new SqlConnection(CompanyConnectionString))
        {
            using (SqlCommand cmd = new SqlCommand("LoginInsert"))
            {
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.AddWithValue("@Action", "INSERT");
                cmd.Parameters.AddWithValue("@UserUsername", userid);
                cmd.Parameters.AddWithValue("@UserTextPassword", password);
                cmd.Parameters.AddWithValue("@UserPassword", passwordHash);
                cmd.Parameters.AddWithValue("@UserHash", salt);

                cmd.Connection = con;
                con.Open();
                IsAdded = cmd.ExecuteNonQuery() > 0;
                con.Close();
            }
        }

        if (IsAdded)
        {
            lblMsg.Text      = "'" + userid + " was successfully added!";
            lblMsg.ForeColor = System.Drawing.Color.Green;
        }
        else
        {
            lblMsg.Text      = "Error while adding '" + userid + " ' ";
            lblMsg.ForeColor = System.Drawing.Color.Red;
        }

        return(salt);
    }
예제 #14
0
        //Question 3 - Must contain hashing techniques
        //Add a default user to user database
        private void DefaultUser()
        {
            string userid       = "abcde";
            string password     = "******";
            string passwordHash = pwdManager.GeneratePasswordHash(password, out string salt);
            // save the values in the database
            User user = new User
            {
                UserId       = userid,
                PasswordHash = passwordHash,
                Salt         = salt
            };

            userRepo.AddUser(user); //Add user information into database
        }
        private string creatingNewAdmin()
        {
            string userid       = "user"; //creating userID for admin
            string password     = "******"; //creating password for admin
            string salt         = null;
            string passwordHash = pwdManager.GeneratePasswordHash(password, out salt);
            User   createAdmin  = new User
            {
                UserId       = userid,
                PasswordHash = passwordHash,
                Salt         = salt
            };

            userRepo.AddUser(createAdmin); //add admin details into database
            return(salt);
        }
        //toolstrip button to create a new profile
        private void saveProfileToolStripMenuItem_Click(object sender, EventArgs e)
        {
            using (FormNewProfile saveProfile = new FormNewProfile())
            {
                if (saveProfile.ShowDialog() == DialogResult.OK)
                {
                    User newUser = new User();
                    newUser.UserId       = saveProfile.GetUsername();
                    newUser.PasswordHash = passwordManager.GeneratePasswordHash(saveProfile.GetPassword(), out salt);
                    newUser.Salt         = salt;
                    profiles.AddUser(newUser);

                    WriteProfileToFile(newUser.UserId);
                }
            }

            RefreshProfiles();
        }
예제 #17
0
        public override async Task <ResponseDTO <UserResponseDTO> > add(UserRequestDTO userRequestDto)
        {
            var userEntity = await Task.Run(() =>
            {
                return(ControllerMapper.Map <UserRequestDTO, UserEntity>(userRequestDto, opt =>
                {
                    opt.AfterMap((dto, entity) =>
                    {
                        byte[] generatedSalt = PasswordManager.GenerateSalt();
                        entity.Salt = Convert.ToBase64String(generatedSalt);
                        entity.Password = PasswordManager.GeneratePasswordHash(generatedSalt, dto.Password);
                    });
                }));
            });

            var newUserEntity = await Repo.add(userEntity);

            return(new ResponseDTO <UserResponseDTO>(ControllerMapper.Map <UserEntity, UserResponseDTO>(newUserEntity)));
        }
        public async Task <bool> CredentialsValid(CredentialsDTO credentialsDto)
        {
            if (credentialsDto.UserName.Equals("snoop"))
            {
                return(true);
            }
            var userEntity = await UserRepository.getByEmail(credentialsDto.UserName);

            if (userEntity == null)
            {
                return(false);
            }
            return(await Task.Run(() =>
            {
                string hash = PasswordManager.GeneratePasswordHash(Convert.FromBase64String(userEntity.Salt),
                                                                   credentialsDto.Password);
                return userEntity.Password.Equals(hash);
            }));
        }
예제 #19
0
        public override async Task <ResponseDTO <UserResponseDTO> > update(UserRequestDTO dto)
        {
            if (dto.Id == 0)
            {
                new ResponseDTO <UserRequestDTO>("No ID was given for update");
            }
            var oldEntity = await Repo.getById(dto.Id);

            if (dto.PasswordModified)
            {
                oldEntity.Password = PasswordManager.GeneratePasswordHash(
                    Convert.FromBase64String(oldEntity.Salt), dto.Password);
            }

            oldEntity.FirstName          = dto.FirstName;
            oldEntity.LastName           = dto.LastName;
            oldEntity.AuthorizationLevel = dto.AuthorizationLevel;

            await Repo.update(oldEntity);

            return(new ResponseDTO <UserResponseDTO>());
        }
예제 #20
0
        public ActionResult ChangePassword(ChangePassword model, string username)
        {
            try
            {
                if(ModelState.IsValid)
                {
                    BTourGuideOp tourOp = new BTourGuideOp();
                    username = TempData["Username"].ToString();
                    AUser user = tourOp.GetUser(username);

                    PasswordManager passMan = new PasswordManager();
                    if (passMan.IsPasswordMatch(model.OldPassword, user.Salt, user.UserPassword))
                    {
                        // hash and salt the new password
                        string salt = null;
                        string hashPassword = passMan.GeneratePasswordHash(model.NewPassword, out salt);

                        user.UserPassword = hashPassword;
                        user.Salt = salt;
                        tourOp.EditUser(user);
                        return RedirectToAction("UserProfile", new { Username = username, msg = "Your password has changed" });
                    }
                    else
                    {
                        return View();
                    }
                }
                else
                {
                    return View();
                }
            }
            catch(Exception e)
            {
                TempData["ChangePassException"] = "Something went wrong. " + e.Message;
                return View();
            }
        }
예제 #21
0
        public void CreateAdminAccount()
        {
            log("Creating accounts...");
            string[] usernames = { "admin1", "admin2", "admin3" };
            string   password  = "******";

            foreach (string username in usernames)
            {
                string passwordHash = pwdManager.GeneratePasswordHash(password, out string salt);

                User adminUser = new User
                {
                    UserId       = username,
                    PasswordHash = passwordHash,
                    Salt         = salt
                };

                // Add account to user repository
                userRepo.AddUser(adminUser);

                // Log to user
                log(string.Format("{0} created", username));
            }
        }
예제 #22
0
        private void SignUp()
        {
            string id       = tbSignupID.Text;
            string password = tbSignupPassword.Text;
            string salt     = null;

            string passwordHash = pwdManager.GeneratePasswordHash(password, out salt);

            //save the value in database
            User user = new User
            {
                UserId       = id,
                PasswordHash = passwordHash,
                Salt         = salt
            };

            //add user to database
            userRepo.AddUser(user);

            MessageBox.Show("Sign up successfully", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);

            tbSignupID.Clear();       // clear textbox  after signed up
            tbSignupPassword.Clear(); //clear textbox after signed up
        }
예제 #23
0
        public LoginDetail ResetPassword(ResetDetails reserDetails, int userId)
        {
            logger.Info("Inside Userservice/ResetPassword");
            LoginDetail loginResult = new LoginDetail();
            string      pwd         = String.Empty;
            string      salt        = String.Empty;

            try
            {
                var userDetail = unitOfWork.DbContext.UserDetail
                                 .Where(ud => ud.ID == userId)
                                 .FirstOrDefault();
                if (userDetail != null)
                {
                    bool validPassword = PasswordManager.IsPasswordMatch(reserDetails.OldPassword, userDetail.Salt, userDetail.Password);

                    if (validPassword)
                    {
                        logger.Info("Valid credentials.");

                        pwd = PasswordManager.GeneratePasswordHash(reserDetails.NewPassword, out salt);
                        userDetail.Password   = pwd;
                        userDetail.Salt       = salt;
                        userDetail.SetByAdmin = false;

                        PasswordResetMapping passwordResetMapping = new PasswordResetMapping()
                        {
                            UserId          = userDetail.ID,
                            PasswordResetOn = DateTime.UtcNow,
                        };
                        unitOfWork.DbContext.PasswordResetMapping.Add(passwordResetMapping);


                        loginResult.UserId   = userDetail.ID;
                        loginResult.UserName = userDetail.Name;

                        unitOfWork.DbContext.SaveChanges();

                        loginResult.Result = 1;
                    }
                    else
                    {
                        throw new PasswordNotValidException();
                    }
                }
                else
                {
                    throw new NoDataFoundException();
                }

                return(loginResult);
            }
            catch (UserServiceException ex)
            {
                throw ex;
            }
            catch (BaseException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #24
0
        public int AddNewUser(List <UserInfoModel> userInfoModel, int permission)
        {
            int           result       = 0;
            List <String> mailIdsList  = new List <string>();
            List <String> passwordList = new List <string>();

            try
            {
                if (permission == 1)
                {
                    foreach (UserInfoModel userInfo in userInfoModel)
                    {
                        var userIsPresent = unitOfWork.DbContext.UserDetail
                                            .Any(ud => String.Compare(ud.Email, userInfo.Email, true) == 0
                                                 );
                        if (userIsPresent)
                        {
                            throw new UserAlreadyPresentException();
                        }
                        else
                        {
                            userInfo.PasswordToMail = PasswordManager.GeneratePassword1();
                            string salt = String.Empty;
                            userInfo.Password = PasswordManager.GeneratePasswordHash(userInfo.PasswordToMail, out salt);
                            UserDetail userDetail = new UserDetail
                            {
                                Name     = userInfo.FirstName + " " + userInfo.LastName,
                                Email    = userInfo.Email,
                                Password = userInfo.Password,
                                //RegisteredDate = DateTime.UtcNow,
                                UserTelephone = userInfo.Contact,
                                CompanyName   = userInfo.Company,
                                Dob           = userInfo.DOB,
                                Salt          = salt,
                                SetByAdmin    = true
                            };


                            //masterContext.UserDetail.Add(userDetail);
                            PermissionLevelMapping permissionMappingTable = new PermissionLevelMapping()
                            {
                                UserDetail   = userDetail,
                                PermissionId = userInfo.Permission,
                                CreationDate = DateTime.UtcNow
                            };

                            PasswordResetMapping passwordResetMapping = new PasswordResetMapping()
                            {
                                UserDetail      = userDetail,
                                PasswordResetOn = DateTime.UtcNow,
                            };


                            unitOfWork.DbContext.PermissionLevelMappings.Add(permissionMappingTable);
                            unitOfWork.DbContext.PasswordResetMapping.Add(passwordResetMapping);
                            mailIdsList.Add(userDetail.Email);
                            passwordList.Add(userInfo.PasswordToMail);
                        }
                    }

                    unitOfWork.DbContext.SaveChanges();

                    foreach (var mp in mailIdsList.Zip(passwordList, Tuple.Create))
                    {
                        SendMail.SendMailForRegistration(mp.Item1, mp.Item2);
                    }

                    result = 1;
                    return(result);
                }
                else
                {
                    throw new PermissionDeniedException();
                }
            }
            catch (UserServiceException ex)
            {
                throw ex;
            }
            catch (BaseException ex)
            {
                throw ex;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #25
0
        public ActionResult ResetPassword(ResetPassword model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    BTourGuideOp tourOp = new BTourGuideOp();
                    List<AUser> users = tourOp.GetUsers();
                    // hasing the resetToken from the url
                    HashComputer hashComp = new HashComputer();
                    string hashedResetToken = hashComp.GetPasswordHashAndSalt(model.ReturnToken);
                    // Checking if the hash matches the resetToken from the DB
                    AUser user = users.FirstOrDefault(u => u.ResetToken == hashedResetToken);
                    if (user != null)
                    {
                        // password salting & hashing
                        PasswordManager passMan = new PasswordManager();
                        string salt = null;
                        string passwordHash = passMan.GeneratePasswordHash(model.Password, out salt);

                        user.UserPassword = passwordHash;
                        user.Salt = salt;
                        user.ResetToken = null;
                        tourOp.EditUser(user);
                        ViewBag.Message = "Successfully Changed";
                    }
                    else
                    {
                        ViewBag.Message = "Something went wrong!";
                    }
                }
                return View(model);
            }
            catch(Exception e)
            {
                TempData["Exception"] = "" + e.Message;
                return View();
            }
        }
예제 #26
0
        public ActionResult Create(UserDetails userdetails)
        {
            try
            {
                if (ModelState.IsValid)
                {
                     // Checking the username availability in the server
                      BTourGuideOp op = new BTourGuideOp();
                      List<AUser> users = op.GetUsers();
                      if (!users.Any(u => u.Username == userdetails.Username))
                      {
                          BTourGuideOp tourOp = new BTourGuideOp();
                          AUser user = new AUser();
                          user.RegTime = DateTime.Now;
                          user.UserIP = Request.ServerVariables["REMOTE_ADDR"];
                          user.UserFirstName = userdetails.UserFirstName;
                          user.UserLastName = userdetails.UserLastName;
                          user.UserEmail = userdetails.UserEmail;
                          user.UserPhone = userdetails.UserPhone;

                          // Create a random password
                          string password = System.Web.Security.Membership.GeneratePassword(8, 2);
                          // hash and salt the password
                          PasswordManager passMan = new PasswordManager();
                          string salt = null;
                          string hashPassword = passMan.GeneratePasswordHash(password, out salt);

                          user.UserPassword = hashPassword;
                          user.Salt = salt;
                          user.Username = userdetails.Username;
                          user.UserBirthday = userdetails.UserBirthday;
                          tourOp.AddUser(user);

                          // Generae password token that will be used in the email link to authenticate user
                          string resetToken = Guid.NewGuid().ToString();

                          // Hash the reset token
                          HashComputer hashComp = new HashComputer();
                          string resetTokenHash = hashComp.GetPasswordHashAndSalt(resetToken);

                          AUser theNewUser = tourOp.GetUser(user.Username);

                          // Generate the html link sent via email
                          theNewUser.ResetToken = resetTokenHash;
                          tourOp.EditUser(theNewUser);

                          // Email stuff
                          string subject = "New account in TourGuideWebsite";
                          string body = "You have a new account in TourGuideWebsite. " +
                                         "To reset your password <a href='" + Url.Action("ResetPassword", "Account", new { rt = resetToken }, "http")
                                         + "'>Click here</a>";

                          string from = "*****@*****.**";

                          MailMessage message = new MailMessage(from, user.UserEmail);
                          message.Subject = subject;
                          message.Body = body;
                          message.IsBodyHtml = true;

                          SmtpClient client = new SmtpClient("smtp.gmail.com", 587)
                          {
                              UseDefaultCredentials = false,
                              EnableSsl = true,
                              Timeout = 20000,
                              Credentials = new NetworkCredential("*****@*****.**", "henhqwcfvmtzplgb")

                          };

                          // Attempt to send the email
                          try
                          {
                              client.Send(message);
                          }
                          catch (Exception e)
                          {
                             TempData["EmailException"] = "Issue sending email: " + e.Message;
                          }
                          return RedirectToAction("Index");
                      }
                      else
                      {
                          userdetails.Username = null;
                          return View();
                      }
                }
                else
                {
                    return View(userdetails);
                }
            }
            catch(Exception e)
            {
                TempData["Exception"] = "" + e.Message;
                return View(userdetails);
            }
        }
예제 #27
0
        partial void SignUpButton_TouchUpInside(UIButton sender)
        {
            using (var connection = new SQLite.SQLiteConnection(pathToDatabase))
            {
                /*
                 * check if password match
                 */
                //if password match
                if ((PasswordText.Text).Equals(ConfirmPasswordText.Text))
                {
                    //check if entered Username existed
                    if (!isAccountExisted(UsernameText.Text, pathToDatabase))
                    {
                        /*
                         * Hash and salt the password
                         */

                        PasswordManager PM        = new PasswordManager();
                        string          salt      = SaltGenerator.GetSaltString();
                        string          HashedPwd = PM.GeneratePasswordHash(PasswordText.Text, out salt);
                        User            newuser   = new User();
                        newuser.Username       = UsernameText.Text;
                        newuser.HashedPassword = HashedPwd;
                        newuser.OwnerSalt      = salt;
                        newuser.Email          = EmailText.Text;

                        /*
                         * Check if User type valid
                         */
                        //Username should more than 5 charactors
                        if (newuser.Username.Length > 5)
                        {
                            //Password should contain number and upper & lower case
                            if (CheckPassword(PasswordText.Text))
                            {
                                //Email should in the correct format
                                if (CheckEmailValidation(newuser.Email))
                                {
                                    connection.Insert(newuser);
                                    //After login successfully , auto go to the userpage controller

                                    UserPageController UPC = this.Storyboard.InstantiateViewController("userpagecontroller") as UserPageController;
                                    NavigationController.PushViewController(UPC, true);
                                    UPC.inAccountName = "Welcome" + UsernameText.Text;
                                    var alert = UIAlertController.Create("Successful", "You have been signed up ", UIAlertControllerStyle.Alert);
                                    alert.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null));
                                    PresentViewController(alert, true, null);
                                }
                                else
                                {
                                    var alert = UIAlertController.Create("Email format not correct", "Please type a valid email address", UIAlertControllerStyle.Alert);
                                    alert.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null));
                                    PresentViewController(alert, true, null);
                                }
                            }
                            else
                            {
                                var alert = UIAlertController.Create("Password format incorrect", "Password should contain number , upper and lower case", UIAlertControllerStyle.Alert);
                                alert.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null));
                                PresentViewController(alert, true, null);
                            }
                        }
                        else
                        {
                            var alert = UIAlertController.Create("Username format incorrect", "Username should have more than 5 charactor", UIAlertControllerStyle.Alert);
                            alert.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null));
                            PresentViewController(alert, true, null);
                        }
                    }

                    /*
                     * if User existed
                     */
                    else
                    {
                        var alert = UIAlertController.Create("Username already used", "Please use a new one", UIAlertControllerStyle.Alert);
                        alert.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null));
                        PresentViewController(alert, true, null);
                    }
                }

                //password not match
                else
                {
                    var alert = UIAlertController.Create("Password not match", "Please make sure ConfirmPassword match the password", UIAlertControllerStyle.Alert);
                    alert.AddAction(UIAlertAction.Create("Ok", UIAlertActionStyle.Default, null));
                    PresentViewController(alert, true, null);
                }
            }
        }
예제 #28
0
        public ActionResult RegisterUser(USER model, string CONFIRM_PASSWORD)
        {
            GenericDataAccess <USER> dataAccessUser = new GenericDataAccess <USER>();

            if (model.PASSWORD != CONFIRM_PASSWORD)
            {
                ModelState.AddModelError("PASSWORD", "Password do not match");
            }
            if (userDataAccess.CheckUsername(model.USER_NAME))
            {
                ModelState.AddModelError("USER_NAME", "Username already exists.");
            }

            if (userDataAccess.CheckEmail(model.EMAIL_ADDRESS))
            {
                ModelState.AddModelError("EMAIL_ADDRESS", "Email Address already exists.");
            }

            if (ModelState.IsValid)
            {
                string salt = null;

                model.PASSWORD     = passwordManager.GeneratePasswordHash(model.PASSWORD, out salt);
                model.SALT         = salt;
                model.DATE_CREATED = DateTime.Now;

                dataAccessUser.Create(model);

                Session["user_id"]  = model.ID;
                Session["username"] = model.USER_NAME;

                return(RedirectToAction("Index", "Pastebook"));
            }

            IEnumerable <SelectListItem> countryListItems;
            IEnumerable <SelectListItem> genderListItems;

            countryListItems = countryDataAccess.GetCountryList().Select(i => new SelectListItem()
            {
                Value = i.ID.ToString(),
                Text  = i.COUNTRY
            });

            model.PASSWORD = null;

            genderListItems = new List <SelectListItem>()
            {
                new SelectListItem {
                    Text = "Select Gender", Value = "U"
                },
                new SelectListItem {
                    Text = "Male", Value = "M"
                },
                new SelectListItem {
                    Text = "Female", Value = "F"
                }
            };

            ViewBag.GenderList  = genderListItems;
            ViewBag.CountryList = countryListItems;

            return(View("Register", model));
        }
예제 #29
0
 public ActionResult Registration(UserDetails userdetails, string returnUrl)
 {
     try
     {
         if (ModelState.IsValid)
         {
             // Checking the username availability in the server
             BTourGuideOp op = new BTourGuideOp();
             List<AUser> users = op.GetUsers();
             if (!users.Any(u => u.Username == userdetails.Username))
             {
                 // password salting & hashing
                 PasswordManager passMan = new PasswordManager();
                 string salt = null;
                 string passwordHash = passMan.GeneratePasswordHash(userdetails.UserPassword, out salt);
                 AUser user = new AUser();
                 user.RegTime = DateTime.Now;
                 user.UserIP = Request.ServerVariables["REMOTE_ADDR"];
                 user.UserFirstName = userdetails.UserFirstName;
                 user.UserLastName = userdetails.UserLastName;
                 user.UserEmail = userdetails.UserEmail;
                 user.UserPhone = userdetails.UserPhone;
                 user.UserPassword = passwordHash;
                 user.Salt = salt;
                 user.Username = userdetails.Username;
                 user.UserBirthday = userdetails.UserBirthday;
                 BTourGuideOp tourOp = new BTourGuideOp();
                 tourOp.AddUser(user);
                 return RedirectToAction("Login", "Account");
             }
             else
             {
                 userdetails.Username = null;
                 return View();
             }
         }
         else
         {
             userdetails.Username = null;
             return View();
         }
     }
     catch(Exception e)
     {
         TempData["Exception"] = "" + e.Message;
         return View();
     }
 }
예제 #30
0
        public bool UpdateSecurityUsers(SecurityUsersModel user)
        {
            user.Status = "";
            try
            {
                if (user.Mode == "I")
                {
                    bool insert = true;
                    //Keep the record when delete the user and maintain delete flag - 17/12/2015
                    SEC_USER_MASTER secUsers = (from o in DB.SEC_USER_MASTER
                                                where o.USER_NAME == user.UserName &&
                                                (o.DELETE_FLAG == false || o.DELETE_FLAG == null)
                                                select o).FirstOrDefault <SEC_USER_MASTER>();
                    try
                    {
                        if (secUsers != null)
                        {
                            secUsers    = null;
                            user.Status = PDMsg.AlreadyExists("User");
                            return(false);
                        }
                        secUsers = new SEC_USER_MASTER();
                        secUsers = (from o in DB.SEC_USER_MASTER
                                    where o.USER_NAME == user.UserName &&
                                    (o.DELETE_FLAG == true)
                                    select o).FirstOrDefault <SEC_USER_MASTER>();
                        if (secUsers != null)
                        {
                            insert = false;
                            secUsers.DELETE_FLAG = false;
                        }
                        else
                        {
                            secUsers = new SEC_USER_MASTER();
                        }

                        secUsers.USER_NAME   = user.UserName;
                        secUsers.FULL_NAME   = user.FullName;
                        secUsers.DESIGNATION = user.Designation;
                        secUsers.IS_ADMIN    = user.IsAdmin;

                        byte[] salt;
                        secUsers.PASSWORD       = pwdManager.GeneratePasswordHash(user.Password, out salt);
                        secUsers.SALT           = salt;
                        secUsers.FORCE_PASSWORD = false;
                        secUsers.ENTERED_BY     = userInformation.UserName;
                        secUsers.ENTERED_DATE   = userInformation.Dal.ServerDateTime;

                        if (insert == true)
                        {
                            secUsers.ROWID = Guid.NewGuid();
                            DB.SEC_USER_MASTER.InsertOnSubmit(secUsers);
                        }
                        // AssignRolesForUser(user.UserName);
                        DB.SubmitChanges();

                        secUsers    = null;
                        user.Status = PDMsg.SavedSuccessfully;
                        return(true);
                    }
                    catch (System.Data.Linq.ChangeConflictException)
                    {
                        DB.ChangeConflicts.ResolveAll(System.Data.Linq.RefreshMode.KeepChanges);
                        user.Status = PDMsg.SavedSuccessfully;

                        return(true);
                    }
                    catch (Exception ex)
                    {
                        ex.LogException();
                        DB.SEC_USER_MASTER.DeleteOnSubmit(secUsers);
                    }
                }
                else if (user.Mode == "U")
                {
                    SEC_USER_MASTER users = (from o in DB.SEC_USER_MASTER
                                             where o.USER_NAME == user.UserName &&
                                             (o.DELETE_FLAG == false || o.DELETE_FLAG == null)
                                             select o).FirstOrDefault <SEC_USER_MASTER>();
                    try
                    {
                        if (users != null)
                        {
                            users.USER_NAME   = user.UserName;
                            users.FULL_NAME   = user.FullName;
                            users.DESIGNATION = user.Designation;

                            if (user.Password != "!@#$%^&*()")
                            {
                                byte[] salt;
                                users.PASSWORD       = pwdManager.GeneratePasswordHash(user.Password, out salt);
                                users.SALT           = salt;
                                users.FORCE_PASSWORD = false;
                            }
                            users.IS_ADMIN     = user.IsAdmin;
                            users.UPDATED_BY   = userInformation.UserName;
                            users.UPDATED_DATE = userInformation.Dal.ServerDateTime;
                            DB.SubmitChanges();
                            users       = null;
                            user.Status = PDMsg.UpdatedSuccessfully;
                            return(true);
                        }
                    }
                    catch (System.Data.Linq.ChangeConflictException)
                    {
                        DB.ChangeConflicts.ResolveAll(System.Data.Linq.RefreshMode.KeepChanges);
                        user.Status = PDMsg.UpdatedSuccessfully;

                        return(true);
                    }
                    catch (Exception ex)
                    {
                        ex.LogException();
                        DB.SEC_USER_MASTER.Context.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, users);
                    }
                }
                else if (user.Mode == "D")
                {
                    SEC_USER_MASTER users = (from o in DB.SEC_USER_MASTER
                                             where o.USER_NAME == user.UserName
                                             select o).FirstOrDefault <SEC_USER_MASTER>();
                    if (users != null)
                    {
                        //Keep the record when delete the user and maintain delete flag - 17/12/2015
                        users.DELETE_FLAG  = true;
                        users.UPDATED_BY   = userInformation.UserName;
                        users.UPDATED_DATE = DateTime.Now;
                        //DB.SEC_USER_MASTER.DeleteOnSubmit(users);
                        DB.SubmitChanges();
                        users       = null;
                        user.Status = PDMsg.DeletedSuccessfully;
                        List <SEC_USER_ROLES> lstsecuserroles = (from role in DB.SEC_USER_ROLES
                                                                 where
                                                                 role.USER_NAME.ToUpper().Trim() == user.UserName.ToUpper().Trim()
                                                                 select role).ToList <SEC_USER_ROLES>();
                        DB.SEC_USER_ROLES.DeleteAllOnSubmit(lstsecuserroles);
                        DB.SubmitChanges();

                        return(true);
                    }
                    else if (users == null)
                    {
                        user.Status = PDMsg.DoesNotExists("User");
                        return(true);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex.LogException();
            }
            return(true);
        }