* Add key to UserGroupDto * Fix renaming table in sqlite The SqliteSyntaxProvider needed an overload to use the correct query * Start work on user group GUID migration * Add key index to UserGroupDto * Copy over data when migrating sqlite * Make sqlite column migration work * Remove PostMigrations These should be replaced with Notification usage * Remove outer scope from Upgrader * Remove unececary null check * Add marker base class for migrations * Enable scopeless migrations * Remove unnecessary state check The final state of the migration is no longer necessarily the final state of the plan. * Extend ExecutedMigrationPlan * Ensure that MigrationPlanExecutor.Execute always returns a result. * Always save final state, regardless of errors * Remove obsolete Execute * Add Umbraco specific migration notification * Publish notification after umbraco migration * Throw the exception that failed a migration after publishing notification * Handle notification publishing in DatabaseBuilder * Fix tests * Remember to complete scope * Clean up MigrationPlanExecutor * Run each package migration in a separate scope * Add PartialMigrationsTests * Add unhappy path test * Fix bug shown by test * Move PartialMigrationsTests into the correct folder * Comment out refresh cache in data type migration Need to add this back again as a notification handler or something. * Start working on a notification test * Allow migrations to request a cache rebuild * Set RebuildCache from MigrateDataTypeConfigurations * Clean MigrationPlanExecutor * Add comment explaining the need to partial migration success * Fix tests * Allow overriding DefinePlan of UmbracoPlan This is needed to test the DatabaseBuilder * Fix notification test * Don't throw exception to be immediately re-caught * Assert that scopes notification are always published * Ensure that scopes are created when requested * Make test classes internal. It doesn't really matter, but this way it doesn't show up in intellisense * Add notification handler for clearing cookies * Add CompatibilitySuppressions * Use unscoped migration for adding GUID to user group * Make sqlite migration work It's really not pretty, square peg, round hole. * Don't re-enable foreign keys This will happen automatically next time a connection is started. * Scope database when using SQLServer * Don't call complete transaction * Tidy up a couple of comment * Only allow scoping the database from UnscopedMigrationBase * Fix comment * Remove remark in UnscopedMigrationBase as it's no longer true * Add keys when creating default user groups * Map database value from DTO to entity * Fix migration Rename also renamed the foreign keys, making it not work * Make migration idempotent * Fix unit test * Update CompatibilitySuppressions.xml * Add GetUserGroupByKey to UserService * Add ByKey endpoint * Add UniqueId to AppendGroupBy Otherwise MSSQL grenades * Ensure that languages are returned by PerformGetByQuery * add POC displaying model * Clean up by key controller * Add GetAllEndpoint * Add delete endpoint * Use GetKey to get GUID from id Instead of pulling up the entire entity. * Add UserGroup2Permission table * Fetch the new permissions when getting user groups * Dont ToString int to parse it to a short I'm pretty sure this is some way old migration type code that doesn't make any sense anymore * Add new relation to GetDeleteClauses * Persist the permissions * Split UserGroupViewModel into multiple models This is to make it possible to make endpoints more rest-ish * Bootstrap create and update endpoints * Make GetAllUserGroupController paged * Add method to create IUserGroup from UserGroupSaveModel * Add sanity check version of endpoint * Fix persisting permissions * Map section aliases to the name the frontend expects This is a temporary fix till we find out how we really want to handle this * Fix up post merge * Make naming more consistent * Implement initial update endpoint * Fix media start node * Clean name for XSS when mapping to IUserGroup * Use a set instead of a list for permission names We don't want dupes * Make permission column nvarchar max * Add UserGroupOperationStatuses * Add IUserGroupAuthorizationService * Add specific user group creation method to user service * Move validating and authorizing into its own methods * Add operation result to action result mapping * Update create controller to use the create method * Fix create end point * Comment out getting current user untill we have auth * Add usergroup service * Obsolete usergroup things from IUserService * Add update to UserGroupService interface * User IUserGroupService in controllers * User async notifications overloads * Move authorize user group creation into its own service * Add AuthorizeUserGroupUpdate method * Make new service implementations internal and sealed * Add update user * Add GetAll to usergroup service * Remove or obsolete usages of GetAllUserGroups * Add usergroup service to DI * Remove usage of GetGroupsByAlias * Remove usages of GetUserGroupByAlias * Remove usage of GetUserGroupById * Add new table when creating a new database * Implement Delete * Add skip and take to getall * Move skip take into the service * Fixup suggestions in user group service * Fixup unit tests * Allow admins to change user groups they're not a part of * Add CompatibilitySuppressions * Update openapi * Uppdate OpenApi.json again * Add missing compatibility suppression * Added missing type info in ProducesResponseTypeAttribute * Added INamedEntityViewModel and added on the relevant view models * Fixed bug, resulting in serialization not being the same as swagger reported. Now all types objects implementing an interface, is serialized with the $type property * updated OpenApi.json * Added missing title in notfound response * Typo * .Result to .GetAwaiter().GetResult() * Update comment to mention it should be implemented on CurrentUserController * Validate that start nodes actually exists * Handle not found consistently * Use iso codes instead of ids * Update OpenAPI * Automatically infer statuscode in problemdetails * Ensure that the language exists * Fix usergroup 2 permission index * Validate that group name and alias is not too long * Only return status from validation We're just returning the same usergroups, and this is less boilerplate code * Handle empty and null group names * Remove group prefix from statuses * Add some basic validation tests * Don't allow updating a usergroup to having a duplicate alias --------- Co-authored-by: Bjarke Berg <mail@bergmania.dk>
93 lines
5.2 KiB
C#
93 lines
5.2 KiB
C#
// ReSharper disable once CheckNamespace
|
|
|
|
namespace Umbraco.Cms.Core;
|
|
|
|
public static partial class Constants
|
|
{
|
|
public static class DatabaseSchema
|
|
{
|
|
// TODO: Why aren't all table names with the same prefix?
|
|
public const string TableNamePrefix = "umbraco";
|
|
|
|
public static class Tables
|
|
{
|
|
public const string Lock = TableNamePrefix + "Lock";
|
|
public const string Log = TableNamePrefix + "Log";
|
|
|
|
public const string Node = TableNamePrefix + "Node";
|
|
public const string NodeData = /*TableNamePrefix*/ "cms" + "ContentNu";
|
|
|
|
public const string ContentType = /*TableNamePrefix*/ "cms" + "ContentType";
|
|
public const string ContentChildType = /*TableNamePrefix*/ "cms" + "ContentTypeAllowedContentType";
|
|
public const string DocumentType = /*TableNamePrefix*/ "cms" + "DocumentType";
|
|
public const string ElementTypeTree = /*TableNamePrefix*/ "cms" + "ContentType2ContentType";
|
|
public const string DataType = TableNamePrefix + "DataType";
|
|
public const string Template = /*TableNamePrefix*/ "cms" + "Template";
|
|
|
|
public const string Content = TableNamePrefix + "Content";
|
|
public const string ContentVersion = TableNamePrefix + "ContentVersion";
|
|
public const string ContentVersionCultureVariation = TableNamePrefix + "ContentVersionCultureVariation";
|
|
public const string ContentVersionCleanupPolicy = TableNamePrefix + "ContentVersionCleanupPolicy";
|
|
|
|
public const string Document = TableNamePrefix + "Document";
|
|
public const string DocumentCultureVariation = TableNamePrefix + "DocumentCultureVariation";
|
|
public const string DocumentVersion = TableNamePrefix + "DocumentVersion";
|
|
public const string MediaVersion = TableNamePrefix + "MediaVersion";
|
|
public const string ContentSchedule = TableNamePrefix + "ContentSchedule";
|
|
|
|
public const string PropertyType = /*TableNamePrefix*/ "cms" + "PropertyType";
|
|
public const string PropertyTypeGroup = /*TableNamePrefix*/ "cms" + "PropertyTypeGroup";
|
|
public const string PropertyData = TableNamePrefix + "PropertyData";
|
|
|
|
public const string RelationType = TableNamePrefix + "RelationType";
|
|
public const string Relation = TableNamePrefix + "Relation";
|
|
|
|
public const string Domain = TableNamePrefix + "Domain";
|
|
public const string Language = TableNamePrefix + "Language";
|
|
public const string DictionaryEntry = /*TableNamePrefix*/ "cms" + "Dictionary";
|
|
public const string DictionaryValue = /*TableNamePrefix*/ "cms" + "LanguageText";
|
|
|
|
public const string User = TableNamePrefix + "User";
|
|
public const string UserGroup = TableNamePrefix + "UserGroup";
|
|
public const string UserStartNode = TableNamePrefix + "UserStartNode";
|
|
public const string User2UserGroup = TableNamePrefix + "User2UserGroup";
|
|
public const string User2NodeNotify = TableNamePrefix + "User2NodeNotify";
|
|
public const string UserGroup2App = TableNamePrefix + "UserGroup2App";
|
|
public const string UserGroup2Node = TableNamePrefix + "UserGroup2Node";
|
|
public const string UserGroup2Permission = TableNamePrefix + "UserGroup2Permission";
|
|
public const string UserGroup2NodePermission = TableNamePrefix + "UserGroup2NodePermission";
|
|
public const string UserGroup2Language = TableNamePrefix + "UserGroup2Language";
|
|
public const string ExternalLogin = TableNamePrefix + "ExternalLogin";
|
|
public const string TwoFactorLogin = TableNamePrefix + "TwoFactorLogin";
|
|
public const string ExternalLoginToken = TableNamePrefix + "ExternalLoginToken";
|
|
|
|
public const string Macro = /*TableNamePrefix*/ "cms" + "Macro";
|
|
public const string MacroProperty = /*TableNamePrefix*/ "cms" + "MacroProperty";
|
|
|
|
public const string Member = /*TableNamePrefix*/ "cms" + "Member";
|
|
public const string MemberPropertyType = /*TableNamePrefix*/ "cms" + "MemberType";
|
|
public const string Member2MemberGroup = /*TableNamePrefix*/ "cms" + "Member2MemberGroup";
|
|
|
|
public const string Access = TableNamePrefix + "Access";
|
|
public const string AccessRule = TableNamePrefix + "AccessRule";
|
|
public const string RedirectUrl = TableNamePrefix + "RedirectUrl";
|
|
|
|
public const string CacheInstruction = TableNamePrefix + "CacheInstruction";
|
|
public const string Server = TableNamePrefix + "Server";
|
|
|
|
public const string Tag = /*TableNamePrefix*/ "cms" + "Tags";
|
|
public const string TagRelationship = /*TableNamePrefix*/ "cms" + "TagRelationship";
|
|
|
|
public const string KeyValue = TableNamePrefix + "KeyValue";
|
|
|
|
public const string AuditEntry = TableNamePrefix + "Audit";
|
|
public const string Consent = TableNamePrefix + "Consent";
|
|
public const string UserLogin = TableNamePrefix + "UserLogin";
|
|
|
|
public const string LogViewerQuery = TableNamePrefix + "LogViewerQuery";
|
|
|
|
public const string CreatedPackageSchema = TableNamePrefix + "CreatedPackageSchema";
|
|
}
|
|
}
|
|
}
|