Bugfix: Added dll dependencies for AspNetFormsAuth.
These dlls are needed for SimpleMembershipProvider, but are not directly referenced from the application.
Implemented GeneratePasswordResetToken and ResetPassword web methods.
AspNetFormsAuth: Automatic user log in after ResetPassword.
Added 'enter' key handling on authentication web pages for developers.
Implemented GenericRepository, a powerful helper for server-side type-safe access to entity's repository without referencing the generated business layer object model.
GenericRepositories is another helper for simpler access to multiple repositories.
Deactivating obsolete claims and permissions, instead of deleting them.
This behavior is consistent with keeping the uninstalled entity's data (in data-migration tables) for the recovery in case of re-installation.
Bugfix: Deploying AspNetFormsAuth to an empty database causes SQL connection timeout.
The problem is caused when executing external tool InitAspNetDatabase.exe that waits while NHibernate transaction keeps the write lock.
Refactoring: AuthenticationDatabaseInitializer switched to GenericRepository.
Bugfix: LinqPad scripts fail when using forms authentication.
"Rhetos Server DOM.linq" now work for both authentication packages.
"Rhetos Server SOAP.linq" throws a developer-friendly error on AspNetFormsAuth.
Both scripts show warning on SimpleWindowsAuth, but it does not impact the execution result.
Typo.
Bugfix: AutocodeForEach does not work on a Reference with short syntax.
DeployPackages would throw an error "Group property type 'SimpleReferencePropertyInfo' is not supported in AutoCodeForEachDatabaseDefinition.
Now if some property type does not have its own AutocodeForEach implementation, it will inherit the implementation form its base property type.
Refactoring: QueryDataSourceCommand uses GenericRepository.
GenericRepositories allows use by EntityName, besides use by interface.
GenericFilter (FilterCriteria) will allow more than property filters.
Generic filter is extended to allow multiple property and predefined filters.
Intersection is used for multiple filters ("and").
Refactoring: Removed antipattern singleton XmlUtility.Dom.
I am cleaning server initialization code to allow (in future version) unified initialization of ExecutionContext for Rhetos server, testing tools and "Rhetos Server DOM.linq".
Refactoring: Cleaner Autofac initialization:
1. DeployPackages and Rhetos service now use same root folder path for IoCC configuration.
2. Cleaner subfolders handling with Paths class.
3. DeployPackages may be debugged with Visal Studio using "Start external program", no need for PrepareTestEnvironment.bat.
4. Rhetos.Configuration.Autofac.DefaultAutofacConfiguration may be used for testing and linqpad.
Improved PluginsUtility performance. Created RhetosTestContainer for unit testing and other tools.
Simplified Rhetos initialization and configuration.
Unit tests and LinqPad scripts now use full Rhetos server context.
Removed NullAuthorizationProvider from RhetosTestContainer. There is no need to override it (especially if the user is local admin) because BuiltInAdminOverride is checked before AuthorizationProvider is used.
Added GenericRepositories in ExecutionContext. CurrentDirectory fixed in LinqPad script.
New server command: ReadCommand is improved QueryDataSourceCommand. QueryDataSourceCommand is still available for backward compatibility.
ReadCommand:
* Allows ordering by multiple properties.
* Allows fluid paging with full range of Top and Skip values (not just whole pages).
* Allows reading records with paging without getting total count (this was a performance issue for entities with million rows).
* Allows reading record count without reading records.
Bugfix: NHibernate.Cfg.Configuration.LinqToHqlGeneratorsRegistry cannot be used in plugins.
Bugfix: InitAspNetDatabase assembly resolver and error handling.
ChangeLog.md