bool IUserTaskManager.ResetPassword(Guid tenantId, Guid userId) { var queryFilter = new List <QueryFilter>(); queryFilter.Add(new QueryFilter { FieldName = "TenantId", Operator = "Equal", Value = tenantId.ToString() }); queryFilter.Add(new QueryFilter { FieldName = "InternalId", Operator = "Equal", Value = userId.ToString() }); var queryContext = new QueryContext { Fields = "FirstName,LastName,MiddleName,UserCredential.Username", Filters = queryFilter, PageSize = 100, PageIndex = 1, MaxResult = 1 }; byte[] passwordHash, passwordSalt; Random random = new Random(); int pass = random.Next(1000000); // pass=1234; SqlMembershipProvider.CreatePasswordHash(pass.ToString(), out passwordHash, out passwordSalt); DataTable dataTableUser = _iEntityResourceManager.GetResultById(tenantId, "user", userId, queryContext); User userEntity = EntityMapper <User> .Mapper(dataTableUser); if (Guid.Parse(userEntity.InternalId.Value) == Guid.Empty) { return(false); } CredentialInfo credentialData = crd.GetCredential(tenantId, Guid.Parse(userEntity.InternalId.Value)); var jObject = DataUtility.ConvertToJObjectList(dataTableUser); jObject[0].Add(new JProperty("UserCredential.Username", credentialData.UserName.ToString())); jObject[0].Add(new JProperty("UserCredential.Password", pass.ToString())); var emailTemplate = _iEntityResourceManager.GetWellKnownTemplate(tenantId, "emailtemplate", "user", (int)ContextTypeEnum.Forgotpassword, jObject[0]); if (emailTemplate != null && emailTemplate.Body != null) { CredentialInfo usercredentialinfo = crd.GetCredential(tenantId, userId); bool isnew = _sqlMembership.CheckResetOnFirstLogin(tenantId); crd.Update(tenantId, new CredentialInfo { CredentialId = credentialData.CredentialId, ParentId = Guid.Parse(userEntity.InternalId.Value), PasswordHash = Convert.ToBase64String(passwordHash), PasswordSalt = Convert.ToBase64String(passwordSalt), IsNew = isnew }); var returnVal = DataUtility.SaveEmail(tenantId, Guid.Parse(userEntity.InternalId.Value), emailTemplate, credentialData.UserName.ToString(), "ResetPassword", InfoType.User); } else { return(false); } return(true); }