From 994369aec99c58e94e9568dcaaf179e2b491abd2 Mon Sep 17 00:00:00 2001 From: Ali Sadeghi <220201944@ostimteknik.edu.tr> Date: Fri, 8 Aug 2025 13:19:37 +0330 Subject: [PATCH] Default Area added, Add datacenter 404 error fixed --- .../src/main/java/com/sgs/SgsApplication.java | 75 +++++++++++++++---- .../domain/PermissionDescription.java | 1 + .../permission/domain/PermissionName.java | 1 + .../permission/service/PermissionService.java | 6 ++ 4 files changed, 69 insertions(+), 14 deletions(-) diff --git a/sge-backend/src/main/java/com/sgs/SgsApplication.java b/sge-backend/src/main/java/com/sgs/SgsApplication.java index 8d5d20c..cface1e 100644 --- a/sge-backend/src/main/java/com/sgs/SgsApplication.java +++ b/sge-backend/src/main/java/com/sgs/SgsApplication.java @@ -2,6 +2,8 @@ package com.sgs; import com.sgs.graphql.activitySubUnit.domain.ActivitySubUnit; import com.sgs.graphql.activitySubUnit.service.ActivitySubUnitService; +import com.sgs.graphql.area.domain.Area; +import com.sgs.graphql.area.service.AreaService; import com.sgs.graphql.city.domain.City; import com.sgs.graphql.city.repo.CityRepo; import com.sgs.graphql.city.service.CityService; @@ -73,6 +75,7 @@ public class SgsApplication implements CommandLineRunner { private final PermissionService permissionService; private final RoleService roleService; private final RoleRepo roleRepo; + private final AreaService areaService; private final NeighborhoodRepo neighborhoodRepo; private final NeighborhoodService neighborhoodService; private final CityService cityService; @@ -118,7 +121,7 @@ public class SgsApplication implements CommandLineRunner { @Autowired public SgsApplication(RoleService roleService, PermissionService permissionService, RoleRepo roleRepo, - NeighborhoodRepo neighborhoodRepo, NeighborhoodService neighborhoodService, CityService cityService, + AreaService areaService, NeighborhoodRepo neighborhoodRepo, NeighborhoodService neighborhoodService, CityService cityService, CityRepo cityRepo, DistrictRepo districtRepo, DistrictService districtService, CountryRepo countryRepo, CountryService countryService, OrganizationService organizationService, UserService userService, PasswordEncoder passwordEncoder, SectorService sectorService, SubSectorService subSectorService, @@ -133,6 +136,7 @@ public class SgsApplication implements CommandLineRunner { this.roleService = roleService; this.permissionService = permissionService; this.roleRepo = roleRepo; + this.areaService = areaService; this.neighborhoodRepo = neighborhoodRepo; this.neighborhoodService = neighborhoodService; this.cityService = cityService; @@ -426,6 +430,10 @@ public class SgsApplication implements CommandLineRunner { data_center_read.setTag(PermissionName.DATA_CENTER_READ); data_center_read.setDescription(PermissionDescription.DATA_CENTER_READ); + Permission paginate_datacenters_get = new Permission(); + paginate_datacenters_get.setTag(PermissionName.PAGINATE_DATACENTERS_GET); + paginate_datacenters_get.setDescription(PermissionDescription.PAGINATE_DATACENTERS_GET); + permissionService.saveAll(List.of( show_graphics, activities_get, paginate_user_histories, activity_sub_units_get, sub_sectors_get, sectors_get, deleted_items, undelete_items, user_create, user_update, user_delete, paginate_users_get, @@ -442,7 +450,7 @@ public class SgsApplication implements CommandLineRunner { question_create, question_delete, question_update, paginate_questions_get, published_survey_create, surveys_get, paginate_surveys_get, survey_add, survey_delete, survey_update, settings_access, data_center_create, data_center_delete, - data_center_update, data_center_read)); + data_center_update, data_center_read, paginate_datacenters_get)); } public void createDefaultRole() { @@ -771,6 +779,27 @@ public class SgsApplication implements CommandLineRunner { mailInfoService.save(mailInfo); } + public void ensureMissingPermissions() { + // Check if paginate_datacenters_get permission exists + Optional datacenterPermission = permissionService.findByTag("paginate_datacenters_get"); + if (!datacenterPermission.isPresent()) { + // Create the missing permission + Permission paginate_datacenters_get = new Permission(); + paginate_datacenters_get.setTag(PermissionName.PAGINATE_DATACENTERS_GET); + paginate_datacenters_get.setDescription(PermissionDescription.PAGINATE_DATACENTERS_GET); + permissionService.save(paginate_datacenters_get); + } + + // Ensure SUPER_ADMIN has all permissions + Optional superAdminRole = roleRepo.findByTag("SUPER_ADMIN"); + if (superAdminRole.isPresent()) { + Role role = superAdminRole.get(); + List allPermissions = permissionService.findAll(); + role.setPermissions(allPermissions); + roleService.save(role); + } + } + @Override public void run(String... args) throws Exception { if (mailInfoService.findAll().isEmpty()) { @@ -816,6 +845,8 @@ public class SgsApplication implements CommandLineRunner { if (roleService.findAll().isEmpty()) { createDefaultRole(); } + // Ensure all permissions are created and assigned to SUPER_ADMIN + ensureMissingPermissions(); if (organizationService.findAll().isEmpty()) { createDefaultOrganization(); } @@ -834,18 +865,34 @@ public class SgsApplication implements CommandLineRunner { if (neighborhoodService.findAll().isEmpty()) { createNeighborhoodsFromJson(); } - // Add new permission if it doesn't exist - // [Remove Later] - if (permissionService.findAll().stream().noneMatch(p -> PermissionName.SETTINGS_ACCESS.equals(p.getTag()))) { - Permission settingsAccess = new Permission(); - settingsAccess.setTag(PermissionName.SETTINGS_ACCESS); - settingsAccess.setDescription(PermissionDescription.SETTINGS_ACCESS); - settingsAccess.setDefault_permission(false); - settingsAccess.setDeleted(false); - permissionService.save(settingsAccess); + if (areaService.findAll().isEmpty()) { + createDefaultArea(); + } + } + + void createDefaultArea() { + // Check if default area already exists + List existingAreas = areaService.findAll(); + boolean defaultAreaExists = existingAreas.stream() + .anyMatch(area -> "Turkiye".equals(area.getTag()) && area.isDefaultArea()); + + if (!defaultAreaExists) { + Area defaultArea = new Area(); + defaultArea.setTag("Turkiye"); + defaultArea.setDefaultArea(true); + defaultArea.setDeleted(false); + + // Get all cities to add to the default area + List allCities = cityService.findAll(); + defaultArea.setCities(allCities); + + // Get the Turkey country to add to the default area + List countries = countryService.findAll(); + if (!countries.isEmpty()) { + defaultArea.setCountries(countries); + } + + areaService.save(defaultArea); } - Permission settings_access = new Permission(); - settings_access.setTag(PermissionName.SETTINGS_ACCESS); - settings_access.setDescription(PermissionDescription.SETTINGS_ACCESS); } } \ No newline at end of file diff --git a/sge-backend/src/main/java/com/sgs/graphql/permission/domain/PermissionDescription.java b/sge-backend/src/main/java/com/sgs/graphql/permission/domain/PermissionDescription.java index 073a4ce..bfd1d38 100644 --- a/sge-backend/src/main/java/com/sgs/graphql/permission/domain/PermissionDescription.java +++ b/sge-backend/src/main/java/com/sgs/graphql/permission/domain/PermissionDescription.java @@ -74,4 +74,5 @@ public class PermissionDescription { public static final String DATA_CENTER_DELETE = "Veri Merkezi Silme"; public static final String DATA_CENTER_UPDATE = "Veri Merkezi Güncelleme"; public static final String DATA_CENTER_READ = "Veri Merkezi Görüntüleme"; + public static final String PAGINATE_DATACENTERS_GET = "Veri Merkezleri Listesi Görüntüleme"; } diff --git a/sge-backend/src/main/java/com/sgs/graphql/permission/domain/PermissionName.java b/sge-backend/src/main/java/com/sgs/graphql/permission/domain/PermissionName.java index 0cfe295..648c592 100644 --- a/sge-backend/src/main/java/com/sgs/graphql/permission/domain/PermissionName.java +++ b/sge-backend/src/main/java/com/sgs/graphql/permission/domain/PermissionName.java @@ -84,5 +84,6 @@ public class PermissionName { public static final String DATA_CENTER_DELETE = "data_center_delete"; public static final String DATA_CENTER_UPDATE = "data_center_update"; public static final String DATA_CENTER_READ = "data_center_read"; + public static final String PAGINATE_DATACENTERS_GET = "paginate_datacenters_get"; } diff --git a/sge-backend/src/main/java/com/sgs/graphql/permission/service/PermissionService.java b/sge-backend/src/main/java/com/sgs/graphql/permission/service/PermissionService.java index 3b975e9..c2c7c53 100644 --- a/sge-backend/src/main/java/com/sgs/graphql/permission/service/PermissionService.java +++ b/sge-backend/src/main/java/com/sgs/graphql/permission/service/PermissionService.java @@ -9,6 +9,8 @@ import com.sgs.lib.dao.service.BaseService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Optional; + @Service public class PermissionService extends BaseService { @@ -16,4 +18,8 @@ public class PermissionService extends BaseService findByTag(String tag) { + return getRepository().findByTag(tag); + } }