From 7953cd69fe4f7dae7c3e6a8a4b6d73a8d48a472c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96ZT=C3=9CRK?= <76204082+iamsedatozturk@users.noreply.github.com> Date: Tue, 17 Jun 2025 09:18:42 +0300 Subject: [PATCH 1/2] =?UTF-8?q?Seeder=20d=C3=BCzenlemeleri?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Seeds/BackgroundWorkerSeeder.cs | 36 - .../Seeds/GlobalSearchSeeder.cs | 50 - .../Seeds/MenuSeeder.cs | 519 ----- .../Seeds/NotificationRuleSeeder.cs | 58 - .../Seeds/PermissionSeeder.cs | 891 -------- .../Seeds/PlatformDataSeeder.cs | 127 +- .../Seeds/SeederData.json | 1899 ++++++++++++++++- .../Seeds/SeederDto.cs | 63 +- 8 files changed, 2033 insertions(+), 1610 deletions(-) delete mode 100644 api/src/Kurs.Platform.DbMigrator/Seeds/BackgroundWorkerSeeder.cs delete mode 100644 api/src/Kurs.Platform.DbMigrator/Seeds/GlobalSearchSeeder.cs delete mode 100644 api/src/Kurs.Platform.DbMigrator/Seeds/MenuSeeder.cs delete mode 100644 api/src/Kurs.Platform.DbMigrator/Seeds/NotificationRuleSeeder.cs delete mode 100644 api/src/Kurs.Platform.DbMigrator/Seeds/PermissionSeeder.cs diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/BackgroundWorkerSeeder.cs b/api/src/Kurs.Platform.DbMigrator/Seeds/BackgroundWorkerSeeder.cs deleted file mode 100644 index ce88712d..00000000 --- a/api/src/Kurs.Platform.DbMigrator/Seeds/BackgroundWorkerSeeder.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using System.Threading.Tasks; -using Kurs.Platform.Entities; -using Volo.Abp.Data; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Domain.Repositories; - -namespace Kurs.Platform.Data.Seeds; - -public class BackgroundWorkerSeeder : IDataSeedContributor, ITransientDependency -{ - private readonly IRepository _backgroundWorkerRepository; - - public BackgroundWorkerSeeder( - IRepository backgroundWorkerRepository) - { - _backgroundWorkerRepository = backgroundWorkerRepository; - } - - public async Task SeedAsync(DataSeedContext context) - { - #region BackgroundWorker - - await _backgroundWorkerRepository.InsertManyAsync([ - new() { - Name = "Notification Worker", - Cron = "5 * * * *", - WorkerType = Enums.WorkerTypeEnum.NotificationWorker, - IsActive = true, - DataSourceCode = SeedConsts.DataSources.DefaultCode, - }, - ]); - - #endregion - } -} diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/GlobalSearchSeeder.cs b/api/src/Kurs.Platform.DbMigrator/Seeds/GlobalSearchSeeder.cs deleted file mode 100644 index 58b6391c..00000000 --- a/api/src/Kurs.Platform.DbMigrator/Seeds/GlobalSearchSeeder.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System; -using System.Threading.Tasks; -using Kurs.Platform.Entities; -using Volo.Abp.Data; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Domain.Repositories; - -namespace Kurs.Platform.Data.Seeds; - -public class GlobalSearchSeeder : IDataSeedContributor, ITransientDependency -{ - private readonly IRepository _globalSearchRepository; - - public GlobalSearchSeeder( - IRepository globalSearchRepository) - { - _globalSearchRepository = globalSearchRepository; - } - - public async Task SeedAsync(DataSeedContext context) - { - #region GlobalSearch - - await _globalSearchRepository.InsertManyAsync([ - new() { - System = "Platform", - Group = "Setting Definitions", - Term = "Abp.Account.Captcha.EndPoint", - Weight = "0.2", - Url = "/list/List-0009" - }, - new() { - System = "Platform", - Group = "Setting Definitions", - Term = "Abp.Account.IsSelfRegistrationEnabled", - Weight = "0.8", - Url = "/list/List-0009" - }, - new() { - System = "Platform", - Group = "Setting Definitions", - Term = "Abp.Account.IsSelfRegistrationEnabled", - Weight = "0.7", - Url = "/list/List-0009" - }, - ]); - - #endregion - } -} diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/MenuSeeder.cs b/api/src/Kurs.Platform.DbMigrator/Seeds/MenuSeeder.cs deleted file mode 100644 index 173bc117..00000000 --- a/api/src/Kurs.Platform.DbMigrator/Seeds/MenuSeeder.cs +++ /dev/null @@ -1,519 +0,0 @@ -using System; -using System.Threading.Tasks; -using Kurs.Platform.Entities; -using Volo.Abp.Data; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Domain.Repositories; -using Volo.Abp.TenantManagement; -using static Kurs.Platform.Data.Seeds.SeedConsts; -using static Volo.Abp.Identity.IdentityPermissions; - -namespace Kurs.Platform.Data.Seeds; - -public class MenuSeeder : IDataSeedContributor, ITransientDependency -{ - private readonly IRepository _repository; - - public MenuSeeder( - IRepository repository) - { - _repository = repository; - } - - public async Task SeedAsync(DataSeedContext context) - { - if (await _repository.GetCountAsync() > 0) - { - return; - } - - #region Platform - await _repository.InsertAsync(new Menu - { - Code = SeedConsts.Platform, - DisplayName = SeedConsts.Platform, - Order = 9, - IsDisabled = false, - Icon = "FcTabletAndroid" - }); - #endregion - - #region Home - await _repository.InsertAsync(new Menu - { - Code = AppCodes.Home, - DisplayName = AppCodes.Home, - Order = 0, - IsDisabled = false, - ParentCode = null, - Icon = "FcHome", - Target = null, - ElementId = null, - CssClass = null, - Url = "/" - }); - #endregion - - #region Settings - await _repository.InsertAsync(new Menu - { - Code = AppCodes.Setting, - DisplayName = AppCodes.Setting, - Order = 2, - IsDisabled = false, - Icon = "FcSettings", - Url = "/settings", - RequiredPermissionName = AppCodes.Setting - }); - #endregion - - #region Saas - var menuSaas = await _repository.InsertAsync(new Menu - { - Code = AppCodes.Saas, - DisplayName = AppCodes.Saas, - Order = 3, - IsDisabled = false, - ParentCode = null, - Icon = "FcPodiumWithAudience", - Target = null, - ElementId = null, - CssClass = null - }); - - await _repository.InsertManyAsync([ - new Menu - { - Code = TenantManagementPermissions.Tenants.Default, - DisplayName = TenantManagementPermissions.Tenants.Default, - Order = 1, - IsDisabled = false, - ParentCode = menuSaas.Code, - Icon = "FcDepartment", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.Tenants}", - RequiredPermissionName = TenantManagementPermissions.Tenants.Default - }, - new Menu - { - Code = AppCodes.Branches, - DisplayName = AppCodes.Branches, - Order = 2, - IsDisabled = false, - ParentCode = menuSaas.Code, - Icon = "FcShop", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.Branch}", - RequiredPermissionName = AppCodes.Branches - } - ]); - #endregion - - #region Administration - var menuAdministration = await _repository.InsertAsync(new Menu - { - Code = AppCodes.Administration, - DisplayName = AppCodes.Administration, - Order = 4, - IsDisabled = false, - ParentCode = null, - Icon = "FcOrganization", - Target = null, - ElementId = null, - CssClass = null - }); - - //Setting Management - var menuSettings = await _repository.InsertAsync(new Menu - { - Code = AppCodes.Settings.Default, - DisplayName = AppCodes.Settings.Default, - Order = 0, - IsDisabled = false, - ParentCode = menuAdministration.Code, - Icon = "FcCircuit", - Target = null, - ElementId = null, - CssClass = null - }); - - await _repository.InsertManyAsync([ - new Menu //SettingDefinitions Management - { - Code = AppCodes.Settings.SettingDefinitions, - DisplayName = AppCodes.Settings.SettingDefinitions, - Order = 1, - IsDisabled = false, - ParentCode = menuSettings.Code, - Icon = "FcSupport", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.SettingDefinition}", - RequiredPermissionName = AppCodes.Settings.SettingDefinitions - }, - new Menu //Global Search Ayarları - { - Code = AppCodes.Settings.GlobalSearch, - DisplayName = AppCodes.Settings.GlobalSearch, - Order = 2, - IsDisabled = false, - ParentCode = menuSettings.Code, - Icon = "FcSearch", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.GlobalSearch}", - RequiredPermissionName = AppCodes.Settings.GlobalSearch - }, - ]); - - //Languages Management - var menuLanguages = await _repository.InsertAsync(new Menu - { - Code = AppCodes.Languages.Default, - DisplayName = AppCodes.Languages.Default, - Order = 1, - IsDisabled = false, - ParentCode = menuAdministration.Code, - Icon = "FcGlobe", - Target = null, - ElementId = null, - CssClass = null - }); - - await _repository.InsertManyAsync([ - new Menu - { - Code = AppCodes.Languages.Language, - DisplayName= AppCodes.Languages.Language, - Order = 1, - IsDisabled = false, - ParentCode = menuLanguages.Code, - Icon = "FcGraduationCap", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.Language}", - RequiredPermissionName= AppCodes.Languages.Language - }, - new Menu - { - Code = AppCodes.Languages.LanguageText, - DisplayName= AppCodes.Languages.LanguageText, - Order = 2, - IsDisabled = false, - ParentCode = menuLanguages.Code, - Icon = "FcMindMap", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.LanguageText}", - RequiredPermissionName = AppCodes.Languages.LanguageText - }, - ]); - - //Identity Management - var menuIdentity = await _repository.InsertAsync(new Menu - { - Code = AbpIdentity.GroupName, - DisplayName = AbpIdentity.GroupName, - Order = 2, - IsDisabled = false, - ParentCode = menuAdministration.Code, - Icon = "FcConferenceCall", - Target = null, - ElementId = null, - CssClass = null - }); - - await _repository.InsertManyAsync([ - new Menu - { - Code = AbpIdentity.PermissionGroups.Default, - DisplayName= AbpIdentity.PermissionGroups.Default, - Order = 0, - IsDisabled = false, - ParentCode = menuIdentity.Code, - Icon = "FcEngineering", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.PermissionGroup}", - RequiredPermissionName = AbpIdentity.PermissionGroups.Default - }, - new Menu - { - Code = AbpIdentity.Permissions.Default, - DisplayName= AbpIdentity.Permissions.Default, - Order = 1, - IsDisabled = false, - ParentCode = menuIdentity.Code, - Icon = "FcSupport", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.Permission}", - RequiredPermissionName = AbpIdentity.Permissions.Default - }, - new Menu - { - Code = Roles.Default, - DisplayName = Roles.Default, - Order = 2, - IsDisabled = false, - ParentCode = menuIdentity.Code, - Icon = "FcFlowChart", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.Roles}", - RequiredPermissionName = Roles.Default - }, - new Menu - { - Code = Users.Default, - DisplayName= Users.Default, - Order = 3, - IsDisabled = false, - ParentCode = menuIdentity.Code, - Icon = "FcBusinessman", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.Users}", - RequiredPermissionName = Users.Default - }, - new Menu - { - Code = AbpIdentity.OrganizationUnits.Default, - DisplayName= AbpIdentity.OrganizationUnits.Default, - Order = 4, - IsDisabled = false, - ParentCode = menuIdentity.Code, - Icon = "FcOrganization", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/admin/ous", - RequiredPermissionName = AbpIdentity.OrganizationUnits.Default - }, - new Menu - { - Code = AppCodes.IpRestrictions, - DisplayName = AppCodes.IpRestrictions, - Order = 5, - IsDisabled = false, - ParentCode = menuIdentity.Code, - Icon = "FcNfcSign", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.IpRestriction}", - RequiredPermissionName = AppCodes.IpRestrictions - }, - new Menu - { - Code = AppCodes.IdentityPermissions.Users.SecurityLogs, - DisplayName = AppCodes.IdentityPermissions.Users.SecurityLogs, - Order = 6, - IsDisabled = false, - ParentCode = menuIdentity.Code, - Icon = "FcPrivacy", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.SecurityLog}", - RequiredPermissionName = AppCodes.IdentityPermissions.Users.SecurityLogs - }, - ]); - - //Menu Management - await _repository.InsertAsync(new Menu - { - Code = AppCodes.Menus, - DisplayName = AppCodes.Menus, - Order = 3, - IsDisabled = false, - ParentCode = menuAdministration.Code, - Icon = "FcMenu", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.Menu}", - RequiredPermissionName = AppCodes.Menus - }); - - //Listform Management - var menuListFormManagement = await _repository.InsertAsync(new Menu - { - Code = AppCodes.Listforms.Default, - DisplayName = AppCodes.Listforms.Default, - Order = 4, - IsDisabled = false, - ParentCode = menuAdministration.Code, - Icon = "FcList", - Target = null, - ElementId = null, - CssClass = null - }); - - await _repository.InsertManyAsync([ - new Menu - { - Code = AppCodes.Listforms.DataSource, - DisplayName= AppCodes.Listforms.DataSource, - Order = 0, - IsDisabled = false, - ParentCode = menuListFormManagement.Code, - Icon = "FcAcceptDatabase", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.DataSource}", - RequiredPermissionName = AppCodes.Listforms.DataSource - }, - new Menu - { - Code = AppCodes.Listforms.Wizard, - DisplayName= AppCodes.Listforms.Wizard, - Order = 1, - IsDisabled = false, - ParentCode = menuListFormManagement.Code, - Icon = "FcFlashAuto", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/admin/listform/wizard", - RequiredPermissionName = AppCodes.Listforms.Wizard - }, - new Menu - { - Code = AppCodes.Listforms.Listform, - DisplayName = AppCodes.Listforms.Listform, - Order = 2, - IsDisabled = false, - ParentCode = menuListFormManagement.Code, - Icon = "FcDataSheet", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.Listform}", - RequiredPermissionName = AppCodes.Listforms.Listform - }, - new Menu - { - Code = AppCodes.Listforms.Chart, - DisplayName= AppCodes.Listforms.Chart, - Order = 3, - IsDisabled = false, - ParentCode = menuListFormManagement.Code, - Icon = "FcTodoList", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.Chart}", - RequiredPermissionName= AppCodes.Listforms.Chart - }, - ]); - - //Notification Management - var menuNotifications = await _repository.InsertAsync(new Menu - { - Code = AppCodes.Notifications.Default, - DisplayName = AppCodes.Notifications.Default, - Order = 5, - IsDisabled = false, - ParentCode = menuAdministration.Code, - Icon = "FcWorkflow", - Target = null, - ElementId = null, - CssClass = null - }); - - await _repository.InsertManyAsync([ - new Menu - { - Code = AppCodes.Notifications.NotificationRules, - DisplayName = AppCodes.Notifications.NotificationRules, - Order = 1, - IsDisabled = false, - ParentCode = menuNotifications.Code, - Icon = "FcLibrary", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.NotificationRule}", - RequiredPermissionName = AppCodes.Notifications.NotificationRules - }, - new Menu - { - Code = AppCodes.Notifications.Notification, - DisplayName = AppCodes.Notifications.Notification, - Order = 2, - IsDisabled = false, - ParentCode = menuNotifications.Code, - Icon = "FcBrokenLink", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.Notification}", - RequiredPermissionName = AppCodes.Notifications.Notification - }, - ]); - - //BackgroundWorkers Management - await _repository.InsertAsync(new Menu - { - Code = AppCodes.BackgroundWorkers, - DisplayName = AppCodes.BackgroundWorkers, - Order = 6, - IsDisabled = false, - ParentCode = menuAdministration.Code, - Icon = "FcWorkflow", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.BackgroundWorker}", - RequiredPermissionName = AppCodes.BackgroundWorkers - }); - - //Public Apis Management - await _repository.InsertAsync(new Menu - { - Code = AppCodes.PublicApis, - DisplayName = AppCodes.PublicApis, - Order = 7, - IsDisabled = false, - ParentCode = menuAdministration.Code, - Icon = "FcMindMap", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.PublicApi}", - RequiredPermissionName = AppCodes.PublicApis - }); - - //Audit Logs - await _repository.InsertAsync(new Menu - { - Code = AppCodes.AuditLogs, - DisplayName = AppCodes.AuditLogs, - Order = 8, - IsDisabled = false, - ParentCode = menuAdministration.Code, - Icon = "FcMultipleInputs", - Target = null, - ElementId = null, - CssClass = null, - Url = $"/list/{PlatformConsts.ListFormCodes.AuditLog}", - RequiredPermissionName = AppCodes.AuditLogs - }); - - #endregion - } -} diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/NotificationRuleSeeder.cs b/api/src/Kurs.Platform.DbMigrator/Seeds/NotificationRuleSeeder.cs deleted file mode 100644 index 22766df5..00000000 --- a/api/src/Kurs.Platform.DbMigrator/Seeds/NotificationRuleSeeder.cs +++ /dev/null @@ -1,58 +0,0 @@ -using System; -using System.Threading.Tasks; -using Kurs.Notifications.Domain; -using Kurs.Notifications.Entities; -using Kurs.Notifications.Enums; -using Volo.Abp.Data; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Domain.Repositories; - -namespace Kurs.Platform.Data.Seeds; - -public class NotificationRuleSeeder : IDataSeedContributor, ITransientDependency -{ - private readonly IRepository _notificationRuleRepository; - - public NotificationRuleSeeder( - IRepository notificationRuleRepository) - { - _notificationRuleRepository = notificationRuleRepository; - } - - public async Task SeedAsync(DataSeedContext context) - { - #region NotificationRule - - await _notificationRuleRepository.InsertManyAsync([ - new() { - NotificationType = NotificationTypes.YeniSiparis, - RecipientType = NotificationRecipientTypes.Role, - RecipientId = PlatformConsts.AbpIdentity.User.AdminRoleName, - Channel = NotificationChannels.UiActivity, - IsActive = true, - IsFixed = false, - IsCustomized = false - }, - new() { - NotificationType = NotificationTypes.SiparisPasla, - RecipientType = NotificationRecipientTypes.Role, - RecipientId = PlatformConsts.AbpIdentity.User.AdminRoleName, - Channel = NotificationChannels.Desktop, - IsActive = true, - IsFixed = false, - IsCustomized = false - }, - new() { - NotificationType = NotificationTypes.YeniKullanici, - RecipientType = NotificationRecipientTypes.Role, - RecipientId = PlatformConsts.AbpIdentity.User.AdminRoleName, - Channel = NotificationChannels.Rocket, - IsActive = true, - IsFixed = false, - IsCustomized = false - }, - ]); - - #endregion - } -} diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/PermissionSeeder.cs b/api/src/Kurs.Platform.DbMigrator/Seeds/PermissionSeeder.cs deleted file mode 100644 index f9b18ae9..00000000 --- a/api/src/Kurs.Platform.DbMigrator/Seeds/PermissionSeeder.cs +++ /dev/null @@ -1,891 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Kurs.Platform.Data.Seeds; -using Volo.Abp.Data; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Domain.Repositories; -using Volo.Abp.Guids; -using Volo.Abp.Identity; -using Volo.Abp.MultiTenancy; -using Volo.Abp.PermissionManagement; -using Volo.Abp.TenantManagement; -using static Kurs.Platform.Data.Seeds.SeedConsts; - -namespace Kurs.Platform.Permissions; - -public class PermissionSeeder : IDataSeedContributor, ITransientDependency -{ - private readonly IRepository repository; - private readonly IRepository repositoryGroup; - private readonly IGuidGenerator guidGenerator; - - private readonly string[] CUDE = [ - CRUD.Create, - CRUD.Update, - CRUD.Delete, - CRUD.Export - ]; - - public PermissionSeeder( - IRepository repository, - IRepository repositoryGroup, - IGuidGenerator guidGenerator) - { - this.repository = repository; - this.repositoryGroup = repositoryGroup; - this.guidGenerator = guidGenerator; - } - - public async Task SeedAsync(DataSeedContext context) - { - var permissionGroups = await repositoryGroup.GetListAsync(); - var permissions = await repository.GetListAsync(); - var permissionName = ""; - - #region TenantManagement - if (!permissionGroups.Any(a => a.Name == TenantManagementPermissions.GroupName)) - { - await repositoryGroup.InsertAsync(new PermissionGroupDefinitionRecord - { - Name = TenantManagementPermissions.GroupName, - DisplayName = TenantManagementPermissions.GroupName, - }); - - foreach (var perm in TenantManagementPermissions.GetAll()) - { - if (TenantManagementPermissions.GroupName != perm) - { - if (permissions.Any(a => a.GroupName == TenantManagementPermissions.GroupName && a.Name == perm)) - { - continue; - } - - var pos = perm.LastIndexOf('.'); - var parent = pos > 0 ? perm.Substring(0, pos) : null; - var name = perm.Substring(pos + 1); - - await repository.InsertAsync( - GetNewPermission( - TenantManagementPermissions.GroupName, - perm, - CUDE.Contains(name) ? name : perm, - parent == TenantManagementPermissions.GroupName ? null : parent, - true, - MultiTenancySides.Host - )); - } - } - - // Tenant Management - Export - await repository.InsertAsync( - GetNewPermission( - TenantManagementPermissions.GroupName, - TenantManagementPermissions.Tenants.Default + ".Export", - CUDE[3], - TenantManagementPermissions.Tenants.Default, - true, - MultiTenancySides.Host - )); - } - #endregion - - #region AbpIdentity - if (!permissionGroups.Any(a => a.Name == IdentityPermissions.GroupName)) - { - await repositoryGroup.InsertAsync(new PermissionGroupDefinitionRecord - { - Name = IdentityPermissions.GroupName, - DisplayName = IdentityPermissions.GroupName, - }); - - List entityKeys = []; - foreach (var perm in IdentityPermissions.GetAll()) - { - if (IdentityPermissions.GroupName != perm) - { - if (permissions.Any(a => a.GroupName == IdentityPermissions.GroupName && a.Name == perm)) - { - continue; - } - - var pos = perm.LastIndexOf('.'); - var parent = pos > 0 ? perm.Substring(0, pos) : null; - var name = perm.Substring(pos + 1); - - entityKeys.Add(GetNewPermission( - IdentityPermissions.GroupName, - perm, - CUDE.Contains(name) ? name : perm, - parent == IdentityPermissions.GroupName ? null : parent)); - } - } - - await repository.InsertManyAsync(entityKeys); - - //AbpIdentity.Users - Export - await repository.InsertAsync( - GetNewPermission( - IdentityPermissions.GroupName, - IdentityPermissions.Users.Default + ".Export", - CUDE[3], - IdentityPermissions.Users.Default)); - - //AbpIdentity.Roles - Export - await repository.InsertAsync( - GetNewPermission( - IdentityPermissions.GroupName, - IdentityPermissions.Roles.Default + ".Export", - CUDE[3], - IdentityPermissions.Roles.Default)); - } - - //AbpIdentity.PermissionGroups - if (!permissions.Any(a => a.GroupName == IdentityPermissions.GroupName && a.Name == AbpIdentity.Permissions.Default)) - { - var permPermissionGroupManagement = await repository.InsertAsync( - GetNewPermission( - IdentityPermissions.GroupName, - AbpIdentity.PermissionGroups.Default, - AbpIdentity.PermissionGroups.Default, - null, - true, - MultiTenancySides.Host - )); - - foreach (var item in CUDE) - { - permissionName = AbpIdentity.PermissionGroups.Default + "." + item; - - if (permissions.Any(a => a.GroupName == IdentityPermissions.GroupName && a.Name == permissionName)) - { - continue; - } - - await repository.InsertAsync( - GetNewPermission( - IdentityPermissions.GroupName, - permissionName, - item, - permPermissionGroupManagement.Name, - true, - MultiTenancySides.Host - )); - } - } - - //AbpIdentity.Permissions - if (!permissions.Any(a => a.GroupName == IdentityPermissions.GroupName && a.Name == AbpIdentity.Permissions.Default)) - { - var permPermissionManagement = await repository.InsertAsync( - GetNewPermission( - IdentityPermissions.GroupName, - AbpIdentity.Permissions.Default, - AbpIdentity.Permissions.Default, - null, - true, - MultiTenancySides.Host - )); - - foreach (var item in CUDE) - { - permissionName = AbpIdentity.Permissions.Default + "." + item; - - if (permissions.Any(a => a.GroupName == IdentityPermissions.GroupName && a.Name == permissionName)) - { - continue; - } - - await repository.InsertAsync( - GetNewPermission( - IdentityPermissions.GroupName, - permissionName, - item, - permPermissionManagement.Name, - true, - MultiTenancySides.Host - )); - } - } - - //AbpIdentity.Ous - if (!permissions.Any(a => a.GroupName == IdentityPermissions.GroupName && a.Name == AbpIdentity.OrganizationUnits.Default)) - { - await repository.InsertAsync( - GetNewPermission( - IdentityPermissions.GroupName, - AbpIdentity.OrganizationUnits.Default, - AbpIdentity.OrganizationUnits.Default - )); - - } - - //Ip Restrictions - if (!permissions.Any(a => a.GroupName == IdentityPermissions.GroupName && a.Name == AppCodes.IpRestrictions)) - { - var permIpRestrictions = await repository.InsertAsync( - GetNewPermission( - IdentityPermissions.GroupName, - AppCodes.IpRestrictions, - AppCodes.IpRestrictions - )); - - foreach (var item in CUDE) - { - permissionName = AppCodes.IpRestrictions + "." + item; - - if (permissions.Any(a => a.GroupName == IdentityPermissions.GroupName && a.Name == permissionName)) - { - continue; - } - - await repository.InsertAsync( - GetNewPermission( - IdentityPermissions.GroupName, - permissionName, - item, - permIpRestrictions.Name - )); - } - } - - //Security Logs - if (!permissions.Any(a => a.GroupName == IdentityPermissions.GroupName && a.Name == AppCodes.IdentityPermissions.Users.SecurityLogs)) - { - var permSecurityLogs = await repository.InsertAsync( - GetNewPermission( - IdentityPermissions.GroupName, - AppCodes.IdentityPermissions.Users.SecurityLogs, - AppCodes.IdentityPermissions.Users.SecurityLogs - )); - - foreach (var item in CUDE) - { - permissionName = AppCodes.IdentityPermissions.Users.SecurityLogs + "." + item; - - if (permissions.Any(a => a.GroupName == IdentityPermissions.GroupName && a.Name == permissionName)) - { - continue; - } - - await repository.InsertAsync( - GetNewPermission( - IdentityPermissions.GroupName, - permissionName, - item, - permSecurityLogs.Name - )); - } - } - - #endregion - - #region Platform - await repositoryGroup.InsertAsync(new PermissionGroupDefinitionRecord - { - Name = SeedConsts.Platform, - DisplayName = SeedConsts.Platform - }); - #endregion - - #region Settings - var groupName = AppCodes.Setting; - - if (!await repositoryGroup.AnyAsync(a => a.Name == groupName)) - { - var group = await repositoryGroup.InsertAsync( - new PermissionGroupDefinitionRecord( - guidGenerator.Create(), - AppCodes.Setting, - AppCodes.Setting)); - } - - if (await repositoryGroup.AnyAsync(a => a.Name == AppCodes.Setting)) - return; - - await repository.InsertAsync(GetNewPermission(groupName, AppCodes.Setting, AppCodes.Setting)); - - #region Site_Management - var permSiteManagement = await repository.InsertAsync(GetNewPermission(groupName, AbpSettings.SiteManagement.GroupName, AbpSettings.SiteManagement.GroupName)); - - //General - await repository.InsertAsync(GetNewPermission(groupName, AbpSettings.SiteManagement.General.Default, AbpSettings.SiteManagement.General.Default, permSiteManagement.Name, true, MultiTenancySides.Host)); - - //Theme - await repository.InsertAsync(GetNewPermission(groupName, AbpSettings.SiteManagement.Theme.Default, AbpSettings.SiteManagement.Theme.Default, permSiteManagement.Name)); - - //Localization - var permLocalization = await repository.InsertAsync(GetNewPermission(groupName, AbpSettings.AbpLocalization.GroupName, AbpSettings.AbpLocalization.GroupName, permSiteManagement.Name, true, MultiTenancySides.Host)); - #endregion - - #region Sender - var permSender = await repository.InsertAsync(GetNewPermission(groupName, AbpSettings.Sender.GroupName, AbpSettings.Sender.GroupName)); - - //Sms - var permSms = await repository.InsertAsync(GetNewPermission(groupName, AbpSettings.Sender.Sms.Default, AbpSettings.Sender.Sms.Default, permSender.Name)); - - //Sms - Posta Güvercini - await repository.InsertAsync(GetNewPermission(groupName, AbpSettings.Sender.Sms.PostaGuvercini.Default, AbpSettings.Sender.Sms.PostaGuvercini.Default, permSms.Name)); - - //Rocket - await repository.InsertAsync(GetNewPermission(groupName, AbpSettings.Sender.Rocket.Default, AbpSettings.Sender.Rocket.Default, permSender.Name, true, MultiTenancySides.Host)); - - //WhatsApp - await repository.InsertAsync(GetNewPermission(groupName, AbpSettings.Sender.WhatsApp.Default, AbpSettings.Sender.WhatsApp.Default, permSender.Name)); - #endregion - - #region Mailing - var permMailing = await repository.InsertAsync(GetNewPermission(groupName, AbpSettings.Mailing.GroupName, AbpSettings.Mailing.GroupName)); - - //Default - await repository.InsertAsync(GetNewPermission(groupName, AbpSettings.Mailing.Default.GroupName, AbpSettings.Mailing.Default.GroupName, permMailing.Name)); - - //Smtp - await repository.InsertAsync(GetNewPermission(groupName, AbpSettings.Mailing.Smtp.GroupName, AbpSettings.Mailing.Smtp.GroupName, permMailing.Name)); - - //Aws - await repository.InsertAsync(GetNewPermission(groupName, AbpSettings.Mailing.AWS.GroupName, AbpSettings.Mailing.AWS.GroupName, permMailing.Name, true, MultiTenancySides.Host)); - #endregion - - #region Account_Management - var permAccountManagement = await repository.InsertAsync(GetNewPermission(groupName, AbpAccount.GroupName, AbpAccount.GroupName)); - - //General - await repository.InsertAsync(GetNewPermission(groupName, AbpAccount.General, AbpAccount.General, permAccountManagement.Name, true, MultiTenancySides.Host)); - - //Two Factor - await repository.InsertAsync(GetNewPermission(groupName, AbpAccount.TwoFactor, AbpAccount.TwoFactor, permAccountManagement.Name)); - - //Captcha - await repository.InsertAsync(GetNewPermission(groupName, AbpAccount.Captcha.Default, AbpAccount.Captcha.Default, permAccountManagement.Name, true, MultiTenancySides.Host)); - #endregion - - #region Identity_Management - var permIdentityManagement = await repository.InsertAsync(GetNewPermission(groupName, AbpIdentity.GroupName, AbpIdentity.GroupName)); - - //Profile - await repository.InsertAsync(GetNewPermission(groupName, AbpIdentity.Profile.Default, AbpIdentity.Profile.Default, permIdentityManagement.Name)); - - //Password - await repository.InsertAsync(GetNewPermission(groupName, AbpIdentity.Password.Default, AbpIdentity.Password.Default, permIdentityManagement.Name)); - - //Lockout - await repository.InsertAsync(GetNewPermission(groupName, AbpIdentity.Lockout.Default, AbpIdentity.Lockout.Default, permIdentityManagement.Name)); - - //SignIn - await repository.InsertAsync(GetNewPermission(groupName, AbpIdentity.SignIn.Default, AbpIdentity.SignIn.Default, permIdentityManagement.Name, true, MultiTenancySides.Host)); - - //User - await repository.InsertAsync(GetNewPermission(groupName, AbpIdentity.User.Default, AbpIdentity.User.Default, permIdentityManagement.Name, true, MultiTenancySides.Host)); - #endregion - - #endregion - - #region LanguageManagement - var permLanguageManagement = await repositoryGroup.InsertAsync(new PermissionGroupDefinitionRecord - { - Name = AppCodes.Languages.Default, - DisplayName = AppCodes.Languages.Default - }); - - var permLanguages = await repository.InsertAsync( - GetNewPermission( - AppCodes.Languages.Default, - AppCodes.Languages.Language, - AppCodes.Languages.Language, - null, - true, - MultiTenancySides.Host - )); - - foreach (var item in CUDE) - { - permissionName = AppCodes.Languages.Language + "." + item; - - await repository.InsertAsync( - GetNewPermission( - AppCodes.Languages.Default, - permissionName, - item, - permLanguages.Name, - true, - MultiTenancySides.Host - )); - } - - var permLanguageTexts = await repository.InsertAsync( - GetNewPermission( - AppCodes.Languages.Default, - AppCodes.Languages.LanguageText, - AppCodes.Languages.LanguageText, - null, - true, - MultiTenancySides.Host - )); - - foreach (var item in CUDE) - { - permissionName = AppCodes.Languages.LanguageText + "." + item; - - await repository.InsertAsync( - GetNewPermission( - AppCodes.Languages.Default, - permissionName, - item, - permLanguageTexts.Name, - true, - MultiTenancySides.Host - )); - } - #endregion - - #region MenuManagement - await repositoryGroup.InsertAsync(new PermissionGroupDefinitionRecord - { - Name = AppCodes.Menus, - DisplayName = AppCodes.Menus - }); - - var permMenuManagement = await repository.InsertAsync( - GetNewPermission( - AppCodes.Menus, - AppCodes.Menus, - AppCodes.Menus, - null, - true, - MultiTenancySides.Host - )); - - foreach (var item in CUDE) - { - permissionName = AppCodes.Menus + "." + item; - - await repository.InsertAsync( - GetNewPermission( - AppCodes.Menus, - permissionName, - item, - permMenuManagement.Name, - true, - MultiTenancySides.Host - )); - } - #endregion - - #region ListformManagement - var groupListformManagement = await repositoryGroup.InsertAsync(new PermissionGroupDefinitionRecord - { - Name = AppCodes.Listforms.Default, - DisplayName = AppCodes.Listforms.Default - }); - - await repository.InsertAsync( - GetNewPermission( - AppCodes.Listforms.Default, - AppCodes.Listforms.Wizard, - AppCodes.Listforms.Wizard, - null, - true, - MultiTenancySides.Host - )); - - var permDataSources = await repository.InsertAsync( - GetNewPermission( - AppCodes.Listforms.Default, - AppCodes.Listforms.DataSource, - AppCodes.Listforms.DataSource, - null, - true, - MultiTenancySides.Host - )); - - foreach (var item in CUDE) - { - permissionName = AppCodes.Listforms.DataSource + "." + item; - - await repository.InsertAsync( - GetNewPermission( - AppCodes.Listforms.DataSource, - permissionName, - item, - permDataSources.Name, - true, - MultiTenancySides.Host - )); - } - - var permListforms = await repository.InsertAsync( - GetNewPermission( - AppCodes.Listforms.Default, - AppCodes.Listforms.Listform, - AppCodes.Listforms.Listform, - null, - true, - MultiTenancySides.Host - )); - - foreach (var item in CUDE) - { - permissionName = AppCodes.Listforms.Listform + "." + item; - - await repository.InsertAsync( - GetNewPermission( - AppCodes.Listforms.Default, - permissionName, - item, - permListforms.Name, - true, - MultiTenancySides.Host - )); - } - - var permListformFields = await repository.InsertAsync( - GetNewPermission( - AppCodes.Listforms.Default, - AppCodes.Listforms.ListformField, - AppCodes.Listforms.ListformField, - null, - true, - MultiTenancySides.Host - )); - - foreach (var item in CUDE) - { - permissionName = AppCodes.Listforms.ListformField + "." + item; - - await repository.InsertAsync( - GetNewPermission( - AppCodes.Listforms.Default, - permissionName, - item, - permListformFields.Name, - true, - MultiTenancySides.Host - )); - } - - var chartManagement = await repository.InsertAsync( - GetNewPermission( - AppCodes.Listforms.Default, - AppCodes.Listforms.Chart, - AppCodes.Listforms.Chart, - null, - true, - MultiTenancySides.Host - )); - - foreach (var item in CUDE) - { - permissionName = AppCodes.Listforms.Chart + "." + item; - - await repository.InsertAsync( - GetNewPermission( - AppCodes.Listforms.Default, - permissionName, - item, - chartManagement.Name, - true, - MultiTenancySides.Host - )); - } - - #endregion - - #region SettingDefinitions - await repositoryGroup.InsertAsync(new PermissionGroupDefinitionRecord - { - Name = AppCodes.Settings.SettingDefinitions, - DisplayName = AppCodes.Settings.SettingDefinitions - }); - - var permSettingManagement = await repository.InsertAsync( - GetNewPermission( - AppCodes.Settings.SettingDefinitions, - AppCodes.Settings.SettingDefinitions, - AppCodes.Settings.SettingDefinitions, - null, - true, - MultiTenancySides.Host - )); - - foreach (var item in CUDE) - { - permissionName = AppCodes.Settings.SettingDefinitions + "." + item; - - await repository.InsertAsync( - GetNewPermission( - AppCodes.Settings.SettingDefinitions, - permissionName, - item, - permSettingManagement.Name, - true, - MultiTenancySides.Host - )); - } - #endregion - - #region BackgroundWorker - await repositoryGroup.InsertAsync(new PermissionGroupDefinitionRecord - { - Name = AppCodes.BackgroundWorkers, - DisplayName = AppCodes.BackgroundWorkers - }); - - var permBackgroundWorkers = await repository.InsertAsync( - GetNewPermission( - AppCodes.BackgroundWorkers, - AppCodes.BackgroundWorkers, - AppCodes.BackgroundWorkers, - null, - true, - MultiTenancySides.Host - )); - - foreach (var item in CUDE) - { - permissionName = AppCodes.BackgroundWorkers + "." + item; - - await repository.InsertAsync( - GetNewPermission( - AppCodes.BackgroundWorkers, - permissionName, - item, - permBackgroundWorkers.Name, - true, - MultiTenancySides.Host - )); - } - #endregion - - #region Notifications - var permNotificationManagement = await repositoryGroup.InsertAsync(new PermissionGroupDefinitionRecord - { - Name = AppCodes.Notifications.Default, - DisplayName = AppCodes.Notifications.Default - }); - - var permNotificationRules = await repository.InsertAsync( - GetNewPermission( - AppCodes.Notifications.Default, - AppCodes.Notifications.NotificationRules, - AppCodes.Notifications.NotificationRules, - null, - true, - MultiTenancySides.Host - )); - - foreach (var item in CUDE) - { - permissionName = AppCodes.Notifications.NotificationRules + "." + item; - - await repository.InsertAsync( - GetNewPermission( - AppCodes.Notifications.NotificationRules, - permissionName, - item, - permNotificationRules.Name, - true, - MultiTenancySides.Host - )); - } - - var permNotification = await repository.InsertAsync( - GetNewPermission( - AppCodes.Notifications.Default, - AppCodes.Notifications.Notification, - AppCodes.Notifications.Notification, - null, - true, - MultiTenancySides.Host - )); - - foreach (var item in CUDE) - { - permissionName = AppCodes.Notifications.Notification + "." + item; - - await repository.InsertAsync( - GetNewPermission( - AppCodes.Notifications.Notification, - permissionName, - item, - permNotification.Name, - true, - MultiTenancySides.Host - )); - } - #endregion - - #region Public Api - await repositoryGroup.InsertAsync(new PermissionGroupDefinitionRecord - { - Name = AppCodes.PublicApis, - DisplayName = AppCodes.PublicApis - }); - - var permPublicApis = await repository.InsertAsync( - GetNewPermission( - AppCodes.PublicApis, - AppCodes.PublicApis, - AppCodes.PublicApis, - null, - true, - MultiTenancySides.Host - )); - - foreach (var item in CUDE) - { - permissionName = AppCodes.PublicApis + "." + item; - - await repository.InsertAsync( - GetNewPermission( - AppCodes.PublicApis, - permissionName, - item, - permPublicApis.Name, - true, - MultiTenancySides.Host - )); - } - - //Get Api Permissions - await repository.InsertAsync( - GetNewPermission( - AppCodes.PublicApis, - AppCodes.PublicApis + ".Get", - "Get", - permPublicApis.Name, - true, - MultiTenancySides.Host - )); - - //Post Api Permissions - await repository.InsertAsync( - GetNewPermission( - AppCodes.PublicApis, - AppCodes.PublicApis + ".Post", - "Post", - permPublicApis.Name, - true, - MultiTenancySides.Host - )); - #endregion - - #region GlobalSearch - await repositoryGroup.InsertAsync(new PermissionGroupDefinitionRecord - { - Name = AppCodes.Settings.GlobalSearch, - DisplayName = AppCodes.Settings.GlobalSearch - }); - - var permGlobalSearch = await repository.InsertAsync( - GetNewPermission( - AppCodes.Settings.GlobalSearch, - AppCodes.Settings.GlobalSearch, - AppCodes.Settings.GlobalSearch, - null, - true, - MultiTenancySides.Host - )); - - foreach (var item in CUDE) - { - permissionName = AppCodes.Settings.GlobalSearch + "." + item; - - await repository.InsertAsync( - GetNewPermission( - AppCodes.Settings.GlobalSearch, - permissionName, - item, - permGlobalSearch.Name, - true, - MultiTenancySides.Host - )); - } - #endregion - - #region AuditLogs - await repositoryGroup.InsertAsync(new PermissionGroupDefinitionRecord - { - Name = AppCodes.AuditLogs, - DisplayName = AppCodes.AuditLogs - }); - - var permAuditLogs = await repository.InsertAsync( - GetNewPermission( - AppCodes.AuditLogs, - AppCodes.AuditLogs, - AppCodes.AuditLogs, - null, - true, - MultiTenancySides.Both - )); - - foreach (var item in CUDE) - { - permissionName = AppCodes.AuditLogs + "." + item; - - await repository.InsertAsync( - GetNewPermission( - AppCodes.AuditLogs, - permissionName, - item, - permAuditLogs.Name, - true, - MultiTenancySides.Both - )); - } - #endregion - - #region Branches - await repositoryGroup.InsertAsync(new PermissionGroupDefinitionRecord - { - Name = AppCodes.Branches, - DisplayName = AppCodes.Branches - }); - - var permBranches = await repository.InsertAsync( - GetNewPermission( - AppCodes.Branches, - AppCodes.Branches, - AppCodes.Branches, - null, - true, - MultiTenancySides.Host - )); - - foreach (var item in CUDE) - { - permissionName = AppCodes.Branches + "." + item; - - await repository.InsertAsync( - GetNewPermission( - AppCodes.Branches, - permissionName, - item, - permBranches.Name, - true, - MultiTenancySides.Host - )); - } - #endregion - } - - public static PermissionDefinitionRecord GetNewPermission( - string groupName, - string name, - string displayName, - string parentName = null, - bool isEnabled = true, - MultiTenancySides multiTenancySides = MultiTenancySides.Both) - { - return new PermissionDefinitionRecord(Guid.NewGuid(), - groupName, - name, - parentName, - displayName, - isEnabled, - multiTenancySides - ); - } -} \ No newline at end of file diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/PlatformDataSeeder.cs b/api/src/Kurs.Platform.DbMigrator/Seeds/PlatformDataSeeder.cs index e66259e9..266e3955 100644 --- a/api/src/Kurs.Platform.DbMigrator/Seeds/PlatformDataSeeder.cs +++ b/api/src/Kurs.Platform.DbMigrator/Seeds/PlatformDataSeeder.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Text.Json; using System.Threading.Tasks; using Kurs.Languages.Entities; +using Kurs.Notifications.Entities; using Kurs.Platform.Charts.Dto; using Kurs.Platform.Entities; using Kurs.Platform.Enums; @@ -15,6 +16,7 @@ using Microsoft.Extensions.Configuration; using Volo.Abp.Data; using Volo.Abp.DependencyInjection; using Volo.Abp.Domain.Repositories; +using Volo.Abp.PermissionManagement; using static Kurs.Settings.SettingsConsts; namespace Kurs.Platform.Data.Seeds; @@ -27,6 +29,12 @@ public class PlatformDataSeeder : IDataSeedContributor, ITransientDependency private readonly IRepository _dataSources; private readonly IRepository _settings; private readonly IRepository _charts; + private readonly IRepository _globalSearch; + private readonly IRepository _backgroundWorkerRepository; + private readonly IRepository _notificationRuleRepository; + private readonly IRepository _menuRepository; + private readonly IRepository _permissionGroupRepository; + private readonly IRepository _permissionRepository; public PlatformDataSeeder( IRepository languages, @@ -34,7 +42,13 @@ public class PlatformDataSeeder : IDataSeedContributor, ITransientDependency IRepository languagesText, IRepository dataSource, IRepository settings, - IRepository charts) + IRepository charts, + IRepository globalSearch, + IRepository backgroundWorkerRepository, + IRepository notificationRuleRepository, + IRepository menuRepository, + IRepository permissionGroupRepository, + IRepository permissionRepository) { _languages = languages; _languageKey = languageKey; @@ -42,6 +56,12 @@ public class PlatformDataSeeder : IDataSeedContributor, ITransientDependency _dataSources = dataSource; _settings = settings; _charts = charts; + _globalSearch = globalSearch; + _backgroundWorkerRepository = backgroundWorkerRepository; + _notificationRuleRepository = notificationRuleRepository; + _menuRepository = menuRepository; + _permissionGroupRepository = permissionGroupRepository; + _permissionRepository = permissionRepository; } private static IConfigurationRoot BuildConfiguration() @@ -202,5 +222,110 @@ public class PlatformDataSeeder : IDataSeedContributor, ITransientDependency }); } } + + foreach (var item in items.GlobalSearch) + { + if (!await _globalSearch.AnyAsync(x => x.System == item.System && x.Group == item.Group && x.Term == item.Term)) + { + await _globalSearch.InsertAsync(new GlobalSearch + { + System = item.System, + Group = item.Group, + Term = item.Term, + Weight = item.Weight, + Url = item.Url + }); + } + } + + foreach (var item in items.BackgroundWorkers) + { + if (!await _backgroundWorkerRepository.AnyAsync(x => x.Name == item.Name)) + { + await _backgroundWorkerRepository.InsertAsync(new BackgroundWorker + { + Name = item.Name, + Cron = item.Cron, + WorkerType = Enum.Parse(item.WorkerType), + IsActive = item.IsActive, + DataSourceCode = item.DataSourceCode + }); + } + } + + foreach (var item in items.NotificationRules) + { + var exists = await _notificationRuleRepository.AnyAsync(x => + x.NotificationType == item.NotificationType && + x.RecipientType == item.RecipientType && + x.RecipientId == item.RecipientId && + x.Channel == item.Channel); + + if (!exists) + { + await _notificationRuleRepository.InsertAsync(new NotificationRule + { + NotificationType = item.NotificationType, + RecipientType = item.RecipientType, + RecipientId = item.RecipientId, + Channel = item.Channel, + IsActive = item.IsActive, + IsFixed = item.IsFixed, + IsCustomized = item.IsCustomized + }); + } + } + + foreach (var item in items.Menus) + { + var exists = await _menuRepository.AnyAsync(x => x.Code == item.Code); + + if (!exists) + { + await _menuRepository.InsertAsync(new Menu + { + ParentCode = string.IsNullOrWhiteSpace(item.ParentCode) ? null : item.ParentCode, + Code = item.Code, + DisplayName = item.DisplayName, + Order = item.Order, + Url = item.Url, + Icon = item.Icon, + RequiredPermissionName = item.RequiredPermissionName, + IsDisabled = item.IsDisabled + }); + } + } + + foreach (var item in items.PermissionGroupDefinitionRecords) + { + var exists = await _permissionGroupRepository.AnyAsync(x => x.Name == item.Name); + + if (!exists) + { + await _permissionGroupRepository.InsertAsync(new PermissionGroupDefinitionRecord + { + Name = item.Name, + DisplayName = item.DisplayName + }); + } + } + + foreach (var item in items.PermissionDefinitionRecords) + { + var exists = await _permissionRepository.AnyAsync(x => x.Name == item.Name); + + if (!exists) + { + await _permissionRepository.InsertAsync(new PermissionDefinitionRecord + { + GroupName = item.GroupName, + Name = item.Name, + ParentName = string.IsNullOrWhiteSpace(item.ParentName) ? null : item.ParentName, + DisplayName = item.DisplayName, + IsEnabled = item.IsEnabled, + MultiTenancySide = item.MultiTenancySide + }); + } + } } } diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json b/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json index 61030f47..828e6534 100644 --- a/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json +++ b/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json @@ -839,7 +839,7 @@ "key": "Abp.Identity.UserCreating", "en": "User Creating", "tr": "Kullanıcı Oluşturuluyor..." - }, + }, { "resourceName": "Platform", "key": "Abp.Identity.OrganizationUnit.Delete", @@ -3420,7 +3420,6 @@ "en": "Child Field Name", "tr": "Child Field Name" }, - { "resourceName": "Platform", "key": "ListForms.ListFormEdit.EditingFormOrder", @@ -4599,7 +4598,10 @@ "descriptionKey": "Abp.Localization.DefaultLanguage.Description", "defaultValue": "en", "isVisibleToClients": false, - "providers": ["G", "D"], + "providers": [ + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "App.SiteManagement", @@ -4633,7 +4635,10 @@ "descriptionKey": "Abp.Localization.Timezone.Description", "defaultValue": "UTC", "isVisibleToClients": false, - "providers": ["G", "D"], + "providers": [ + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "App.SiteManagement", @@ -4789,7 +4794,11 @@ "descriptionKey": "App.SiteManagement.Theme.Style.Description", "defaultValue": "dx.light.compact", "isVisibleToClients": true, - "providers": ["U", "G", "D"], + "providers": [ + "U", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "App.SiteManagement", @@ -4837,7 +4846,10 @@ "descriptionKey": "App.SiteManagement.General.NewMemberNotificationEmails.Description", "defaultValue": "system@sozsoft.com", "isVisibleToClients": false, - "providers": ["G", "D"], + "providers": [ + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "App.SiteManagement", @@ -4853,7 +4865,10 @@ "descriptionKey": "App.SiteManagement.General.TimedLoginEmails.Description", "defaultValue": "system@sozsoft.com", "isVisibleToClients": false, - "providers": ["G", "D"], + "providers": [ + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "App.SiteManagement", @@ -4869,7 +4884,11 @@ "descriptionKey": "App.Sender.Sms.PostaGuvercini.Url.Description", "defaultValue": "https://www.postaguvercini.com/api_http", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "App.Sender", @@ -4885,7 +4904,11 @@ "descriptionKey": "App.Sender.Sms.PostaGuvercini.Username.Description", "defaultValue": "2AIlj4QlCrvlbDDBS/712A==", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": true, "mainGroupKey": "App.Sender", @@ -4901,7 +4924,11 @@ "descriptionKey": "App.Sender.Sms.PostaGuvercini.Password.Description", "defaultValue": "oTuwyZM9sxfJI+jDH5wJAw==", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": true, "mainGroupKey": "App.Sender", @@ -4917,7 +4944,11 @@ "descriptionKey": "App.Sender.WhatsApp.Url.Description", "defaultValue": "https://graph.facebook.com/v21.0", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "App.Sender", @@ -4933,7 +4964,11 @@ "descriptionKey": "App.Sender.WhatsApp.PhoneNumberId.Description", "defaultValue": "442035112335974", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "App.Sender", @@ -4949,7 +4984,11 @@ "descriptionKey": "App.Sender.WhatsApp.Token.Description", "defaultValue": "EAANoftqZAJ64BO5oPwXPqniUtNGF70u8TKvQVzGZBaYQh5UY8fYrgQkcXP9UbQUqT9PWRah1L7TzcBIiWQMacT8AkmZB33AP1begLoywIZCsQSdBSUz21GQaCowfVosYgBoXSyqH8irSBPQDLIjxxVxrC2n76SD9X6zPXeHgOqIPY92DqJXplstWrlhtZCAZDZD", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "App.Sender", @@ -4965,7 +5004,11 @@ "descriptionKey": "App.Sender.WhatsApp.TemplateName.Description", "defaultValue": "kurs_platform_notification", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "App.Sender", @@ -4981,7 +5024,10 @@ "descriptionKey": "App.Sender.Rocket.Url.Description", "defaultValue": "https://chat.sozsoft.com/api/v1", "isVisibleToClients": false, - "providers": ["G", "D"], + "providers": [ + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "App.Sender", @@ -4997,7 +5043,10 @@ "descriptionKey": "App.Sender.Rocket.UserId.Description", "defaultValue": "LfpzPjzag4QJXm84N", "isVisibleToClients": false, - "providers": ["G", "D"], + "providers": [ + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "App.Sender", @@ -5013,7 +5062,10 @@ "descriptionKey": "App.Sender.Rocket.Token.Description", "defaultValue": "jvqALawvXn0Q7c6FfHJV3h58DCHDfQLgFF5y7oIc7oc", "isVisibleToClients": false, - "providers": ["G", "D"], + "providers": [ + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "App.Sender", @@ -5029,7 +5081,11 @@ "descriptionKey": "Abp.Mailing.DefaultFromDisplayName.Description", "defaultValue": "Kurs", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Mailing", @@ -5045,7 +5101,11 @@ "descriptionKey": "Abp.Mailing.DefaultFromAddress.Description", "defaultValue": "system@sozsoft.com", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Mailing", @@ -5061,7 +5121,11 @@ "descriptionKey": "Abp.Mailing.Smtp.UserName.Description", "defaultValue": "system@sozsoft.com", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Mailing", @@ -5077,7 +5141,11 @@ "descriptionKey": "Abp.Mailing.Smtp.Password.Description", "defaultValue": "QT9L7BCl1CT/1Hq19HoSlQ==", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": true, "mainGroupKey": "Abp.Mailing", @@ -5093,7 +5161,11 @@ "descriptionKey": "Abp.Mailing.Smtp.Host.Description", "defaultValue": "127.0.0.1", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Mailing", @@ -5109,7 +5181,11 @@ "descriptionKey": "Abp.Mailing.Smtp.Port.Description", "defaultValue": "25", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Mailing", @@ -5125,7 +5201,11 @@ "descriptionKey": "Abp.Mailing.Smtp.Domain.Description", "defaultValue": "sozsoft.com", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Mailing", @@ -5141,7 +5221,11 @@ "descriptionKey": "Abp.Mailing.Smtp.EnableSsl.Description", "defaultValue": "True", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Mailing", @@ -5157,7 +5241,11 @@ "descriptionKey": "Abp.Mailing.AWS.Profile.Description", "defaultValue": "mail-sdk-user", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Mailing", @@ -5173,7 +5261,11 @@ "descriptionKey": "Abp.Mailing.AWS.Region.Description", "defaultValue": "eu-central-1", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Mailing", @@ -5189,7 +5281,11 @@ "descriptionKey": "Abp.Mailing.AWS.AccessKey.Description", "defaultValue": "aXW8L21rP6dPO6Txj76Be2FCpWRBa25EMrSAVL76", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Mailing", @@ -5205,7 +5301,11 @@ "descriptionKey": "Abp.Mailing.AWS.AccessKeyId.Description", "defaultValue": "AKIATULUYBLX4IY3S2P1", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Mailing", @@ -5221,7 +5321,10 @@ "descriptionKey": "Abp.Account.IsSelfRegistrationEnabled.Description", "defaultValue": "True", "isVisibleToClients": false, - "providers": ["G", "D"], + "providers": [ + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Account", @@ -5237,7 +5340,10 @@ "descriptionKey": "Abp.Account.EnableLocalLogin.Description", "defaultValue": "True", "isVisibleToClients": false, - "providers": ["G", "D"], + "providers": [ + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Account", @@ -5253,7 +5359,11 @@ "descriptionKey": "Abp.Account.TwoFactor.Enabled.Description", "defaultValue": "True", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Account", @@ -5269,7 +5379,10 @@ "descriptionKey": "Abp.Account.Captcha.MaxFailedAccessAttempts.Description", "defaultValue": "3", "isVisibleToClients": false, - "providers": ["G", "D"], + "providers": [ + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Account", @@ -5285,7 +5398,10 @@ "descriptionKey": "Abp.Account.Captcha.EndPoint.Description", "defaultValue": "https://challenges.cloudflare.com/turnstile/v0/siteverify", "isVisibleToClients": false, - "providers": ["G", "D"], + "providers": [ + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Account", @@ -5301,7 +5417,10 @@ "descriptionKey": "Abp.Account.Captcha.SiteKey.Description", "defaultValue": "0x4AAAAAAAGadwQME-GSYuJU", "isVisibleToClients": false, - "providers": ["G", "D"], + "providers": [ + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Account", @@ -5317,7 +5436,10 @@ "descriptionKey": "Abp.Account.Captcha.SecretKey.Description", "defaultValue": "0x4AAAAAAAGad_f_WP47IcNBs9FTu5DhNX8", "isVisibleToClients": false, - "providers": ["G", "D"], + "providers": [ + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Account", @@ -5333,7 +5455,11 @@ "descriptionKey": "Abp.Identity.Profile.General.RequireVerifiedAccount.Description", "defaultValue": "True", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Identity", @@ -5349,7 +5475,11 @@ "descriptionKey": "Abp.Identity.Profile.General.BlacklistedEmailProviders.Description", "defaultValue": "gmail.com\r\nyahoo.com\r\nhotmail.com", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Identity", @@ -5365,7 +5495,11 @@ "descriptionKey": "Abp.Identity.Password.ForceUsersToPeriodicallyChangePassword.Description", "defaultValue": "True", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Identity", @@ -5381,7 +5515,11 @@ "descriptionKey": "Abp.Identity.Password.PasswordChangePeriodDays.Description", "defaultValue": "0", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Identity", @@ -5397,7 +5535,11 @@ "descriptionKey": "Abp.Identity.Password.RequiredLength.Description", "defaultValue": "6", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Identity", @@ -5413,7 +5555,11 @@ "descriptionKey": "Abp.Identity.Password.RequiredUniqueChars.Description", "defaultValue": "1", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Identity", @@ -5429,7 +5575,11 @@ "descriptionKey": "Abp.Identity.Password.RequireNonAlphanumeric.Description", "defaultValue": "True", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Identity", @@ -5445,7 +5595,11 @@ "descriptionKey": "Abp.Identity.Password.RequireLowercase.Description", "defaultValue": "True", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Identity", @@ -5461,7 +5615,11 @@ "descriptionKey": "Abp.Identity.Password.RequireUppercase.Description", "defaultValue": "True", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Identity", @@ -5477,7 +5635,11 @@ "descriptionKey": "Abp.Identity.Password.RequireDigit.Description", "defaultValue": "True", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Identity", @@ -5493,7 +5655,11 @@ "descriptionKey": "Abp.Identity.Lockout.AllowedForNewUsers.Description", "defaultValue": "True", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Identity", @@ -5509,7 +5675,11 @@ "descriptionKey": "Abp.Identity.Lockout.LockoutDuration.Description", "defaultValue": "300", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Identity", @@ -5525,7 +5695,11 @@ "descriptionKey": "Abp.Identity.Lockout.MaxFailedAccessAttempts.Description", "defaultValue": "5", "isVisibleToClients": false, - "providers": ["T", "G", "D"], + "providers": [ + "T", + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Identity", @@ -5541,7 +5715,10 @@ "descriptionKey": "Abp.Identity.SignIn.RequireConfirmedEmail.Description", "defaultValue": "True", "isVisibleToClients": false, - "providers": ["G", "D"], + "providers": [ + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Identity", @@ -5557,7 +5734,10 @@ "descriptionKey": "Abp.Identity.SignIn.RequireConfirmedPhoneNumber.Description", "defaultValue": "False", "isVisibleToClients": false, - "providers": ["G", "D"], + "providers": [ + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Identity", @@ -5573,7 +5753,10 @@ "descriptionKey": "Abp.Identity.User.IsUserNameUpdateEnabled.Description", "defaultValue": "True", "isVisibleToClients": false, - "providers": ["G", "D"], + "providers": [ + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Identity", @@ -5589,7 +5772,10 @@ "descriptionKey": "Abp.Identity.User.IsEmailUpdateEnabled.Description", "defaultValue": "True", "isVisibleToClients": false, - "providers": ["G", "D"], + "providers": [ + "G", + "D" + ], "isInherited": false, "isEncrypted": false, "mainGroupKey": "Abp.Identity", @@ -5646,5 +5832,1610 @@ "d": "App.Listforms.Chart.Delete" } } + ], + "GlobalSearch": [ + { + "system": "Platform", + "group": "Setting Definitions", + "term": "Abp.Account.Captcha.EndPoint", + "weight": "0.2", + "url": "/list/List-0009" + }, + { + "system": "Platform", + "group": "Setting Definitions", + "term": "Abp.Account.IsSelfRegistrationEnabled", + "weight": "0.8", + "url": "/list/List-0009" + }, + { + "system": "Platform", + "group": "Setting Definitions", + "term": "Abp.Account.IsSelfRegistrationEnabled", + "weight": "0.7", + "url": "/list/List-0009" + } + ], + "BackgroundWorkers": [ + { + "name": "Notification Worker", + "cron": "5 * * * *", + "workerType": "NotificationWorker", + "isActive": true, + "dataSourceCode": "Default" + } + ], + "NotificationRules": [ + { + "notificationType": "YeniSiparis", + "recipientType": "Role", + "recipientId": "admin", + "channel": "UiActivity", + "isActive": true, + "isFixed": false, + "isCustomized": false + }, + { + "notificationType": "SiparisPasla", + "recipientType": "Role", + "recipientId": "admin", + "channel": "Desktop", + "isActive": true, + "isFixed": false, + "isCustomized": false + }, + { + "notificationType": "YeniKullanici", + "recipientType": "Role", + "recipientId": "admin", + "channel": "Rocket", + "isActive": true, + "isFixed": false, + "isCustomized": false + } + ], + "Menus": [ + { + "ParentCode": null, + "Code": "App.Platform", + "DisplayName": "App.Platform", + "Order": 100, + "Url": null, + "Icon": "FcTabletAndroid", + "RequiredPermissionName": null, + "IsDisabled": false + }, + { + "ParentCode": null, + "Code": "App.Home", + "DisplayName": "App.Home", + "Order": 200, + "Url": "/", + "Icon": "FcHome", + "RequiredPermissionName": null, + "IsDisabled": false + }, + { + "ParentCode": null, + "Code": "App.Saas", + "DisplayName": "App.Saas", + "Order": 300, + "Url": null, + "Icon": "FcPodiumWithAudience", + "RequiredPermissionName": null, + "IsDisabled": false + }, + { + "ParentCode": "App.Saas", + "Code": "AbpTenantManagement.Tenants", + "DisplayName": "AbpTenantManagement.Tenants", + "Order": 1, + "Url": "/list/List-0001", + "Icon": "FcDepartment", + "RequiredPermissionName": "AbpTenantManagement.Tenants", + "IsDisabled": false + }, + { + "ParentCode": "App.Saas", + "Code": "App.Branches", + "DisplayName": "App.Branches", + "Order": 2, + "Url": "/list/List-0022", + "Icon": "FcShop", + "RequiredPermissionName": "App.Branches", + "IsDisabled": false + }, + { + "ParentCode": "App.Saas", + "Code": "App.Settings", + "DisplayName": "App.Settings", + "Order": 3, + "Url": null, + "Icon": "FcCircuit", + "RequiredPermissionName": null, + "IsDisabled": false + }, + { + "ParentCode": "App.Settings", + "Code": "App.Settings.SettingDefinitions", + "DisplayName": "App.Settings.SettingDefinitions", + "Order": 1, + "Url": "/list/List-0009", + "Icon": "FcSupport", + "RequiredPermissionName": "App.Settings.SettingDefinitions", + "IsDisabled": false + }, + { + "ParentCode": "App.Settings", + "Code": "App.Settings.GlobalSearch", + "DisplayName": "App.Settings.GlobalSearch", + "Order": 2, + "Url": "/list/List-0018", + "Icon": "FcSearch", + "RequiredPermissionName": "App.Settings.GlobalSearch", + "IsDisabled": false + }, + { + "ParentCode": "App.Saas", + "Code": "App.Languages", + "DisplayName": "App.Languages", + "Order": 4, + "Url": null, + "Icon": "FcGlobe", + "RequiredPermissionName": null, + "IsDisabled": false + }, + { + "ParentCode": "App.Languages", + "Code": "App.Languages.Language", + "DisplayName": "App.Languages.Language", + "Order": 1, + "Url": "/list/List-0005", + "Icon": "FcGraduationCap", + "RequiredPermissionName": "App.Languages.Language", + "IsDisabled": false + }, + { + "ParentCode": "App.Languages", + "Code": "App.Languages.LanguageText", + "DisplayName": "App.Languages.LanguageText", + "Order": 2, + "Url": "/list/List-0006", + "Icon": "FcMindMap", + "RequiredPermissionName": "App.Languages.LanguageText", + "IsDisabled": false + }, + { + "ParentCode": "App.Saas", + "Code": "App.Menus", + "DisplayName": "App.Menus", + "Order": 5, + "Url": "/list/List-0007", + "Icon": "FcMenu", + "RequiredPermissionName": "App.Menus", + "IsDisabled": false + }, + { + "ParentCode": null, + "Code": "App.Administration", + "DisplayName": "App.Administration", + "Order": 400, + "Url": null, + "Icon": "FcOrganization", + "RequiredPermissionName": null, + "IsDisabled": false + }, + { + "ParentCode": "App.Administration", + "Code": "App.Setting", + "DisplayName": "App.Setting", + "Order": 1, + "Url": "/settings", + "Icon": "FcSettings", + "RequiredPermissionName": "App.Setting", + "IsDisabled": false + }, + { + "ParentCode": "App.Administration", + "Code": "Abp.Identity", + "DisplayName": "Abp.Identity", + "Order": 2, + "Url": null, + "Icon": "FcConferenceCall", + "RequiredPermissionName": null, + "IsDisabled": false + }, + { + "ParentCode": "Abp.Identity", + "Code": "Abp.Identity.PermissionGroups", + "DisplayName": "Abp.Identity.PermissionGroups", + "Order": 1, + "Url": "/list/List-0017", + "Icon": "FcEngineering", + "RequiredPermissionName": "Abp.Identity.PermissionGroups", + "IsDisabled": false + }, + { + "ParentCode": "Abp.Identity", + "Code": "Abp.Identity.Permissions", + "DisplayName": "Abp.Identity.Permissions", + "Order": 2, + "Url": "/list/List-0002", + "Icon": "FcSupport", + "RequiredPermissionName": "Abp.Identity.Permissions", + "IsDisabled": false + }, + { + "ParentCode": "Abp.Identity", + "Code": "AbpIdentity.Roles", + "DisplayName": "AbpIdentity.Roles", + "Order": 3, + "Url": "/list/List-0003", + "Icon": "FcFlowChart", + "RequiredPermissionName": "AbpIdentity.Roles", + "IsDisabled": false + }, + { + "ParentCode": "Abp.Identity", + "Code": "AbpIdentity.Users", + "DisplayName": "AbpIdentity.Users", + "Order": 4, + "Url": "/list/List-0004", + "Icon": "FcBusinessman", + "RequiredPermissionName": "AbpIdentity.Users", + "IsDisabled": false + }, + { + "ParentCode": "Abp.Identity", + "Code": "Abp.Identity.OrganizationUnits", + "DisplayName": "Abp.Identity.OrganizationUnits", + "Order": 5, + "Url": "/admin/ous", + "Icon": "FcOrganization", + "RequiredPermissionName": "Abp.Identity.OrganizationUnits", + "IsDisabled": false + }, + { + "ParentCode": "Abp.Identity", + "Code": "App.IpRestrictions", + "DisplayName": "App.IpRestrictions", + "Order": 6, + "Url": "/list/List-0015", + "Icon": "FcNfcSign", + "RequiredPermissionName": "App.IpRestrictions", + "IsDisabled": false + }, + { + "ParentCode": "AbpIdentity.Users", + "Code": "AbpIdentity.Users.SecurityLog", + "DisplayName": "AbpIdentity.Users.SecurityLog", + "Order": 7, + "Url": "/list/List-0019", + "Icon": "FcPrivacy", + "RequiredPermissionName": "AbpIdentity.Users.SecurityLog", + "IsDisabled": false + }, + { + "ParentCode": "App.Saas", + "Code": "App.Listforms", + "DisplayName": "App.Listforms", + "Order": 6, + "Url": null, + "Icon": "FcList", + "RequiredPermissionName": null, + "IsDisabled": false + }, + { + "ParentCode": "App.Listforms", + "Code": "App.Listforms.DataSource", + "DisplayName": "App.Listforms.DataSource", + "Order": 1, + "Url": "/list/List-0011", + "Icon": "FcAcceptDatabase", + "RequiredPermissionName": "App.Listforms.DataSource", + "IsDisabled": false + }, + { + "ParentCode": "App.Listforms", + "Code": "App.Listforms.Wizard", + "DisplayName": "App.Listforms.Wizard", + "Order": 2, + "Url": "/admin/listform/wizard", + "Icon": "FcFlashAuto", + "RequiredPermissionName": "App.Listforms.Wizard", + "IsDisabled": false + }, + { + "ParentCode": "App.Listforms", + "Code": "App.Listforms.Listform", + "DisplayName": "App.Listforms.Listform", + "Order": 3, + "Url": "/list/List-0008", + "Icon": "FcDataSheet", + "RequiredPermissionName": "App.Listforms.Listform", + "IsDisabled": false + }, + { + "ParentCode": "App.Listforms", + "Code": "App.Listforms.Chart", + "DisplayName": "App.Listforms.Chart", + "Order": 4, + "Url": "/list/List-0010", + "Icon": "FcTodoList", + "RequiredPermissionName": "App.Listforms.Chart", + "IsDisabled": false + }, + { + "ParentCode": "App.Saas", + "Code": "App.Notifications", + "DisplayName": "App.Notifications", + "Order": 7, + "Url": null, + "Icon": "FcWorkflow", + "RequiredPermissionName": null, + "IsDisabled": false + }, + { + "ParentCode": "App.Notifications", + "Code": "App.Notifications.NotificationRules", + "DisplayName": "App.Notifications.NotificationRules", + "Order": 1, + "Url": "/list/List-0013", + "Icon": "FcLibrary", + "RequiredPermissionName": "App.Notifications.NotificationRules", + "IsDisabled": false + }, + { + "ParentCode": "App.Notifications", + "Code": "App.Notifications.Notification", + "DisplayName": "App.Notifications.Notification", + "Order": 2, + "Url": "/list/List-0014", + "Icon": "FcBrokenLink", + "RequiredPermissionName": "App.Notifications.Notification", + "IsDisabled": false + }, + { + "ParentCode": "App.Saas", + "Code": "App.BackgroundWorkers", + "DisplayName": "App.BackgroundWorkers", + "Order": 8, + "Url": "/list/List-0012", + "Icon": "FcWorkflow", + "RequiredPermissionName": "App.BackgroundWorkers", + "IsDisabled": false + }, + { + "ParentCode": "App.Saas", + "Code": "App.PublicApis", + "DisplayName": "App.PublicApis", + "Order": 9, + "Url": "/list/List-0016", + "Icon": "FcMindMap", + "RequiredPermissionName": "App.PublicApis", + "IsDisabled": false + }, + { + "ParentCode": "App.Administration", + "Code": "App.AuditLogs", + "DisplayName": "App.AuditLogs", + "Order": 3, + "Url": "/list/List-0020", + "Icon": "FcMultipleInputs", + "RequiredPermissionName": "App.AuditLogs", + "IsDisabled": false + } + ], + "PermissionGroupDefinitionRecords": [ + { + "Name": "App.Platform", + "DisplayName": "App.Platform" + }, + { + "Name": "AbpTenantManagement", + "DisplayName": "AbpTenantManagement" + }, + { + "Name": "App.Branches", + "DisplayName": "App.Branches" + }, + { + "Name": "App.Settings.SettingDefinitions", + "DisplayName": "App.Settings.SettingDefinitions" + }, + { + "Name": "App.Settings.GlobalSearch", + "DisplayName": "App.Settings.GlobalSearch" + }, + { + "Name": "App.Languages", + "DisplayName": "App.Languages" + }, + { + "Name": "App.Menus", + "DisplayName": "App.Menus" + }, + { + "Name": "App.Listforms", + "DisplayName": "App.Listforms" + }, + { + "Name": "App.Notifications", + "DisplayName": "App.Notifications" + }, + { + "Name": "App.BackgroundWorkers", + "DisplayName": "App.BackgroundWorkers" + }, + { + "Name": "App.PublicApis", + "DisplayName": "App.PublicApis" + }, + { + "Name": "App.Setting", + "DisplayName": "App.Setting" + }, + { + "Name": "AbpIdentity", + "DisplayName": "AbpIdentity" + }, + { + "Name": "App.AuditLogs", + "DisplayName": "App.AuditLogs" + } + ], + "PermissionDefinitionRecords": [ + { + "GroupName": "AbpIdentity", + "Name": "Abp.Identity.OrganizationUnits", + "ParentName": null, + "DisplayName": "Abp.Identity.OrganizationUnits", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "Abp.Identity.PermissionGroups", + "ParentName": null, + "DisplayName": "Abp.Identity.PermissionGroups", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "AbpIdentity", + "Name": "Abp.Identity.Permissions", + "ParentName": null, + "DisplayName": "Abp.Identity.Permissions", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Roles", + "ParentName": null, + "DisplayName": "AbpIdentity.Roles", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.UserLookup", + "ParentName": null, + "DisplayName": "AbpIdentity.UserLookup", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Users", + "ParentName": null, + "DisplayName": "AbpIdentity.Users", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Users.SecurityLog", + "ParentName": null, + "DisplayName": "AbpIdentity.Users.SecurityLog", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "App.IpRestrictions", + "ParentName": null, + "DisplayName": "App.IpRestrictions", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpTenantManagement", + "Name": "AbpTenantManagement.Tenants", + "ParentName": null, + "DisplayName": "AbpTenantManagement.Tenants", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.AuditLogs", + "Name": "App.AuditLogs", + "ParentName": null, + "DisplayName": "App.AuditLogs", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.BackgroundWorkers", + "Name": "App.BackgroundWorkers", + "ParentName": null, + "DisplayName": "App.BackgroundWorkers", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Branches", + "Name": "App.Branches", + "ParentName": null, + "DisplayName": "App.Branches", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Languages", + "Name": "App.Languages.Language", + "ParentName": null, + "DisplayName": "App.Languages.Language", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Languages", + "Name": "App.Languages.LanguageText", + "ParentName": null, + "DisplayName": "App.Languages.LanguageText", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms", + "Name": "App.Listforms.Chart", + "ParentName": null, + "DisplayName": "App.Listforms.Chart", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms", + "Name": "App.Listforms.DataSource", + "ParentName": null, + "DisplayName": "App.Listforms.DataSource", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms", + "Name": "App.Listforms.Listform", + "ParentName": null, + "DisplayName": "App.Listforms.Listform", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms", + "Name": "App.Listforms.ListformField", + "ParentName": null, + "DisplayName": "App.Listforms.ListformField", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms", + "Name": "App.Listforms.Wizard", + "ParentName": null, + "DisplayName": "App.Listforms.Wizard", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Menus", + "Name": "App.Menus", + "ParentName": null, + "DisplayName": "App.Menus", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Notifications", + "Name": "App.Notifications.Notification", + "ParentName": null, + "DisplayName": "App.Notifications.Notification", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Notifications", + "Name": "App.Notifications.NotificationRules", + "ParentName": null, + "DisplayName": "App.Notifications.NotificationRules", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.PublicApis", + "Name": "App.PublicApis", + "ParentName": null, + "DisplayName": "App.PublicApis", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Setting", + "Name": "Abp.Account", + "ParentName": null, + "DisplayName": "Abp.Account", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.Setting", + "Name": "Abp.Identity", + "ParentName": null, + "DisplayName": "Abp.Identity", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.Setting", + "Name": "Abp.Mailing", + "ParentName": null, + "DisplayName": "Abp.Mailing", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.Setting", + "Name": "App.Sender", + "ParentName": null, + "DisplayName": "App.Sender", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.Setting", + "Name": "App.Setting", + "ParentName": null, + "DisplayName": "App.Setting", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.Setting", + "Name": "App.SiteManagement", + "ParentName": null, + "DisplayName": "App.SiteManagement", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.Settings.GlobalSearch", + "Name": "App.Settings.GlobalSearch", + "ParentName": null, + "DisplayName": "App.Settings.GlobalSearch", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Settings.SettingDefinitions", + "Name": "App.Settings.SettingDefinitions", + "ParentName": null, + "DisplayName": "App.Settings.SettingDefinitions", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Setting", + "Name": "Abp.Account.Captcha", + "ParentName": "Abp.Account", + "DisplayName": "Abp.Account.Captcha", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Setting", + "Name": "Abp.Account.General", + "ParentName": "Abp.Account", + "DisplayName": "Abp.Account.General", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Setting", + "Name": "Abp.Account.TwoFactor", + "ParentName": "Abp.Account", + "DisplayName": "Abp.Account.TwoFactor", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.Setting", + "Name": "Abp.Identity.Lockout", + "ParentName": "Abp.Identity", + "DisplayName": "Abp.Identity.Lockout", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.Setting", + "Name": "Abp.Identity.Password", + "ParentName": "Abp.Identity", + "DisplayName": "Abp.Identity.Password", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.Setting", + "Name": "Abp.Identity.Profile", + "ParentName": "Abp.Identity", + "DisplayName": "Abp.Identity.Profile", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.Setting", + "Name": "Abp.Identity.SignIn", + "ParentName": "Abp.Identity", + "DisplayName": "Abp.Identity.SignIn", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Setting", + "Name": "Abp.Identity.User", + "ParentName": "Abp.Identity", + "DisplayName": "Abp.Identity.User", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "AbpIdentity", + "Name": "Abp.Identity.PermissionGroups.Create", + "ParentName": "Abp.Identity.PermissionGroups", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "AbpIdentity", + "Name": "Abp.Identity.PermissionGroups.Delete", + "ParentName": "Abp.Identity.PermissionGroups", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "AbpIdentity", + "Name": "Abp.Identity.PermissionGroups.Export", + "ParentName": "Abp.Identity.PermissionGroups", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "AbpIdentity", + "Name": "Abp.Identity.PermissionGroups.Update", + "ParentName": "Abp.Identity.PermissionGroups", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "AbpIdentity", + "Name": "Abp.Identity.Permissions.Create", + "ParentName": "Abp.Identity.Permissions", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "AbpIdentity", + "Name": "Abp.Identity.Permissions.Delete", + "ParentName": "Abp.Identity.Permissions", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "AbpIdentity", + "Name": "Abp.Identity.Permissions.Export", + "ParentName": "Abp.Identity.Permissions", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "AbpIdentity", + "Name": "Abp.Identity.Permissions.Update", + "ParentName": "Abp.Identity.Permissions", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Setting", + "Name": "Abp.Mailing.AWS", + "ParentName": "Abp.Mailing", + "DisplayName": "Abp.Mailing.AWS", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Setting", + "Name": "Abp.Mailing.Default", + "ParentName": "Abp.Mailing", + "DisplayName": "Abp.Mailing.Default", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.Setting", + "Name": "Abp.Mailing.Smtp", + "ParentName": "Abp.Mailing", + "DisplayName": "Abp.Mailing.Smtp", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Roles.Create", + "ParentName": "AbpIdentity.Roles", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Roles.Delete", + "ParentName": "AbpIdentity.Roles", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Roles.Export", + "ParentName": "AbpIdentity.Roles", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Roles.ManagePermissions", + "ParentName": "AbpIdentity.Roles", + "DisplayName": "AbpIdentity.Roles.ManagePermissions", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Roles.Update", + "ParentName": "AbpIdentity.Roles", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Users.Create", + "ParentName": "AbpIdentity.Users", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Users.Delete", + "ParentName": "AbpIdentity.Users", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Users.Export", + "ParentName": "AbpIdentity.Users", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Users.ManagePermissions", + "ParentName": "AbpIdentity.Users", + "DisplayName": "AbpIdentity.Users.ManagePermissions", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Users.Update", + "ParentName": "AbpIdentity.Users", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Users.SecurityLog.Create", + "ParentName": "AbpIdentity.Users.SecurityLog", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Users.SecurityLog.Delete", + "ParentName": "AbpIdentity.Users.SecurityLog", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Users.SecurityLog.Export", + "ParentName": "AbpIdentity.Users.SecurityLog", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Users.SecurityLog.Update", + "ParentName": "AbpIdentity.Users.SecurityLog", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Users.Update.ManageRoles", + "ParentName": "AbpIdentity.Users.Update", + "DisplayName": "AbpIdentity.Users.Update.ManageRoles", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpTenantManagement", + "Name": "AbpTenantManagement.Tenants.Create", + "ParentName": "AbpTenantManagement.Tenants", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "AbpTenantManagement", + "Name": "AbpTenantManagement.Tenants.Delete", + "ParentName": "AbpTenantManagement.Tenants", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "AbpTenantManagement", + "Name": "AbpTenantManagement.Tenants.Export", + "ParentName": "AbpTenantManagement.Tenants", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "AbpTenantManagement", + "Name": "AbpTenantManagement.Tenants.ManageConnectionStrings", + "ParentName": "AbpTenantManagement.Tenants", + "DisplayName": "AbpTenantManagement.Tenants.ManageConnectionStrings", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "AbpTenantManagement", + "Name": "AbpTenantManagement.Tenants.ManageFeatures", + "ParentName": "AbpTenantManagement.Tenants", + "DisplayName": "AbpTenantManagement.Tenants.ManageFeatures", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "AbpTenantManagement", + "Name": "AbpTenantManagement.Tenants.Update", + "ParentName": "AbpTenantManagement.Tenants", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.AuditLogs", + "Name": "App.AuditLogs.Create", + "ParentName": "App.AuditLogs", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.AuditLogs", + "Name": "App.AuditLogs.Delete", + "ParentName": "App.AuditLogs", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.AuditLogs", + "Name": "App.AuditLogs.Export", + "ParentName": "App.AuditLogs", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.AuditLogs", + "Name": "App.AuditLogs.Update", + "ParentName": "App.AuditLogs", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.BackgroundWorkers", + "Name": "App.BackgroundWorkers.Create", + "ParentName": "App.BackgroundWorkers", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.BackgroundWorkers", + "Name": "App.BackgroundWorkers.Delete", + "ParentName": "App.BackgroundWorkers", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.BackgroundWorkers", + "Name": "App.BackgroundWorkers.Export", + "ParentName": "App.BackgroundWorkers", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.BackgroundWorkers", + "Name": "App.BackgroundWorkers.Update", + "ParentName": "App.BackgroundWorkers", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Branches", + "Name": "App.Branches.Create", + "ParentName": "App.Branches", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Branches", + "Name": "App.Branches.Delete", + "ParentName": "App.Branches", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Branches", + "Name": "App.Branches.Export", + "ParentName": "App.Branches", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Branches", + "Name": "App.Branches.Update", + "ParentName": "App.Branches", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "AbpIdentity", + "Name": "App.IpRestrictions.Create", + "ParentName": "App.IpRestrictions", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "App.IpRestrictions.Delete", + "ParentName": "App.IpRestrictions", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "App.IpRestrictions.Export", + "ParentName": "App.IpRestrictions", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "App.IpRestrictions.Update", + "ParentName": "App.IpRestrictions", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.Languages", + "Name": "App.Languages.Language.Create", + "ParentName": "App.Languages.Language", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Languages", + "Name": "App.Languages.Language.Delete", + "ParentName": "App.Languages.Language", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Languages", + "Name": "App.Languages.Language.Export", + "ParentName": "App.Languages.Language", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Languages", + "Name": "App.Languages.Language.Update", + "ParentName": "App.Languages.Language", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Languages", + "Name": "App.Languages.LanguageText.Create", + "ParentName": "App.Languages.LanguageText", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Languages", + "Name": "App.Languages.LanguageText.Delete", + "ParentName": "App.Languages.LanguageText", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Languages", + "Name": "App.Languages.LanguageText.Export", + "ParentName": "App.Languages.LanguageText", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Languages", + "Name": "App.Languages.LanguageText.Update", + "ParentName": "App.Languages.LanguageText", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms", + "Name": "App.Listforms.Chart.Create", + "ParentName": "App.Listforms.Chart", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms", + "Name": "App.Listforms.Chart.Delete", + "ParentName": "App.Listforms.Chart", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms", + "Name": "App.Listforms.Chart.Export", + "ParentName": "App.Listforms.Chart", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms", + "Name": "App.Listforms.Chart.Update", + "ParentName": "App.Listforms.Chart", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms.DataSource", + "Name": "App.Listforms.DataSource.Create", + "ParentName": "App.Listforms.DataSource", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms.DataSource", + "Name": "App.Listforms.DataSource.Delete", + "ParentName": "App.Listforms.DataSource", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms.DataSource", + "Name": "App.Listforms.DataSource.Export", + "ParentName": "App.Listforms.DataSource", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms.DataSource", + "Name": "App.Listforms.DataSource.Update", + "ParentName": "App.Listforms.DataSource", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms", + "Name": "App.Listforms.Listform.Create", + "ParentName": "App.Listforms.Listform", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms", + "Name": "App.Listforms.Listform.Delete", + "ParentName": "App.Listforms.Listform", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms", + "Name": "App.Listforms.Listform.Export", + "ParentName": "App.Listforms.Listform", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms", + "Name": "App.Listforms.Listform.Update", + "ParentName": "App.Listforms.Listform", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms", + "Name": "App.Listforms.ListformField.Create", + "ParentName": "App.Listforms.ListformField", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms", + "Name": "App.Listforms.ListformField.Delete", + "ParentName": "App.Listforms.ListformField", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms", + "Name": "App.Listforms.ListformField.Export", + "ParentName": "App.Listforms.ListformField", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Listforms", + "Name": "App.Listforms.ListformField.Update", + "ParentName": "App.Listforms.ListformField", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Menus", + "Name": "App.Menus.Create", + "ParentName": "App.Menus", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Menus", + "Name": "App.Menus.Delete", + "ParentName": "App.Menus", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Menus", + "Name": "App.Menus.Export", + "ParentName": "App.Menus", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Menus", + "Name": "App.Menus.Update", + "ParentName": "App.Menus", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Notifications.Notification", + "Name": "App.Notifications.Notification.Create", + "ParentName": "App.Notifications.Notification", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Notifications.Notification", + "Name": "App.Notifications.Notification.Delete", + "ParentName": "App.Notifications.Notification", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Notifications.Notification", + "Name": "App.Notifications.Notification.Export", + "ParentName": "App.Notifications.Notification", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Notifications.Notification", + "Name": "App.Notifications.Notification.Update", + "ParentName": "App.Notifications.Notification", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Notifications.NotificationRules", + "Name": "App.Notifications.NotificationRules.Create", + "ParentName": "App.Notifications.NotificationRules", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Notifications.NotificationRules", + "Name": "App.Notifications.NotificationRules.Delete", + "ParentName": "App.Notifications.NotificationRules", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Notifications.NotificationRules", + "Name": "App.Notifications.NotificationRules.Export", + "ParentName": "App.Notifications.NotificationRules", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Notifications.NotificationRules", + "Name": "App.Notifications.NotificationRules.Update", + "ParentName": "App.Notifications.NotificationRules", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.PublicApis", + "Name": "App.PublicApis.Create", + "ParentName": "App.PublicApis", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.PublicApis", + "Name": "App.PublicApis.Delete", + "ParentName": "App.PublicApis", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.PublicApis", + "Name": "App.PublicApis.Export", + "ParentName": "App.PublicApis", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.PublicApis", + "Name": "App.PublicApis.Get", + "ParentName": "App.PublicApis", + "DisplayName": "Get", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.PublicApis", + "Name": "App.PublicApis.Post", + "ParentName": "App.PublicApis", + "DisplayName": "Post", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.PublicApis", + "Name": "App.PublicApis.Update", + "ParentName": "App.PublicApis", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Setting", + "Name": "App.Sender.Rocket", + "ParentName": "App.Sender", + "DisplayName": "App.Sender.Rocket", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Setting", + "Name": "App.Sender.Sms", + "ParentName": "App.Sender", + "DisplayName": "App.Sender.Sms", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.Setting", + "Name": "App.Sender.WhatsApp", + "ParentName": "App.Sender", + "DisplayName": "App.Sender.WhatsApp", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.Setting", + "Name": "App.Sender.Sms.PostaGuvercini", + "ParentName": "App.Sender.Sms", + "DisplayName": "App.Sender.Sms.PostaGuvercini", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "App.Settings.GlobalSearch", + "Name": "App.Settings.GlobalSearch.Create", + "ParentName": "App.Settings.GlobalSearch", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Settings.GlobalSearch", + "Name": "App.Settings.GlobalSearch.Delete", + "ParentName": "App.Settings.GlobalSearch", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Settings.GlobalSearch", + "Name": "App.Settings.GlobalSearch.Export", + "ParentName": "App.Settings.GlobalSearch", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Settings.GlobalSearch", + "Name": "App.Settings.GlobalSearch.Update", + "ParentName": "App.Settings.GlobalSearch", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Settings.SettingDefinitions", + "Name": "App.Settings.SettingDefinitions.Create", + "ParentName": "App.Settings.SettingDefinitions", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Settings.SettingDefinitions", + "Name": "App.Settings.SettingDefinitions.Delete", + "ParentName": "App.Settings.SettingDefinitions", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Settings.SettingDefinitions", + "Name": "App.Settings.SettingDefinitions.Export", + "ParentName": "App.Settings.SettingDefinitions", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Settings.SettingDefinitions", + "Name": "App.Settings.SettingDefinitions.Update", + "ParentName": "App.Settings.SettingDefinitions", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Setting", + "Name": "Abp.Localization", + "ParentName": "App.SiteManagement", + "DisplayName": "Abp.Localization", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Setting", + "Name": "App.SiteManagement.General", + "ParentName": "App.SiteManagement", + "DisplayName": "App.SiteManagement.General", + "IsEnabled": true, + "MultiTenancySide": 2 + }, + { + "GroupName": "App.Setting", + "Name": "App.SiteManagement.Theme", + "ParentName": "App.SiteManagement", + "DisplayName": "App.SiteManagement.Theme", + "IsEnabled": true, + "MultiTenancySide": 3 + } ] -} +} \ No newline at end of file diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/SeederDto.cs b/api/src/Kurs.Platform.DbMigrator/Seeds/SeederDto.cs index 1b01992a..96bc1dc4 100644 --- a/api/src/Kurs.Platform.DbMigrator/Seeds/SeederDto.cs +++ b/api/src/Kurs.Platform.DbMigrator/Seeds/SeederDto.cs @@ -12,10 +12,16 @@ public class SeederDto { public List Languages { get; set; } public List LanguageTexts { get; set; } - public List Permissions { get; set; } public List DataSources { get; set; } public List Settings { get; set; } public List Charts { get; set; } + public List GlobalSearch { get; set; } + public List BackgroundWorkers { get; set; } + public List NotificationRules { get; set; } + public List Menus { get; set; } + public List PermissionGroupDefinitionRecords { get; set; } + public List PermissionDefinitionRecords { get; set; } + } public class ChartsSeedDto @@ -42,4 +48,59 @@ public class LanguageTextsSeedDto public string Tr { get; set; } } +public class GlobalSearchDto +{ + public string System { get; set; } + public string Group { get; set; } + public string Term { get; set; } + public string Weight { get; set; } + public string Url { get; set; } +} +public class BackgroundWorkerDto +{ + public string Name { get; set; } + public string Cron { get; set; } + public string WorkerType { get; set; } + public bool IsActive { get; set; } + public string DataSourceCode { get; set; } +} + +public class NotificationRuleDto +{ + public string NotificationType { get; set; } + public string RecipientType { get; set; } + public string RecipientId { get; set; } + public string Channel { get; set; } + public bool IsActive { get; set; } + public bool IsFixed { get; set; } + public bool IsCustomized { get; set; } +} + +public class MenuDto +{ + public string ParentCode { get; set; } + public string Code { get; set; } + public string DisplayName { get; set; } + public int Order { get; set; } + public string Url { get; set; } + public string Icon { get; set; } + public string RequiredPermissionName { get; set; } + public bool IsDisabled { get; set; } +} + +public class PermissionGroupDefinitionRecordDto +{ + public string Name { get; set; } + public string DisplayName { get; set; } +} + +public class PermissionDefinitionRecordDto +{ + public string GroupName { get; set; } + public string Name { get; set; } + public string ParentName { get; set; } + public string DisplayName { get; set; } + public bool IsEnabled { get; set; } + public int MultiTenancySide { get; set; } +} \ No newline at end of file From b36267c2c482915691794bb4a70cb98028e17391 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96ZT=C3=9CRK?= <76204082+iamsedatozturk@users.noreply.github.com> Date: Tue, 17 Jun 2025 16:12:36 +0300 Subject: [PATCH 2/2] =?UTF-8?q?claimTypes=20d=C3=BCzenlemeleri?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Identity/Dto/AssignedClaimViewModel.cs | 14 + .../Identity/Dto/UserClaimModel.cs | 12 + .../Identity/Dto/UserInfoViewModel.cs | 2 + .../Identity/PlatformIdentityAppService.cs | 49 +- .../Seeds/FormSeeder.cs | 347 --------- .../Seeds/ListFormsSeeder.cs | 676 ++++++++++++++++++ .../Seeds/SeederData.json | 92 ++- .../PlatformConsts.cs | 3 +- .../Kurs.Platform.Domain/Data/SeedConsts.cs | 1 + .../PlatformUserClaimsPrincipalFactory.cs | 5 - ui/src/proxy/admin/identity.service.ts | 14 + ui/src/proxy/admin/models.ts | 19 +- ui/src/views/admin/identity/Users/Details.tsx | 393 ++++++++-- 13 files changed, 1217 insertions(+), 410 deletions(-) create mode 100644 api/src/Kurs.Platform.Application.Contracts/Identity/Dto/AssignedClaimViewModel.cs create mode 100644 api/src/Kurs.Platform.Application.Contracts/Identity/Dto/UserClaimModel.cs delete mode 100644 api/src/Kurs.Platform.DbMigrator/Seeds/FormSeeder.cs diff --git a/api/src/Kurs.Platform.Application.Contracts/Identity/Dto/AssignedClaimViewModel.cs b/api/src/Kurs.Platform.Application.Contracts/Identity/Dto/AssignedClaimViewModel.cs new file mode 100644 index 00000000..79ef561e --- /dev/null +++ b/api/src/Kurs.Platform.Application.Contracts/Identity/Dto/AssignedClaimViewModel.cs @@ -0,0 +1,14 @@ +using System; + +namespace Kurs.Platform.Identity.Dto; + +public class AssignedClaimViewModel +{ + public Guid Id { get; set; } + + public string ClaimType { get; set; } + + public string ClaimValue { get; set; } + + public bool IsAssigned { get; set; } +} diff --git a/api/src/Kurs.Platform.Application.Contracts/Identity/Dto/UserClaimModel.cs b/api/src/Kurs.Platform.Application.Contracts/Identity/Dto/UserClaimModel.cs new file mode 100644 index 00000000..eb90b02b --- /dev/null +++ b/api/src/Kurs.Platform.Application.Contracts/Identity/Dto/UserClaimModel.cs @@ -0,0 +1,12 @@ +using System; +using Volo.Abp.ObjectExtending; + +namespace Kurs.Platform.Identity.Dto; + +public class UserClaimModel : ExtensibleObject +{ + public Guid Id { get; set; } + public Guid UserId { get; set; } + public string ClaimType { get; set; } + public string ClaimValue { get; set; } +} diff --git a/api/src/Kurs.Platform.Application.Contracts/Identity/Dto/UserInfoViewModel.cs b/api/src/Kurs.Platform.Application.Contracts/Identity/Dto/UserInfoViewModel.cs index d4e9ffc4..009f4836 100644 --- a/api/src/Kurs.Platform.Application.Contracts/Identity/Dto/UserInfoViewModel.cs +++ b/api/src/Kurs.Platform.Application.Contracts/Identity/Dto/UserInfoViewModel.cs @@ -37,6 +37,8 @@ public class UserInfoViewModel: ExtensibleObject public AssignedRoleViewModel[] Roles { get; set; } public AssignedBranchViewModel[] Branches { get; set; } + + public AssignedClaimViewModel[] Claims { get; set; } public bool LockUser { get; set; } diff --git a/api/src/Kurs.Platform.Application/Identity/PlatformIdentityAppService.cs b/api/src/Kurs.Platform.Application/Identity/PlatformIdentityAppService.cs index b5e1e298..f6d92b98 100644 --- a/api/src/Kurs.Platform.Application/Identity/PlatformIdentityAppService.cs +++ b/api/src/Kurs.Platform.Application/Identity/PlatformIdentityAppService.cs @@ -1,13 +1,16 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Security.Claims; using System.Threading.Tasks; using Kurs.Platform.Entities; using Kurs.Platform.Extensions; using Kurs.Platform.Identity.Dto; using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; using Volo.Abp.Application.Services; using Volo.Abp.Domain.Repositories; +using Volo.Abp.Guids; using Volo.Abp.Identity; using Volo.Abp.PermissionManagement; @@ -21,6 +24,8 @@ public class PlatformIdentityAppService : ApplicationService public IRepository permissionRepository { get; } public IRepository branchRepository { get; } public IRepository branchUsersRepository { get; } + public IRepository claimTypesRepository { get; } + public IGuidGenerator guidGenerator { get; } public IdentityUserManager UserManager { get; set; } public PlatformIdentityAppService( @@ -28,7 +33,9 @@ public class PlatformIdentityAppService : ApplicationService IIdentityUserRepository identityUserRepository, IRepository permissionRepository, IRepository branchRepository, - IRepository branchUsersRepository + IRepository branchUsersRepository, + IRepository claimTypesRepository, + IGuidGenerator guidGenerator ) { this.IdentityUserAppService = identityUserAppService; @@ -36,6 +43,8 @@ public class PlatformIdentityAppService : ApplicationService this.permissionRepository = permissionRepository; this.branchRepository = branchRepository; this.branchUsersRepository = branchUsersRepository; + this.claimTypesRepository = claimTypesRepository; + this.guidGenerator = guidGenerator; } public async Task GetByIdAsync(Guid UserId) @@ -52,11 +61,12 @@ public class PlatformIdentityAppService : ApplicationService } } - var query = await branchUsersRepository.GetQueryableAsync(); - var branchUsers = query.Where(a => a.UserId == UserId).Select(r => r.BranchId).ToList(); var currentTenantId = CurrentTenant.Id.HasValue ? CurrentTenant.Id : null; - var branchList = await branchRepository.GetListAsync(a=> a.TenantId == currentTenantId); + //Branch + var queryBranch = await branchUsersRepository.GetQueryableAsync(); + var branchUsers = queryBranch.Where(a => a.UserId == UserId).Select(r => r.BranchId).ToList(); + var branchList = await branchRepository.GetListAsync(a => a.TenantId == currentTenantId); var branches = branchList.Select(branch => new AssignedBranchViewModel { Id = branch.Id, @@ -65,6 +75,21 @@ public class PlatformIdentityAppService : ApplicationService }) .ToArray(); + //Claim + var claimUsers = user.Claims; + var claimList = await claimTypesRepository.GetListAsync(); + var claims = claimList.Select(claim => + { + var userClaim = claimUsers.FirstOrDefault(c => c.ClaimType == claim.Name); + return new AssignedClaimViewModel + { + Id = userClaim?.Id ?? Guid.Empty, + ClaimType = claim.Name, + ClaimValue = userClaim?.ClaimValue, + IsAssigned = userClaim != null + }; + }).ToArray(); + return new UserInfoViewModel() { Id = user.Id, @@ -73,6 +98,7 @@ public class PlatformIdentityAppService : ApplicationService Surname = user.Surname, Roles = roles, Branches = branches, + Claims = claims, Email = user.Email, PhoneNumber = user.PhoneNumber, IsActive = user.IsActive, @@ -177,4 +203,19 @@ public class PlatformIdentityAppService : ApplicationService return [.. list.OrderBy(p => p.Name)]; } + + public async Task CreateClaimUserAsync(UserClaimModel input) + { + var user = await identityUserRepository.GetAsync(input.UserId); + + user.AddClaim(guidGenerator, new Claim(input.ClaimType, input.ClaimValue)); + } + + public async Task DeleteClaimUser(Guid id, Guid userId) + { + var user = await identityUserRepository.GetAsync(userId); + var claim = user.Claims.FirstOrDefault(a => a.Id == id); + + user.Claims.Remove(claim); + } } \ No newline at end of file diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/FormSeeder.cs b/api/src/Kurs.Platform.DbMigrator/Seeds/FormSeeder.cs deleted file mode 100644 index 98a7653d..00000000 --- a/api/src/Kurs.Platform.DbMigrator/Seeds/FormSeeder.cs +++ /dev/null @@ -1,347 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Data; -using System.Text.Json; -using System.Threading.Tasks; -using Kurs.Languages.Languages; -using Kurs.Platform.Entities; -using Kurs.Platform.Enums; -using Kurs.Platform.ListForms; -using Kurs.Platform.Queries; -using Volo.Abp.Data; -using Volo.Abp.DependencyInjection; -using Volo.Abp.Domain.Repositories; -using static Kurs.Platform.PlatformConsts; -using AppCodes = Kurs.Platform.Data.Seeds.SeedConsts.AppCodes; - -namespace Kurs.Platform.Data.Seeds; - -public class FormSeeder : IDataSeedContributor, ITransientDependency -{ - private readonly IRepository _listFormRepository; - private readonly IRepository _listFormFieldRepository; - - public FormSeeder( - IRepository listFormRepository, - IRepository listFormFieldRepository) - { - _listFormRepository = listFormRepository; - _listFormFieldRepository = listFormFieldRepository; - } - - public async Task SeedAsync(DataSeedContext context) - { - if (await _listFormRepository.AnyAsync(a => a.ListFormCode == ListFormCodes.Forms.FormLanguage)) - { - return; - } - - #region Languages - var formLanguage = await _listFormRepository.InsertAsync( - new ListForm() - { - ListFormType = ListFormTypeEnum.Form, - IsSubForm = false, - SubFormsJson = JsonSerializer.Serialize(new List() { - new { - TabTitle = "Language Texts", - TabType = ListFormTabTypeEnum.List, - Code = ListFormCodes.LanguageText, - Relation = new List() { - new { - ParentFieldName = "CultureName", - ChildFieldName = "CultureName" - } - } - }, - new { - TabTitle = "Form Sütun Sayıları", - TabType = ListFormTabTypeEnum.Chart, - Code = ChartCodes.Chart2, - Relation = new List() { - new { - ParentFieldName = "ListFormCode", - ChildFieldName = "ListFormCode" - } - } - } - }), - CultureName = LanguageCodes.En, - ListFormCode = ListFormCodes.Forms.FormLanguage, - Name = AppCodes.Languages.Language, - Title = AppCodes.Languages.Language, - DataSourceCode = SeedConsts.DataSources.DefaultCode, - IsTenant = false, - IsOrganizationUnit = false, - Description = AppCodes.Languages.Language, - SelectCommandType = SelectCommandTypeEnum.Table, - SelectCommand = DbTablePrefix + "Language", - KeyFieldName = "Id", - KeyFieldDbSourceType = DbType.Guid, - DefaultFilter = "\"IsDeleted\" = 'false'", - SortMode = GridOptions.SortModeSingle, - PermissionJson = JsonSerializer.Serialize(new PermissionCrudDto - { - C = AppCodes.Languages.Language + ".Create", - R = AppCodes.Languages.Language, - U = AppCodes.Languages.Language + ".Update", - D = AppCodes.Languages.Language + ".Delete", - E = AppCodes.Languages.Language + ".Export" - }), - DeleteCommand = $"UPDATE \"{DbTablePrefix}Language\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\"=@Id", - DeleteFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] { - new() { - FieldName = "DeleterId", - FieldDbType = DbType.Guid, - Value = "@USERID", - CustomValueType = FieldCustomValueTypeEnum.CustomKey }, - new() { - FieldName = "Id", - FieldDbType = DbType.Guid, - Value = "@ID", - CustomValueType = FieldCustomValueTypeEnum.CustomKey } - }), - EditingOptionJson = JsonSerializer.Serialize(new GridEditingDto - { - AllowDeleting = true, - AllowAdding = true, - AllowUpdating = true, - ConfirmDelete = true, - }), - EditingFormJson = JsonSerializer.Serialize(new List() { - new() { - Order = 1, - ColCount = 1, - ColSpan = 2, - ItemType = "group", - Items = [ - new() { Order = 1, DataField = "CultureName", ColSpan = 2, IsRequired = true, EditorType2=EditorTypes.dxTextBox }, - new() { Order = 2, DataField = "UiCultureName", ColSpan = 2, IsRequired = true, EditorType2=EditorTypes.dxTextBox }, - new() { Order = 3, DataField = "DisplayName", ColSpan = 2, IsRequired = true, EditorType2=EditorTypes.dxTextBox }, - new() { Order = 4, DataField = "IsEnabled", ColSpan = 2, IsRequired = false, EditorType2=EditorTypes.dxCheckBox }, - new() { Order = 5, DataField = "MultipleCultures", ColSpan = 2, IsRequired = false, EditorType2=EditorTypes.dxTagBox }, - ] - } - }), - InsertFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] { - new() { - FieldName = "CreationTime", - FieldDbType = DbType.DateTime, - Value = "@NOW", - CustomValueType = FieldCustomValueTypeEnum.CustomKey }, - new() { - FieldName = "CreatorId", - FieldDbType = DbType.Guid, - Value = "@USERID", - CustomValueType = FieldCustomValueTypeEnum.CustomKey }, - new() { - FieldName = "IsDeleted", - FieldDbType = DbType.Boolean, - Value = "false", - CustomValueType = FieldCustomValueTypeEnum.Value } - }), - FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] { - new() { - FieldName = "IsEnabled", - FieldDbType = DbType.Boolean, - Value = "true", - CustomValueType = FieldCustomValueTypeEnum.Value } - }) - } - ); - await _listFormFieldRepository.InsertManyAsync([ - new() { - ListFormCode = formLanguage.ListFormCode, - RoleId = null, - UserId = null, - CultureName = LanguageCodes.En, - SourceDbType = DbType.Guid, - FieldName = "Id", - Width = 100, - ListOrderNo = 0, - Visible = false, - IsActive = true, - IsDeleted = false, - SortIndex = 0, - PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto - { - C = AppCodes.Languages.Language + ".Create", - R = AppCodes.Languages.Language, - U = AppCodes.Languages.Language + ".Update", - E = true, - Deny = false - }), - }, - new() { - ListFormCode = formLanguage.ListFormCode, - RoleId = null, - UserId = null, - CultureName = LanguageCodes.En, - SourceDbType = DbType.String, - FieldName = "CultureName", - Width = 150, - ListOrderNo = 1, - Visible = true, - IsActive = true, - IsDeleted = false, - SortIndex = 1, - SortDirection = GridColumnOptions.SortOrderAsc, - AllowSearch = true, - ValidationRuleJson = JsonSerializer.Serialize(new ValidationRuleDto[] { - new() { Type = Enum.GetName(UiColumnValidationRuleTypeEnum.required)} - }), - PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto - { - C = AppCodes.Languages.Language + ".Create", - R = AppCodes.Languages.Language, - U = AppCodes.Languages.Language + ".Update", - E = true, - Deny = false - }), - }, - new() - { - ListFormCode = formLanguage.ListFormCode, - RoleId = null, - UserId = null, - CultureName = LanguageCodes.En, - SourceDbType = DbType.String, - FieldName = "UiCultureName", - Width = 150, - ListOrderNo = 2, - Visible = true, - IsActive = true, - IsDeleted = false, - AllowSearch = true, - ValidationRuleJson = JsonSerializer.Serialize(new ValidationRuleDto[] { - new() { Type = Enum.GetName(UiColumnValidationRuleTypeEnum.required)} - }), - PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto - { - C = AppCodes.Languages.Language + ".Create", - R = AppCodes.Languages.Language, - U = AppCodes.Languages.Language + ".Update", - E = true, - Deny = false - }), - }, - new() - { - ListFormCode = formLanguage.ListFormCode, - RoleId = null, - UserId = null, - CultureName = LanguageCodes.En, - SourceDbType = DbType.String, - FieldName = "DisplayName", - Width = 150, - ListOrderNo = 3, - Visible = true, - IsActive = true, - IsDeleted = false, - AllowSearch = true, - ValidationRuleJson = JsonSerializer.Serialize(new ValidationRuleDto[] { - new() { Type = Enum.GetName(UiColumnValidationRuleTypeEnum.required)} - }), - PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto - { - C = AppCodes.Languages.Language + ".Create", - R = AppCodes.Languages.Language, - U = AppCodes.Languages.Language + ".Update", - E = true, - Deny = false - }), - }, - new() - { - ListFormCode = formLanguage.ListFormCode, - RoleId = null, - UserId = null, - CultureName = LanguageCodes.En, - SourceDbType = DbType.Boolean, - FieldName = "IsEnabled", - Width = 125, - ListOrderNo = 4, - Visible = true, - IsActive = true, - IsDeleted = false, - PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto - { - C = AppCodes.Languages.Language + ".Create", - R = AppCodes.Languages.Language, - U = AppCodes.Languages.Language + ".Update", - E = true, - Deny = false - }), - }, - new() - { - ListFormCode = formLanguage.ListFormCode, - RoleId = null, - UserId = null, - CultureName = LanguageCodes.En, - SourceDbType = DbType.DateTime, - FieldName = "CreationTime", - Width = 125, - ListOrderNo = 5, - Visible = true, - IsActive = true, - IsDeleted = false, - ValidationRuleJson = JsonSerializer.Serialize(new ValidationRuleDto[] { - new() { Type = Enum.GetName(UiColumnValidationRuleTypeEnum.required)} - }), - PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto - { - C = AppCodes.Languages.Language + ".Create", - R = AppCodes.Languages.Language, - U = AppCodes.Languages.Language + ".Update", - E = true, - Deny = false - }), - }, - new() - { - ListFormCode = formLanguage.ListFormCode, - RoleId = null, - UserId = null, - CultureName = LanguageCodes.En, - SourceDbType = DbType.String, - FieldName = "MultipleCultures", - Width = 250, - ListOrderNo = 6, - Visible = true, - IsActive = true, - IsDeleted = false, - AllowSearch = true, - ColumnFilterJson = JsonSerializer.Serialize(new ColumnFilterDto - { - AllowFiltering = true - }), - LookupJson = JsonSerializer.Serialize(new LookupDto - { - DataSourceType = UiLookupDataSourceTypeEnum.Query, - DisplayExpr = "Name", - ValueExpr = "Key", - LookupQuery = $"SELECT \"CultureName\" AS \"Key\", \"DisplayName\" AS \"Name\", \"CreationTime\" FROM \"{DbTablePrefix}Language\" WHERE \"IsEnabled\" = 'true' and \"IsDeleted\" = 'false'" - - //TODO: Tasi grid editingform - // EditorTemplateTagBox = new EditorTagBoxDto() - // { - // ApplyValueMode = "useButtons", - // SearchEnabled = true, - // MaxDisplayedTags = 3 - // } - }), - PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto - { - C = AppCodes.Languages.Language + ".Create", - R = AppCodes.Languages.Language, - U = AppCodes.Languages.Language + ".Update", - E = true, - Deny = false - }), - }, - ]); - - #endregion - } -} diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/ListFormsSeeder.cs b/api/src/Kurs.Platform.DbMigrator/Seeds/ListFormsSeeder.cs index 4d3305a1..c557fa24 100644 --- a/api/src/Kurs.Platform.DbMigrator/Seeds/ListFormsSeeder.cs +++ b/api/src/Kurs.Platform.DbMigrator/Seeds/ListFormsSeeder.cs @@ -65,6 +65,316 @@ public class ListFormsSeeder : IDataSeedContributor, ITransientDependency roleId = userRole.Result.Name.ToString(); } + #region Form + #region Languages + var formLanguage = await _listFormRepository.InsertAsync( + new ListForm() + { + ListFormType = ListFormTypeEnum.Form, + IsSubForm = false, + SubFormsJson = JsonSerializer.Serialize(new List() { + new { + TabTitle = "Language Texts", + TabType = ListFormTabTypeEnum.List, + Code = ListFormCodes.LanguageText, + Relation = new List() { + new { + ParentFieldName = "CultureName", + ChildFieldName = "CultureName" + } + } + }, + new { + TabTitle = "Form Sütun Sayıları", + TabType = ListFormTabTypeEnum.Chart, + Code = ChartCodes.Chart2, + Relation = new List() { + new { + ParentFieldName = "ListFormCode", + ChildFieldName = "ListFormCode" + } + } + } + }), + CultureName = LanguageCodes.En, + ListFormCode = ListFormCodes.Forms.FormLanguage, + Name = AppCodes.Languages.Language, + Title = AppCodes.Languages.Language, + DataSourceCode = SeedConsts.DataSources.DefaultCode, + IsTenant = false, + IsOrganizationUnit = false, + Description = AppCodes.Languages.Language, + SelectCommandType = SelectCommandTypeEnum.Table, + SelectCommand = DbTablePrefix + "Language", + KeyFieldName = "Id", + KeyFieldDbSourceType = DbType.Guid, + DefaultFilter = "\"IsDeleted\" = 'false'", + SortMode = GridOptions.SortModeSingle, + PermissionJson = JsonSerializer.Serialize(new PermissionCrudDto + { + C = AppCodes.Languages.Language + ".Create", + R = AppCodes.Languages.Language, + U = AppCodes.Languages.Language + ".Update", + D = AppCodes.Languages.Language + ".Delete", + E = AppCodes.Languages.Language + ".Export" + }), + DeleteCommand = $"UPDATE \"{DbTablePrefix}Language\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\"=@Id", + DeleteFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] { + new() { + FieldName = "DeleterId", + FieldDbType = DbType.Guid, + Value = "@USERID", + CustomValueType = FieldCustomValueTypeEnum.CustomKey }, + new() { + FieldName = "Id", + FieldDbType = DbType.Guid, + Value = "@ID", + CustomValueType = FieldCustomValueTypeEnum.CustomKey } + }), + EditingOptionJson = JsonSerializer.Serialize(new GridEditingDto + { + AllowDeleting = true, + AllowAdding = true, + AllowUpdating = true, + ConfirmDelete = true, + }), + EditingFormJson = JsonSerializer.Serialize(new List() { + new() { + Order = 1, + ColCount = 1, + ColSpan = 2, + ItemType = "group", + Items = [ + new() { Order = 1, DataField = "CultureName", ColSpan = 2, IsRequired = true, EditorType2=EditorTypes.dxTextBox }, + new() { Order = 2, DataField = "UiCultureName", ColSpan = 2, IsRequired = true, EditorType2=EditorTypes.dxTextBox }, + new() { Order = 3, DataField = "DisplayName", ColSpan = 2, IsRequired = true, EditorType2=EditorTypes.dxTextBox }, + new() { Order = 4, DataField = "IsEnabled", ColSpan = 2, IsRequired = false, EditorType2=EditorTypes.dxCheckBox }, + new() { Order = 5, DataField = "MultipleCultures", ColSpan = 2, IsRequired = false, EditorType2=EditorTypes.dxTagBox }, + ] + } + }), + InsertFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] { + new() { + FieldName = "CreationTime", + FieldDbType = DbType.DateTime, + Value = "@NOW", + CustomValueType = FieldCustomValueTypeEnum.CustomKey }, + new() { + FieldName = "CreatorId", + FieldDbType = DbType.Guid, + Value = "@USERID", + CustomValueType = FieldCustomValueTypeEnum.CustomKey }, + new() { + FieldName = "IsDeleted", + FieldDbType = DbType.Boolean, + Value = "false", + CustomValueType = FieldCustomValueTypeEnum.Value } + }), + FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] { + new() { + FieldName = "IsEnabled", + FieldDbType = DbType.Boolean, + Value = "true", + CustomValueType = FieldCustomValueTypeEnum.Value } + }) + } + ); + await _listFormFieldRepository.InsertManyAsync([ + new() { + ListFormCode = formLanguage.ListFormCode, + RoleId = null, + UserId = null, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Guid, + FieldName = "Id", + Width = 100, + ListOrderNo = 0, + Visible = false, + IsActive = true, + IsDeleted = false, + SortIndex = 0, + PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto + { + C = AppCodes.Languages.Language + ".Create", + R = AppCodes.Languages.Language, + U = AppCodes.Languages.Language + ".Update", + E = true, + Deny = false + }), + }, + new() { + ListFormCode = formLanguage.ListFormCode, + RoleId = null, + UserId = null, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "CultureName", + Width = 150, + ListOrderNo = 1, + Visible = true, + IsActive = true, + IsDeleted = false, + SortIndex = 1, + SortDirection = GridColumnOptions.SortOrderAsc, + AllowSearch = true, + ValidationRuleJson = JsonSerializer.Serialize(new ValidationRuleDto[] { + new() { Type = Enum.GetName(UiColumnValidationRuleTypeEnum.required)} + }), + PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto + { + C = AppCodes.Languages.Language + ".Create", + R = AppCodes.Languages.Language, + U = AppCodes.Languages.Language + ".Update", + E = true, + Deny = false + }), + }, + new() + { + ListFormCode = formLanguage.ListFormCode, + RoleId = null, + UserId = null, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "UiCultureName", + Width = 150, + ListOrderNo = 2, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ValidationRuleJson = JsonSerializer.Serialize(new ValidationRuleDto[] { + new() { Type = Enum.GetName(UiColumnValidationRuleTypeEnum.required)} + }), + PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto + { + C = AppCodes.Languages.Language + ".Create", + R = AppCodes.Languages.Language, + U = AppCodes.Languages.Language + ".Update", + E = true, + Deny = false + }), + }, + new() + { + ListFormCode = formLanguage.ListFormCode, + RoleId = null, + UserId = null, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "DisplayName", + Width = 150, + ListOrderNo = 3, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ValidationRuleJson = JsonSerializer.Serialize(new ValidationRuleDto[] { + new() { Type = Enum.GetName(UiColumnValidationRuleTypeEnum.required)} + }), + PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto + { + C = AppCodes.Languages.Language + ".Create", + R = AppCodes.Languages.Language, + U = AppCodes.Languages.Language + ".Update", + E = true, + Deny = false + }), + }, + new() + { + ListFormCode = formLanguage.ListFormCode, + RoleId = null, + UserId = null, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Boolean, + FieldName = "IsEnabled", + Width = 125, + ListOrderNo = 4, + Visible = true, + IsActive = true, + IsDeleted = false, + PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto + { + C = AppCodes.Languages.Language + ".Create", + R = AppCodes.Languages.Language, + U = AppCodes.Languages.Language + ".Update", + E = true, + Deny = false + }), + }, + new() + { + ListFormCode = formLanguage.ListFormCode, + RoleId = null, + UserId = null, + CultureName = LanguageCodes.En, + SourceDbType = DbType.DateTime, + FieldName = "CreationTime", + Width = 125, + ListOrderNo = 5, + Visible = true, + IsActive = true, + IsDeleted = false, + ValidationRuleJson = JsonSerializer.Serialize(new ValidationRuleDto[] { + new() { Type = Enum.GetName(UiColumnValidationRuleTypeEnum.required)} + }), + PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto + { + C = AppCodes.Languages.Language + ".Create", + R = AppCodes.Languages.Language, + U = AppCodes.Languages.Language + ".Update", + E = true, + Deny = false + }), + }, + new() + { + ListFormCode = formLanguage.ListFormCode, + RoleId = null, + UserId = null, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "MultipleCultures", + Width = 250, + ListOrderNo = 6, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + ColumnFilterJson = JsonSerializer.Serialize(new ColumnFilterDto + { + AllowFiltering = true + }), + LookupJson = JsonSerializer.Serialize(new LookupDto + { + DataSourceType = UiLookupDataSourceTypeEnum.Query, + DisplayExpr = "Name", + ValueExpr = "Key", + LookupQuery = $"SELECT \"CultureName\" AS \"Key\", \"DisplayName\" AS \"Name\", \"CreationTime\" FROM \"{DbTablePrefix}Language\" WHERE \"IsEnabled\" = 'true' and \"IsDeleted\" = 'false'" + + //TODO: Tasi grid editingform + // EditorTemplateTagBox = new EditorTagBoxDto() + // { + // ApplyValueMode = "useButtons", + // SearchEnabled = true, + // MaxDisplayedTags = 3 + // } + }), + PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto + { + C = AppCodes.Languages.Language + ".Create", + R = AppCodes.Languages.Language, + U = AppCodes.Languages.Language + ".Update", + E = true, + Deny = false + }), + }, + ]); + #endregion + #endregion + + #region List #region Tenants var listFormTenants = await _listFormRepository.InsertAsync( new ListForm() @@ -8204,5 +8514,371 @@ public class ListFormsSeeder : IDataSeedContributor, ITransientDependency ]); #endregion #endregion + + #region ClaimTypes + var listFormClaimTypes = await _listFormRepository.InsertAsync( + new ListForm() + { + CultureName = LanguageCodes.En, + ListFormCode = ListFormCodes.ClaimTypes, + Name = AppCodes.IdentityPermissions.Users.ClaimTypes, + Title = AppCodes.IdentityPermissions.Users.ClaimTypes, + DataSourceCode = SeedConsts.DataSources.DefaultCode, + IsTenant = false, + IsOrganizationUnit = false, + Description = AppCodes.IdentityPermissions.Users.ClaimTypes, + SelectCommandType = SelectCommandTypeEnum.Table, + SelectCommand = "AbpClaimTypes", + KeyFieldName = "Id", + KeyFieldDbSourceType = DbType.Guid, + SortMode = GridOptions.SortModeSingle, + FilterRowJson = JsonSerializer.Serialize(new GridFilterRowDto + { + Visible = true + }), + HeaderFilterJson = JsonSerializer.Serialize(new + { + Visible = true + }), + SearchPanelJson = JsonSerializer.Serialize(new + { + Visible = true + }), + GroupPanelJson = JsonSerializer.Serialize(new + { + Visible = true + }), + SelectionJson = JsonSerializer.Serialize(new SelectionDto + { + Mode = GridOptions.SelectionModeSingle, + AllowSelectAll = false + }), + ColumnOptionJson = JsonSerializer.Serialize(new + { + ColumnFixingEnabled = true, + ColumnChooserEnabled = true + }), + PermissionJson = JsonSerializer.Serialize(new PermissionCrudDto + { + C = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Create", + R = AppCodes.IdentityPermissions.Users.ClaimTypes, + U = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Update", + D = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Delete", + E = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Export" + }), + PagerOptionJson = JsonSerializer.Serialize(new GridPagerOptionDto + { + Visible = true, + AllowedPageSizes = "10,20,50,100", + ShowPageSizeSelector = true, + ShowNavigationButtons = true, + ShowInfo = false, + InfoText = "Page {0} of {1} ({2} items)", + DisplayMode = GridColumnOptions.PagerDisplayModeAdaptive, + ScrollingMode = GridColumnOptions.ScrollingModeStandard, + LoadPanelEnabled = "auto", + LoadPanelText = "Loading..." + }), + EditingOptionJson = JsonSerializer.Serialize(new GridEditingDto + { + Popup = new GridEditingPopupDto() + { + Title = "Claim Types Form", + Width = 500, + Height = 550 + }, + AllowDeleting = true, + AllowAdding = true, + AllowUpdating = true, + SendOnlyChangedFormValuesUpdate = false, + }), + EditingFormJson = JsonSerializer.Serialize(new List() + { + new() { Order=1, ColCount=1, ColSpan=2, ItemType="group", Items = + [ + new EditingFormItemDto { Order=1, DataField="Name", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxTextBox, EditorOptions="{ \"showClearButton\" : true }" }, + new EditingFormItemDto { Order=2, DataField="ValueType", ColSpan=2, IsRequired=true, EditorType2=EditorTypes.dxSelectBox }, + new EditingFormItemDto { Order=3, DataField="Required", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxCheckBox }, + new EditingFormItemDto { Order=4, DataField="IsStatic", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxCheckBox }, + new EditingFormItemDto { Order=5, DataField="Regex", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxTextBox, EditorOptions="{ \"showClearButton\" : true }" }, + new EditingFormItemDto { Order=6, DataField="RegexDescription", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxTextBox, EditorOptions="{ \"showClearButton\" : true }" }, + new EditingFormItemDto { Order=7, DataField="Description", ColSpan=2, IsRequired=false, EditorType2=EditorTypes.dxTextBox, EditorOptions="{ \"showClearButton\" : true }" }, + ] + } + }), + DeleteCommand = "DELETE FROM \"AbpClaimTypes\" WHERE \"Id\"=@Id", + DeleteFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] { + new() { + FieldName = "Id", + FieldDbType = DbType.Guid, + Value = "@ID", + CustomValueType = FieldCustomValueTypeEnum.CustomKey } + }), + InsertCommand = "INSERT INTO \"AbpClaimTypes\" (\"Id\",\"ValueType\",\"Required\",\"IsStatic\",\"Name\",\"ConcurrencyStamp\",\"ExtraProperties\") OUTPUT Inserted.Id VALUES (@Id,@ValueType,@Required,@IsStatic,@Name,@ConcurrencyStamp,@ExtraProperties)", + InsertFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] { + new() { + FieldName = "ConcurrencyStamp", + FieldDbType = DbType.Guid, + Value = Guid.NewGuid().ToString(), + CustomValueType = FieldCustomValueTypeEnum.Value }, + new() { + FieldName = "ExtraProperties", + FieldDbType = DbType.String, + Value = "{}", + CustomValueType = FieldCustomValueTypeEnum.Value } + }), + FormFieldsDefaultValueJson = JsonSerializer.Serialize(new FieldsDefaultValue[] { + new() { + FieldName = "Required", + FieldDbType = DbType.Boolean, + Value = "false", + CustomValueType = FieldCustomValueTypeEnum.Value }, + new() { + FieldName = "IsStatic", + FieldDbType = DbType.Boolean, + Value = "false", + CustomValueType = FieldCustomValueTypeEnum.Value }, + new() { + FieldName = "ValueType", + FieldDbType = DbType.Int16, + Value = "0", + CustomValueType = FieldCustomValueTypeEnum.Value } + }) + + } + ); + + #region ClaimTypes Fields + await _listFormFieldRepository.InsertManyAsync( + [ + new ListFormField + { + ListFormCode = listFormClaimTypes.ListFormCode, + RoleId = null, + UserId = null, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Guid, + FieldName = "Id", + Width = 500, + ListOrderNo = 0, + Visible = false, + IsActive = true, + IsDeleted = false, + PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto + { + C = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Create", + R = AppCodes.IdentityPermissions.Users.ClaimTypes, + U = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Update", + E = true, + Deny = false + }), + PivotSettingsJson = JsonSerializer.Serialize(new ListFormFieldPivotSettingsDto + { + IsPivot = true + }) + }, + new ListFormField + { + ListFormCode = listFormClaimTypes.ListFormCode, + RoleId = null, + UserId = null, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Name", + Width = 200, + ListOrderNo = 1, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto + { + C = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Create", + R = AppCodes.IdentityPermissions.Users.ClaimTypes, + U = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Update", + E = true, + Deny = false + }), + PivotSettingsJson = JsonSerializer.Serialize(new ListFormFieldPivotSettingsDto + { + IsPivot = true + }) + }, + new ListFormField + { + ListFormCode = listFormClaimTypes.ListFormCode, + RoleId = null, + UserId = null, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Int16, + FieldName = "ValueType", + Width = 100, + ListOrderNo = 2, + Visible = true, + IsActive = true, + IsDeleted = false, + LookupJson = JsonSerializer.Serialize(new LookupDto + { + + DataSourceType = UiLookupDataSourceTypeEnum.StaticData, + DisplayExpr = "name", + ValueExpr = "key", + LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] { + new () { Key=0,Name="String" }, + new () { Key=1,Name="Number" }, + new () { Key=2,Name="Boolean" }, + new () { Key=3,Name="DateTime" }, + }), + }), + PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto + { + C = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Create", + R = AppCodes.IdentityPermissions.Users.ClaimTypes, + U = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Update", + E = true, + Deny = false + }), + PivotSettingsJson = JsonSerializer.Serialize(new ListFormFieldPivotSettingsDto + { + IsPivot = true + }) + }, + new ListFormField + { + ListFormCode = listFormClaimTypes.ListFormCode, + RoleId = null, + UserId = null, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Boolean, + FieldName = "Required", + Width = 100, + ListOrderNo = 3, + Visible = true, + IsActive = true, + IsDeleted = false, + PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto + { + C = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Create", + R = AppCodes.IdentityPermissions.Users.ClaimTypes, + U = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Update", + E = true, + Deny = false + }), + PivotSettingsJson = JsonSerializer.Serialize(new ListFormFieldPivotSettingsDto + { + IsPivot = true + }) + }, + new ListFormField + { + ListFormCode = listFormClaimTypes.ListFormCode, + RoleId = null, + UserId = null, + CultureName = LanguageCodes.En, + SourceDbType = DbType.Boolean, + FieldName = "IsStatic", + Width = 100, + ListOrderNo = 4, + Visible = true, + IsActive = true, + IsDeleted = false, + PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto + { + C = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Create", + R = AppCodes.IdentityPermissions.Users.ClaimTypes, + U = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Update", + E = true, + Deny = false + }), + PivotSettingsJson = JsonSerializer.Serialize(new ListFormFieldPivotSettingsDto + { + IsPivot = true + }) + }, + new ListFormField + { + ListFormCode = listFormClaimTypes.ListFormCode, + RoleId = null, + UserId = null, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Regex", + Width = 250, + ListOrderNo = 5, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto + { + C = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Create", + R = AppCodes.IdentityPermissions.Users.ClaimTypes, + U = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Update", + E = true, + Deny = false + }), + PivotSettingsJson = JsonSerializer.Serialize(new ListFormFieldPivotSettingsDto + { + IsPivot = true + }) + }, + new ListFormField + { + ListFormCode = listFormClaimTypes.ListFormCode, + RoleId = null, + UserId = null, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "RegexDescription", + Width = 250, + ListOrderNo = 6, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto + { + C = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Create", + R = AppCodes.IdentityPermissions.Users.ClaimTypes, + U = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Update", + E = true, + Deny = false + }), + PivotSettingsJson = JsonSerializer.Serialize(new ListFormFieldPivotSettingsDto + { + IsPivot = true + }) + }, + new ListFormField + { + ListFormCode = listFormClaimTypes.ListFormCode, + RoleId = null, + UserId = null, + CultureName = LanguageCodes.En, + SourceDbType = DbType.String, + FieldName = "Description", + Width = 250, + ListOrderNo = 7, + Visible = true, + IsActive = true, + IsDeleted = false, + AllowSearch = true, + PermissionJson = JsonSerializer.Serialize(new ListFormFieldPermissionDto + { + C = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Create", + R = AppCodes.IdentityPermissions.Users.ClaimTypes, + U = AppCodes.IdentityPermissions.Users.ClaimTypes + ".Update", + E = true, + Deny = false + }), + PivotSettingsJson = JsonSerializer.Serialize(new ListFormFieldPivotSettingsDto + { + IsPivot = true + }) + } + ]); + #endregion + #endregion + #endregion } } diff --git a/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json b/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json index 828e6534..d9c2ef30 100644 --- a/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json +++ b/api/src/Kurs.Platform.DbMigrator/Seeds/SeederData.json @@ -612,6 +612,12 @@ "en": "Administration", "tr": "Yönetim" }, + { + "resourceName": "Platform", + "key": "AbpIdentity.Users.ClaimType", + "en": "Claim Types", + "tr": "Talep Tipleri" + }, { "resourceName": "Platform", "key": "AbpIdentity.Users.SecurityLog", @@ -645,8 +651,8 @@ { "resourceName": "Platform", "key": "AbpTenantManagement", - "en": "Tenant Management", - "tr": "Tenant Management" + "en": "Tenants", + "tr": "Tenants" }, { "resourceName": "Platform", @@ -2001,8 +2007,8 @@ { "resourceName": "Platform", "key": "Abp.Identity.User.LockoutManagement.LoginAndLockoutSettings", - "en": "Login And Lockout Settings", - "tr": "Giriş ve Kilit Ayarları" + "en": "Lockout Settings", + "tr": "Kilit Ayarları" }, { "resourceName": "Platform", @@ -2046,6 +2052,30 @@ "en": "Update Time", "tr": "Güncelleme Tarihi" }, + { + "resourceName": "Platform", + "key": "Abp.Identity.User.ClaimTypes", + "en": "Claim Types", + "tr": "Talep Tipleri" + }, + { + "resourceName": "Platform", + "key": "Abp.Identity.User.ClaimType", + "en": "ClaimType", + "tr": "Talep Tipi" + }, + { + "resourceName": "Platform", + "key": "Abp.Identity.User.NoClaimsFound", + "en": "No Claims Found", + "tr": "Talep Bulunamadı" + }, + { + "resourceName": "Platform", + "key": "Abp.Identity.User.ClaimValue", + "en": "ClaimValue", + "tr": "Talep Değeri" + }, { "resourceName": "Platform", "key": "Abp.Identity.User.LockoutManagement", @@ -6095,11 +6125,21 @@ "RequiredPermissionName": "Abp.Identity.OrganizationUnits", "IsDisabled": false }, + { + "ParentCode": "Abp.Identity", + "Code": "AbpIdentity.Users.ClaimType", + "DisplayName": "AbpIdentity.Users.ClaimType", + "Order": 6, + "Url": "/list/List-0022", + "Icon": "FcOrganization", + "RequiredPermissionName": "AbpIdentity.Users.ClaimType", + "IsDisabled": false + }, { "ParentCode": "Abp.Identity", "Code": "App.IpRestrictions", "DisplayName": "App.IpRestrictions", - "Order": 6, + "Order": 7, "Url": "/list/List-0015", "Icon": "FcNfcSign", "RequiredPermissionName": "App.IpRestrictions", @@ -6109,7 +6149,7 @@ "ParentCode": "AbpIdentity.Users", "Code": "AbpIdentity.Users.SecurityLog", "DisplayName": "AbpIdentity.Users.SecurityLog", - "Order": 7, + "Order": 8, "Url": "/list/List-0019", "Icon": "FcPrivacy", "RequiredPermissionName": "AbpIdentity.Users.SecurityLog", @@ -6340,6 +6380,14 @@ "DisplayName": "AbpIdentity.Users.SecurityLog", "IsEnabled": true, "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Users.ClaimType", + "ParentName": null, + "DisplayName": "AbpIdentity.Users.ClaimType", + "IsEnabled": true, + "MultiTenancySide": 3 }, { "GroupName": "AbpIdentity", @@ -6949,6 +6997,38 @@ "IsEnabled": true, "MultiTenancySide": 2 }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Users.ClaimType.Create", + "ParentName": "AbpIdentity.Users.ClaimType", + "DisplayName": "Create", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Users.ClaimType.Delete", + "ParentName": "AbpIdentity.Users.ClaimType", + "DisplayName": "Delete", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Users.ClaimType.Export", + "ParentName": "AbpIdentity.Users.ClaimType", + "DisplayName": "Export", + "IsEnabled": true, + "MultiTenancySide": 3 + }, + { + "GroupName": "AbpIdentity", + "Name": "AbpIdentity.Users.ClaimType.Update", + "ParentName": "AbpIdentity.Users.ClaimType", + "DisplayName": "Update", + "IsEnabled": true, + "MultiTenancySide": 3 + }, { "GroupName": "AbpIdentity", "Name": "App.IpRestrictions.Create", diff --git a/api/src/Kurs.Platform.Domain.Shared/PlatformConsts.cs b/api/src/Kurs.Platform.Domain.Shared/PlatformConsts.cs index 65a0633b..01fac3f9 100644 --- a/api/src/Kurs.Platform.Domain.Shared/PlatformConsts.cs +++ b/api/src/Kurs.Platform.Domain.Shared/PlatformConsts.cs @@ -327,7 +327,8 @@ public static class PlatformConsts public const string GlobalSearch = "List-0018"; public const string SecurityLog = "List-0019"; public const string AuditLog = "List-0020"; - public const string Branch = "List-0022"; + public const string Branch = "List-0021"; + public const string ClaimTypes = "List-0022"; public const string ListformField = "List-1000"; public const string Order = "List-Order"; public const string Complaint = "List-Complaint"; diff --git a/api/src/Kurs.Platform.Domain/Data/SeedConsts.cs b/api/src/Kurs.Platform.Domain/Data/SeedConsts.cs index 3ad6cb8f..d23b2cb6 100644 --- a/api/src/Kurs.Platform.Domain/Data/SeedConsts.cs +++ b/api/src/Kurs.Platform.Domain/Data/SeedConsts.cs @@ -319,6 +319,7 @@ public static class SeedConsts { public const string Default = GroupName + ".Users"; public const string SecurityLogs = Default + ".SecurityLog"; + public const string ClaimTypes = Default + ".ClaimType"; } } diff --git a/api/src/Kurs.Platform.HttpApi.Host/Identity/PlatformUserClaimsPrincipalFactory.cs b/api/src/Kurs.Platform.HttpApi.Host/Identity/PlatformUserClaimsPrincipalFactory.cs index c4e31304..d04b73a7 100644 --- a/api/src/Kurs.Platform.HttpApi.Host/Identity/PlatformUserClaimsPrincipalFactory.cs +++ b/api/src/Kurs.Platform.HttpApi.Host/Identity/PlatformUserClaimsPrincipalFactory.cs @@ -1,15 +1,10 @@ using System; -using System.Net; using System.Security.Claims; using System.Security.Principal; -using System.Text; using System.Threading.Tasks; -using System.Web; -using Amazon.Runtime.Internal.Endpoints.StandardLibrary; using Kurs.Platform.Extensions; using Microsoft.AspNetCore.Identity; using Microsoft.Extensions.Options; -using Microsoft.IdentityModel.Tokens; using Volo.Abp.DependencyInjection; using Volo.Abp.Identity; using Volo.Abp.Security.Claims; diff --git a/ui/src/proxy/admin/identity.service.ts b/ui/src/proxy/admin/identity.service.ts index 9824adc5..8d5b5794 100644 --- a/ui/src/proxy/admin/identity.service.ts +++ b/ui/src/proxy/admin/identity.service.ts @@ -5,6 +5,7 @@ import { IdentityUserDto, PermissionDefinitionRecord, UpdatePermissionsDto, + UserClaimModel, UserInfoViewModel, } from '@/proxy/admin' import apiService from '@/services/api.service' @@ -71,4 +72,17 @@ export const getAuditLogs = (id: string) => apiService.fetchData({ method: 'GET', url: `/api/app/audit-log/${id}`, + }) + +export const postClaimUser = (input: UserClaimModel) => + apiService.fetchData({ + method: 'POST', + url: `/api/app/platform-identity/claim-user`, + data: input, + }) + +export const deleteClaimUser = (id: string, userId?: string) => + apiService.fetchData({ + method: 'DELETE', + url: `/api/app/platform-identity/${id}/claim-user/${userId}`, }) \ No newline at end of file diff --git a/ui/src/proxy/admin/models.ts b/ui/src/proxy/admin/models.ts index 82aea1b0..fc4dab42 100644 --- a/ui/src/proxy/admin/models.ts +++ b/ui/src/proxy/admin/models.ts @@ -123,6 +123,7 @@ export interface UserInfoViewModel extends ExtensibleObject { userRoleNames: string[] roles: AssignedRoleViewModel[] branches: AssignedRoleViewModel[] + claims: AssignedClaimViewModel[] lockUser: boolean lastPasswordChangeTime?: Date | string @@ -143,4 +144,20 @@ export interface AssignedRoleViewModel { export interface AssignedBranchViewModel { name?: string isAssigned: boolean -} \ No newline at end of file +} + +export interface AssignedClaimViewModel +{ + id: string + claimType: string + claimValue: string + isAssigned: boolean +} + +export interface UserClaimModel +{ + id?: string + userId?: string + claimType: string + claimValue: string +} diff --git a/ui/src/views/admin/identity/Users/Details.tsx b/ui/src/views/admin/identity/Users/Details.tsx index 2728864c..22f23772 100644 --- a/ui/src/views/admin/identity/Users/Details.tsx +++ b/ui/src/views/admin/identity/Users/Details.tsx @@ -6,31 +6,56 @@ import { FormItem, Input, Notification, + Select, Tabs, toast, } from '@/components/ui' +import Dialog from '@/components/ui/Dialog' import DateTimepicker from '@/components/ui/DatePicker/DateTimepicker' +import Table from '@/components/ui/Table' +import TBody from '@/components/ui/Table/TBody' +import Td from '@/components/ui/Table/Td' +import Th from '@/components/ui/Table/Th' +import THead from '@/components/ui/Table/THead' +import Tr from '@/components/ui/Table/Tr' import TabContent from '@/components/ui/Tabs/TabContent' import TabList from '@/components/ui/Tabs/TabList' import TabNav from '@/components/ui/Tabs/TabNav' -import { UserInfoViewModel } from '@/proxy/admin' -import { getUserDetail, putUserDetail, putUserLookout } from '@/proxy/admin/identity.service' +import { AssignedClaimViewModel, UserInfoViewModel } from '@/proxy/admin' +import { + deleteClaimUser, + getUserDetail, + postClaimUser, + putUserDetail, + putUserLookout, +} from '@/proxy/admin/identity.service' import { useLocalization } from '@/utils/hooks/useLocalization' import dayjs from 'dayjs' -import { Field, FieldArray, FieldProps, Form, Formik } from 'formik' +import { Field, FieldArray, FieldProps, Form, Formik, FormikHelpers } from 'formik' import { useEffect, useState } from 'react' import { Helmet } from 'react-helmet' -import { HiOutlineLockOpen, HiOutlineUser } from 'react-icons/hi' +import { HiOutlineLockOpen, HiOutlineUser, HiOutlineDocumentAdd } from 'react-icons/hi' +import { MdDelete } from 'react-icons/md' import { useParams } from 'react-router-dom' +import * as Yup from 'yup' +import { SelectBoxOption } from '@/shared/types' +import { ConfirmDialog } from '@/components/shared' + +export interface ClaimTypeDto { + claimType: string + claimValue: string +} function UserDetails() { const { userId } = useParams() const { translate } = useLocalization() const [userDetails, setUserDetails] = useState() + const [loading, setLoading] = useState(true) + const [open, setOpen] = useState(false) + const [confirmDeleteClaim, setConfirmDeleteClaim] = useState(null) const getUser = async () => { const { data } = await getUserDetail(userId || '') - setUserDetails(data) } @@ -38,7 +63,45 @@ function UserDetails() { getUser() }, []) - //translate('::AbpIdentity.Profile'), + const scheme = Yup.object().shape({ + claimType: Yup.string().required(), + claimValue: Yup.string().required(), + }) + + const handleSubmit = async ( + values: ClaimTypeDto, + { setSubmitting }: FormikHelpers, + ) => { + setLoading(true) + setSubmitting(true) + + try { + await postClaimUser({ userId, claimType: values.claimType, claimValue: values.claimValue }) + toast.push( + + {translate('::Kaydet')} + , + { + placement: 'top-center', + }, + ) + setOpen(false) + getUser() + } catch (error) { + toast.push( + + {'Hata'} + , + { + placement: 'top-center', + }, + ) + } finally { + setLoading(false) + setSubmitting(false) + } + } + return userDetails ? ( <> }> - { translate('::Abp.Identity.User.UserInformation') } + {translate('::Abp.Identity.User.UserInformation')} }> - { translate('::Abp.Identity.User.LockoutManagement') } + {translate('::Abp.Identity.User.LockoutManagement')} + + }> + {translate('::Abp.Identity.User.ClaimTypes')} @@ -95,14 +161,23 @@ function UserDetails() { {/* Personal Information */}
- - + +
{/* Şube Management */}
-
{translate('::Abp.Identity.User.UserInformation.BranchManagement')}
+
+ {translate('::Abp.Identity.User.UserInformation.BranchManagement')} +
{({ form, remove, push }) => ( @@ -132,7 +207,9 @@ function UserDetails() { {/* Role Management */}
-
{translate('::Abp.Identity.User.UserInformation.RoleManagement')}
+
+ {translate('::Abp.Identity.User.UserInformation.RoleManagement')} +
{({ form, remove, push }) => ( @@ -162,22 +239,50 @@ function UserDetails() { {/* Contact Information */}
-
{translate('::Abp.Identity.User.UserInformation.ContactInformation')}
- - +
+ {translate('::Abp.Identity.User.UserInformation.ContactInformation')} +
+ + - - + + - +
{/* Account Timestamps */}
-
{translate('::Abp.Identity.User.UserInformation.AccountTimestamps')}
- +
+ {translate('::Abp.Identity.User.UserInformation.AccountTimestamps')} +
+ {({ field, form }: FieldProps) => ( - + {({ field, form }: FieldProps) => ( )} - + {({ field, form }: FieldProps) => ( )} @@ -267,25 +380,37 @@ function UserDetails() {
{/* Account Status */}
-
{translate('::Abp.Identity.User.LockoutManagement.AccountStatus')}
+
+ {translate('::Abp.Identity.User.LockoutManagement.AccountStatus')} +
- + @@ -294,11 +419,15 @@ function UserDetails() { layout="horizontal" labelClass="!justify-start" labelWidth="50%" - label={translate('::Abp.Identity.User.LockoutManagement.EmailConfirmed')} + label={translate( + '::Abp.Identity.User.LockoutManagement.EmailConfirmed', + )} > @@ -307,11 +436,15 @@ function UserDetails() { layout="horizontal" labelClass="!justify-start" labelWidth="50%" - label={translate('::Abp.Identity.User.LockoutManagement.PhoneNumberConfirmed')} + label={translate( + '::Abp.Identity.User.LockoutManagement.PhoneNumberConfirmed', + )} > @@ -320,11 +453,15 @@ function UserDetails() { layout="horizontal" labelClass="!justify-start" labelWidth="50%" - label={translate('::Abp.Identity.User.LockoutManagement.TwoFactorEnabled')} + label={translate( + '::Abp.Identity.User.LockoutManagement.TwoFactorEnabled', + )} > @@ -332,12 +469,18 @@ function UserDetails() { {/* Login & Lockout Settings */}
-
{translate('::Abp.Identity.User.LockoutManagement.LoginAndLockoutSettings')}
+
+ {translate( + '::Abp.Identity.User.LockoutManagement.LoginAndLockoutSettings', + )} +
{({ field, form }: FieldProps) => ( @@ -345,7 +488,9 @@ function UserDetails() { field={field} form={form} value={field.value ? dayjs(field.value).toDate() : null} - placeholder={translate('::Abp.Identity.User.LockoutManagement.LoginEndDate')} + placeholder={translate( + '::Abp.Identity.User.LockoutManagement.LoginEndDate', + )} onChange={(date) => { form.setFieldValue( field.name, @@ -361,11 +506,15 @@ function UserDetails() { layout="horizontal" labelClass="!justify-start" labelWidth="50%" - label={translate('::Abp.Identity.User.LockoutManagement.AccountLockoutEnabled')} + label={translate( + '::Abp.Identity.User.LockoutManagement.AccountLockoutEnabled', + )} > @@ -374,11 +523,15 @@ function UserDetails() { layout="horizontal" labelClass="!justify-start" labelWidth="50%" - label={translate('::Abp.Identity.User.LockoutManagement.AccountLocked')} + label={translate( + '::Abp.Identity.User.LockoutManagement.AccountLocked', + )} > @@ -387,7 +540,9 @@ function UserDetails() { layout="horizontal" labelClass="!justify-start" labelWidth="50%" - label={translate('::Abp.Identity.User.LockoutManagement.AccountEndDate')} + label={translate( + '::Abp.Identity.User.LockoutManagement.AccountEndDate', + )} > {({ field, form }: FieldProps) => ( @@ -395,7 +550,9 @@ function UserDetails() { field={field} form={form} value={field.value ? dayjs(field.value).toDate() : null} - placeholder={translate('::Abp.Identity.User.LockoutManagement.AccountEndDate')} + placeholder={translate( + '::Abp.Identity.User.LockoutManagement.AccountEndDate', + )} onChange={(date) => { form.setFieldValue( field.name, @@ -411,11 +568,15 @@ function UserDetails() { layout="horizontal" labelClass="!justify-start" labelWidth="50%" - label={translate('::Abp.Identity.User.LockoutManagement.ShouldChangePwOnNextLogin')} + label={translate( + '::Abp.Identity.User.LockoutManagement.ShouldChangePwOnNextLogin', + )} > @@ -424,7 +585,9 @@ function UserDetails() { layout="horizontal" labelClass="!justify-start" labelWidth="50%" - label={translate('::Abp.Identity.User.LockoutManagement.AccessFailedCount')} + label={translate( + '::Abp.Identity.User.LockoutManagement.AccessFailedCount', + )} > @@ -444,7 +607,145 @@ function UserDetails() {
+ +
+ + + + + + + + + + {userDetails.claims.filter((a) => a.isAssigned === true) && + userDetails.claims.filter((a) => a.isAssigned === true).length > 0 ? ( + userDetails.claims.map((claim) => ( + + + + + + )) + ) : ( + + + + )} + +
+ {translate('::Abp.Identity.User.ClaimType')}{translate('::Abp.Identity.User.ClaimValue')}
+ {claim.claimType}{claim.claimValue}
+ {translate('::Abp.Identity.User.NoClaimsFound')} +
+
+
+ + setOpen(false)} onRequestClose={() => setOpen(false)}> + + {({ touched, errors, values, isSubmitting }) => { + const claimOptions: SelectBoxOption[] = userDetails?.claims.map((claim) => ({ + value: claim.claimType, + label: claim.claimType, + })) + + return ( +
+ + + + {({ field, form }: FieldProps) => ( +