From 39d4956e6b5db745b79c597855d6e6a380cc483b Mon Sep 17 00:00:00 2001 From: chasegawa Date: Thu, 9 Sep 2021 22:51:24 -0700 Subject: [PATCH] NOJIRA Wipeout will clear data and reset users and groups --- .../admin/ui/configuration/DevConfig.groovy | 2 +- .../admin/ui/controller/DangerController.java | 45 +++++++++++++++---- 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/configuration/DevConfig.groovy b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/configuration/DevConfig.groovy index a01d1dae2..a644a58a0 100644 --- a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/configuration/DevConfig.groovy +++ b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/configuration/DevConfig.groovy @@ -31,7 +31,7 @@ import org.springframework.transaction.annotation.Transactional import javax.annotation.PostConstruct @Component -@Profile('dev') +@Profile(['dev','very-dangerous']) class DevConfig { private final EntityDescriptorRepository entityDescriptorRepository private final GroupsRepository groupsRepository diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/DangerController.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/DangerController.java index 532731bfc..fd6d17c51 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/DangerController.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/controller/DangerController.java @@ -1,27 +1,32 @@ package edu.internet2.tier.shibboleth.admin.ui.controller; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Profile; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Controller; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; - +import edu.internet2.tier.shibboleth.admin.ui.configuration.DevConfig; import edu.internet2.tier.shibboleth.admin.ui.repository.EntityDescriptorRepository; import edu.internet2.tier.shibboleth.admin.ui.repository.FilterRepository; import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolverRepository; import edu.internet2.tier.shibboleth.admin.ui.repository.MetadataResolversPositionOrderContainerRepository; +import edu.internet2.tier.shibboleth.admin.ui.security.repository.GroupsRepository; import edu.internet2.tier.shibboleth.admin.ui.security.repository.OwnershipRepository; +import edu.internet2.tier.shibboleth.admin.ui.security.repository.UserRepository; import edu.internet2.tier.shibboleth.admin.ui.security.service.IGroupService; import edu.internet2.tier.shibboleth.admin.ui.service.EntityDescriptorService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Profile; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping(value = "/api/heheheheheheheWipeout") @Profile("very-dangerous") @Slf4j public class DangerController { + @Autowired + DevConfig devConfig; + @Autowired private EntityDescriptorService entityDescriptorService; @@ -33,6 +38,9 @@ public class DangerController { @Autowired private IGroupService groupService; + + @Autowired + private GroupsRepository groupRepository; @Autowired private MetadataResolverRepository metadataResolverRepository; @@ -42,6 +50,9 @@ public class DangerController { @Autowired private OwnershipRepository ownershipRepository; + + @Autowired + UserRepository userRepository; @Transactional @GetMapping @@ -60,6 +71,22 @@ public ResponseEntity wipeOut() { this.metadataResolverRepository.deleteAll(); this.filterRepository.deleteAll(); this.metadataResolversPositionOrderContainerRepository.deleteAll(); + + clearUsersAndGroups(); + return ResponseEntity.ok("yes, you did it"); } -} + + private void clearUsersAndGroups() { + groupRepository.deleteAll(); + ownershipRepository.clearAllOwnedByGroup(); + userRepository.findAll().forEach(user -> { + ownershipRepository.deleteEntriesForOwnedObject(user); // Anything that owns the user that wasn't a group? + // users don't own things yet, so there isn't a method for deleting entries where they would, but may need that someday + userRepository.delete(user); + }); + + groupService.ensureAdminGroupExists(); + devConfig.createDevUsersAndGroups(); + } +} \ No newline at end of file