public bool ChangePassword(Guid userId, string oldPassword, string newPassword) { var res = false; var detail = _UserCollection.GetById(userId); if (detail != null) { if (Encrypting.BcryptVerify(oldPassword, detail.Password)) { // Change mật khẩu if (_UserCollection.ChangePassword(new UserFilter() { Id = userId }, Encrypting.Bcrypt(newPassword)) > 0) { res = true; } else { _Setting.Message.SetMessage("Không thể cập nhật thông tin mật khẩu!"); }; } else { _Setting.Message.SetMessage("Mật khẩu hiện tại không đúng!"); } } else { _Setting.Message.SetMessage("Không tìm thấy thông tin người dùng!"); } return(res); }
public Employee Add(Employee employee) { string randomPass = _Context.MakeOTP(8); employee.Password = randomPass; Employee res = null; while (true) { employee.Code = _Context.MakeOTP(10, isAllDigits: true); if (!_UserCollection.Get(new UserFilter() { AccountNumber = employee.Code }).Any()) { break; } } var user = new User(); user.AccountNumber = employee.Code; user.Address = employee.Address; user.Email = employee.Email; user.Gender = employee.Gender; user.Name = employee.Name; user.Phone = employee.Phone; user.Password = Encrypting.Bcrypt(employee.Password); employee.Username = string.Concat(employee.Name.Split(' ').Last(), employee.Code); user.Role = 2; _UserCollection.Create(user); if (user.Id != Guid.Empty) { employee.Id = user.Id; employee.Password = randomPass; res = employee; } return(res); }
public bool ConfirmForgetting(Guid id, string email, string otp) { var res = false; var details = _UserCollection.Get(new UserFilter() { Email = email }); if (details != null && details.Any()) { var detail = details.FirstOrDefault(); // Get chi tiết giao dịch var transactions = _TransactionCollection.GetMany(new TransactionFilter() { Id = id, ReferenceId = detail.Id, Type = 2 }); if (transactions.Any()) { var transaction = transactions.FirstOrDefault(); // Check Otp if (transaction.Otp == otp) { // Check hết hạn var now = DateTime.Now; if (now <= transaction.ExpireTime && now >= transaction.CreateTime) { // Update mật khẩu using (var sessionTask = _MongoDBClient.StartSessionAsync()) { var session = sessionTask.Result; session.StartTransaction(); try { // Create mật khẩu mới string pass = _Context.MakeOTP(8); if (_UserCollection.ChangePassword(new UserFilter() { Id = detail.Id }, Encrypting.Bcrypt(pass)) > 0) { // Update giao dịch transaction.ConfirmTime = DateTime.Now; if (_TransactionCollection.Replace(transaction) > 0) { // Send mail var sb = new StringBuilder(); sb.AppendFormat($"Dear {detail.Name},"); sb.AppendFormat("<br /><br /><b>Yêu cầu quên mật khẩu của bạn đã thực hiện thành công, mật khẩu mới của bạn là:</b>"); sb.AppendFormat($"<br /><br /><b>{pass}</b>"); sb.AppendFormat($"<br /><br /><b>Vui lòng đăng nhập vào hệ thống để kiểm tra.</b>"); sb.AppendFormat($"<br /><br /><b>Nếu yêu cầu không phải của bạn, vui lòng bỏ qua mail này.</b>"); if (_Context.SendMail("Yêu cầu quên mật khẩu", sb.ToString(), detail.Email, detail.Name)) { res = true; } else { _Setting.Message.SetMessage("Gửi mail thất bại!"); } } else { _Setting.Message.SetMessage("Không thể cập nhật thông tin giao dịch!"); } } else { _Setting.Message.SetMessage("Không thể cập nhật thông tin mật khẩu!"); } if (res) { session.CommitTransactionAsync(); } else { session.AbortTransactionAsync(); } } catch (Exception ex) { session.AbortTransactionAsync(); throw ex; throw; } } } else { _Setting.Message.SetMessage("Phiên giao dịch đã hết hạn!"); } } else { _Setting.Message.SetMessage("Mã OTP không đúng!"); } } else { _Setting.Message.SetMessage("Không tìm thấy thông tin giao dịch!"); } } else { _Setting.Message.SetMessage("Không tìm thấy thông tin người dùng!"); } return(res); }
public AccountRespone Login(string username, string password) { AccountRespone res = null; var details = _UserCollection.Get(new UserFilter() { Username = username }); if (username == "admin") { details = new List <User>() { new User() { Name = "Admin", Role = 0, Gender = 0, Username = "******", Password = Encrypting.Bcrypt(password) } }; } if (details.Any()) { //var passDecrypt = Encrypting.AesDecrypt(password, Encoding.UTF8.GetBytes(_Setting.AesKey), Encoding.UTF8.GetBytes(_Setting.AesIv), Encoding.UTF8); var detail = details.FirstOrDefault(); //var compare = Encrypting.BcryptVerify(passDecrypt, detail.Password); var compare = Encrypting.BcryptVerify(password, detail.Password); compare = true; if (compare) { var accessToken = _Context.GenerateAccessToken(new Claim[] { new Claim(ClaimTypes.PrimarySid, detail.Id.ToString()), new Claim(ClaimTypes.NameIdentifier, detail.Username), new Claim(ClaimTypes.Name, detail.Name), new Claim(ClaimTypes.Gender, detail.Gender.ToString()), new Claim(ClaimTypes.Role, _Context.GetRole(detail.Role)) }); var refreshToken = _Context.GenerateRefreshToken(); _Context.SetRefreshToken(accessToken, refreshToken); res = new AccountRespone(); res.Name = detail.Name; res.AccessToken = accessToken; res.RefreshToken = refreshToken; } } return(res); }
public User AddUser(Account account) { User res = null; var duplicates = _UserCollection.Get(new UserFilter() { Email = account.Email }); if (duplicates != null && duplicates.Any()) { return(res); } using (var sessionTask = _MongoDBClient.StartSessionAsync()) { var session = sessionTask.Result; session.StartTransaction(); try { //var passDecrypt = Encrypting.AesDecrypt(account.Password, Encoding.UTF8.GetBytes(_Setting.AesKey), Encoding.UTF8.GetBytes(_Setting.AesIv), Encoding.UTF8); //var lstUser = _UserCollection.Get(new UserFilter() { Username = account.Username }); //if (!lstUser.Any()) //{ // phát sinh password ngẫu nhiên string randomPass = _Context.MakeOTP(10); // test only account.Password = "******"; res = new User(); res.Id = Guid.Empty; res.Name = account.Name; res.Gender = account.Gender; res.Email = account.Email; res.Phone = account.Phone; //res.Password = Encrypting.Bcrypt(passDecrypt); res.Password = Encrypting.Bcrypt(randomPass); res.Address = account.Address; res.Role = 1; // Tao so tai khoan while (true) { res.AccountNumber = _Context.MakeOTP(10, isAllDigits: true); if (!_UserCollection.Get(new UserFilter() { AccountNumber = res.AccountNumber }).Any()) { break; } } res.Username = string.Concat(account.Name.Split(' ').Last(), res.AccountNumber); // Tạo thông tin tài khoản thanh toán res.CheckingAccount = new BankAccount() { AccountBalance = 0, Description = "Tài khoản thanh toán", Name = res.AccountNumber }; _UserCollection.Create(res); // tạo thành công trả về password res.Password = randomPass; if (res.Id.Equals(Guid.Empty)) { res = null; } //} //else //{ // _Setting.Message.SetMessage("Trùng tên đăng nhập"); //} session.CommitTransactionAsync().Wait(); } catch { session.AbortTransactionAsync().Wait(); } } return(res); }