Merge pull request 'Default Area added, Add datacenter 404 error fixed' (#6) from backbr into main

Fixed issue BLC/sgeUpdated#2 (comment)
This commit is contained in:
2025-08-08 14:02:50 +03:00
4 changed files with 69 additions and 14 deletions

View File

@@ -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<Permission> 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<Role> superAdminRole = roleRepo.findByTag("SUPER_ADMIN");
if (superAdminRole.isPresent()) {
Role role = superAdminRole.get();
List<Permission> 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<Area> 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<City> allCities = cityService.findAll();
defaultArea.setCities(allCities);
// Get the Turkey country to add to the default area
List<Country> 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);
}
}

View File

@@ -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";
}

View File

@@ -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";
}

View File

@@ -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<Permission, PermissionRepo, PermissionCriteria, PermissionCriteriaSpec> {
@@ -16,4 +18,8 @@ public class PermissionService extends BaseService<Permission, PermissionRepo, P
public PermissionService(PermissionRepo repository, PermissionCriteriaSpec criteriaSpec) {
super(repository, criteriaSpec);
}
public Optional<Permission> findByTag(String tag) {
return getRepository().findByTag(tag);
}
}