diff --git a/src/main/java/com/econovation/fourth_project/structure/controller/StructureController.java b/src/main/java/com/econovation/fourth_project/structure/controller/StructureController.java new file mode 100644 index 0000000..c5307ee --- /dev/null +++ b/src/main/java/com/econovation/fourth_project/structure/controller/StructureController.java @@ -0,0 +1,34 @@ +package com.econovation.fourth_project.structure.controller; + +import com.econovation.fourth_project.structure.domain.Structure; +import com.econovation.fourth_project.structure.dto.ReqStructureDto; +import com.econovation.fourth_project.structure.service.StructureService; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RequiredArgsConstructor +@RestController +public class StructureController { + + private final StructureService structureService; + + @PostMapping("/api/structure") + public String createStructure(@RequestBody ReqStructureDto request){ + structureService.createStructure(request.getStructure()); + return "create structure success"; + } + + @GetMapping("/api/structure") + public List getAllStructure(){ + return structureService.getAllStructure(); + } + +} diff --git a/src/main/java/com/econovation/fourth_project/structure/domain/Policy.java b/src/main/java/com/econovation/fourth_project/structure/domain/Policy.java new file mode 100644 index 0000000..d2ea6d3 --- /dev/null +++ b/src/main/java/com/econovation/fourth_project/structure/domain/Policy.java @@ -0,0 +1,11 @@ +package com.econovation.fourth_project.structure.domain; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class Policy { + private Long id; + private String version; +} diff --git a/src/main/java/com/econovation/fourth_project/structure/domain/Statement.java b/src/main/java/com/econovation/fourth_project/structure/domain/Statement.java new file mode 100644 index 0000000..db2e90b --- /dev/null +++ b/src/main/java/com/econovation/fourth_project/structure/domain/Statement.java @@ -0,0 +1,14 @@ +package com.econovation.fourth_project.structure.domain; + +import lombok.Getter; + +@Getter +public class Statement { + private String sid; // 중복 아닌 값 + private String effect; // Allow or Deny + private String principal; // 보안 주체(사용자, 그룹, 역할 등) 지정 + private String notPrincipal; + private String action; + private String resource; + +} diff --git a/src/main/java/com/econovation/fourth_project/structure/domain/Structure.java b/src/main/java/com/econovation/fourth_project/structure/domain/Structure.java new file mode 100644 index 0000000..5b388f8 --- /dev/null +++ b/src/main/java/com/econovation/fourth_project/structure/domain/Structure.java @@ -0,0 +1,11 @@ +package com.econovation.fourth_project.structure.domain; + +import lombok.Getter; + +import java.util.List; + +@Getter +public class Structure { + private Policy policy; + private List statementList; +} diff --git a/src/main/java/com/econovation/fourth_project/structure/dto/ReqStructureDto.java b/src/main/java/com/econovation/fourth_project/structure/dto/ReqStructureDto.java new file mode 100644 index 0000000..1919cc2 --- /dev/null +++ b/src/main/java/com/econovation/fourth_project/structure/dto/ReqStructureDto.java @@ -0,0 +1,10 @@ +package com.econovation.fourth_project.structure.dto; + +import com.econovation.fourth_project.structure.domain.Structure; +import lombok.Getter; + + +@Getter +public class ReqStructureDto { + private Structure structure; +} diff --git a/src/main/java/com/econovation/fourth_project/structure/repository/StructureRepository.java b/src/main/java/com/econovation/fourth_project/structure/repository/StructureRepository.java new file mode 100644 index 0000000..f098cc9 --- /dev/null +++ b/src/main/java/com/econovation/fourth_project/structure/repository/StructureRepository.java @@ -0,0 +1,26 @@ +package com.econovation.fourth_project.structure.repository; + +import com.econovation.fourth_project.structure.domain.Structure; +import org.springframework.stereotype.Repository; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Repository +public class StructureRepository { + private Map structureRepository = new HashMap<>(); + + public void save(Long id,Structure structure){ + structureRepository.put(id,structure); + } + + public Structure findById(Long id){ + return structureRepository.get(id); + } + + public List getAllStructure(){ + return new ArrayList<>(structureRepository.values()); + } +} diff --git a/src/main/java/com/econovation/fourth_project/structure/service/StructureService.java b/src/main/java/com/econovation/fourth_project/structure/service/StructureService.java new file mode 100644 index 0000000..d74b320 --- /dev/null +++ b/src/main/java/com/econovation/fourth_project/structure/service/StructureService.java @@ -0,0 +1,29 @@ +package com.econovation.fourth_project.structure.service; + +import com.econovation.fourth_project.structure.domain.Policy; +import com.econovation.fourth_project.structure.domain.Structure; +import com.econovation.fourth_project.structure.repository.StructureRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@RequiredArgsConstructor +@Service +public class StructureService { + private final StructureRepository structureRepository; + private static Long ID = 0L; + public void createStructure(Structure structure){ + structureRepository.save(ID, structure); + structure.getPolicy().setId(ID++); + } + + public List getAllStructure(){ + return structureRepository.getAllStructure(); + } + + + +}