1- package org .devkor .apu .saerok_server .domain .ad .api ;
1+ package org .devkor .apu .saerok_server .domain .admin . ad .api ;
22
33import io .swagger .v3 .oas .annotations .Operation ;
44import io .swagger .v3 .oas .annotations .media .Content ;
88import io .swagger .v3 .oas .annotations .tags .Tag ;
99import jakarta .validation .Valid ;
1010import lombok .RequiredArgsConstructor ;
11- import org .devkor .apu .saerok_server .domain .ad .api .dto .request .AdminAdImagePresignRequest ;
12- import org .devkor .apu .saerok_server .domain .ad .api .dto .request .AdminCreateAdPlacementRequest ;
13- import org .devkor .apu .saerok_server .domain .ad .api .dto .request .AdminCreateAdRequest ;
14- import org .devkor .apu .saerok_server .domain .ad .api .dto .request .AdminCreateSlotRequest ;
15- import org .devkor .apu .saerok_server .domain .ad .api .dto .request .AdminUpdateAdPlacementRequest ;
16- import org .devkor .apu .saerok_server .domain .ad .api .dto .request .AdminUpdateAdRequest ;
17- import org .devkor .apu .saerok_server .domain .ad .api .dto .request .AdminUpdateSlotRequest ;
18- import org .devkor .apu .saerok_server .domain .ad .api .dto .response .AdImagePresignResponse ;
19- import org .devkor .apu .saerok_server .domain .ad .api .dto .response .AdminAdListResponse ;
20- import org .devkor .apu .saerok_server .domain .ad .api .dto .response .AdminAdPlacementListResponse ;
21- import org .devkor .apu .saerok_server .domain .ad .api .dto .response .AdminSlotListResponse ;
22- import org .devkor .apu .saerok_server .domain .ad .application .AdminAdPlacementService ;
23- import org .devkor .apu .saerok_server .domain .ad .application .AdminAdService ;
24- import org .devkor .apu .saerok_server .domain .ad .application .AdminSlotService ;
11+ import org .devkor .apu .saerok_server .domain .admin . ad .api .dto .request .AdminAdImagePresignRequest ;
12+ import org .devkor .apu .saerok_server .domain .admin . ad .api .dto .request .AdminCreateAdPlacementRequest ;
13+ import org .devkor .apu .saerok_server .domain .admin . ad .api .dto .request .AdminCreateAdRequest ;
14+ import org .devkor .apu .saerok_server .domain .admin . ad .api .dto .request .AdminCreateSlotRequest ;
15+ import org .devkor .apu .saerok_server .domain .admin . ad .api .dto .request .AdminUpdateAdPlacementRequest ;
16+ import org .devkor .apu .saerok_server .domain .admin . ad .api .dto .request .AdminUpdateAdRequest ;
17+ import org .devkor .apu .saerok_server .domain .admin . ad .api .dto .request .AdminUpdateSlotRequest ;
18+ import org .devkor .apu .saerok_server .domain .admin . ad .api .dto .response .AdImagePresignResponse ;
19+ import org .devkor .apu .saerok_server .domain .admin . ad .api .dto .response .AdminAdListResponse ;
20+ import org .devkor .apu .saerok_server .domain .admin . ad .api .dto .response .AdminAdPlacementListResponse ;
21+ import org .devkor .apu .saerok_server .domain .admin . ad .api .dto .response .AdminSlotListResponse ;
22+ import org .devkor .apu .saerok_server .domain .admin . ad .application .AdminAdPlacementService ;
23+ import org .devkor .apu .saerok_server .domain .admin . ad .application .AdminAdService ;
24+ import org .devkor .apu .saerok_server .domain .admin . ad .application .AdminSlotService ;
2525import org .devkor .apu .saerok_server .domain .ad .core .entity .Ad ;
2626import org .devkor .apu .saerok_server .domain .ad .core .entity .AdPlacement ;
2727import org .devkor .apu .saerok_server .domain .ad .core .entity .Slot ;
@@ -47,7 +47,7 @@ public class AdminAdController {
4747 /* ───────────── 광고(Ad) 관리 ───────────── */
4848
4949 @ GetMapping ("/list" )
50- @ PreAuthorize ("hasAnyRole('ADMIN_VIEWER','ADMIN_EDITOR ')" )
50+ @ PreAuthorize ("@perm.has('ADMIN_AD_READ ')" )
5151 @ Operation (
5252 summary = "광고 목록 조회" ,
5353 security = @ SecurityRequirement (name = "bearerAuth" ),
@@ -79,7 +79,7 @@ public AdminAdListResponse listAds() {
7979 }
8080
8181 @ PostMapping ("/create" )
82- @ PreAuthorize ("hasRole('ADMIN_EDITOR ')" )
82+ @ PreAuthorize ("@perm.has('ADMIN_AD_WRITE ')" )
8383 @ Operation (
8484 summary = "광고 생성" ,
8585 security = @ SecurityRequirement (name = "bearerAuth" )
@@ -112,7 +112,7 @@ public AdminAdListResponse.Item createAd(
112112 }
113113
114114 @ PutMapping ("/{id}" )
115- @ PreAuthorize ("hasRole('ADMIN_EDITOR ')" )
115+ @ PreAuthorize ("@perm.has('ADMIN_AD_WRITE ')" )
116116 @ Operation (
117117 summary = "광고 수정" ,
118118 security = @ SecurityRequirement (name = "bearerAuth" )
@@ -147,7 +147,7 @@ public AdminAdListResponse.Item updateAd(
147147 }
148148
149149 @ DeleteMapping ("/{id}" )
150- @ PreAuthorize ("hasRole('ADMIN_EDITOR ')" )
150+ @ PreAuthorize ("@perm.has('ADMIN_AD_WRITE ')" )
151151 @ Operation (
152152 summary = "광고 삭제" ,
153153 security = @ SecurityRequirement (name = "bearerAuth" )
@@ -160,7 +160,7 @@ public void deleteAd(@PathVariable Long id,
160160 /* ───────────── 광고 이미지 Presigned URL ───────────── */
161161
162162 @ PostMapping ("/image/presign" )
163- @ PreAuthorize ("hasRole('ADMIN_EDITOR ')" )
163+ @ PreAuthorize ("@perm.has('ADMIN_AD_WRITE ')" )
164164 @ Operation (
165165 summary = "광고 이미지 Presigned URL 발급" ,
166166 security = @ SecurityRequirement (name = "bearerAuth" ),
@@ -181,7 +181,7 @@ public AdImagePresignResponse generateAdImagePresignUrl(
181181 /* ───────────── 슬롯(Slot) 관리 ───────────── */
182182
183183 @ GetMapping ("/slot" )
184- @ PreAuthorize ("hasAnyRole('ADMIN_VIEWER','ADMIN_EDITOR ')" )
184+ @ PreAuthorize ("@perm.has('ADMIN_AD_READ ')" )
185185 @ Operation (
186186 summary = "슬롯 목록 조회" ,
187187 security = @ SecurityRequirement (name = "bearerAuth" )
@@ -205,7 +205,7 @@ public AdminSlotListResponse listSlots() {
205205 }
206206
207207 @ PostMapping ("/slot" )
208- @ PreAuthorize ("hasRole('ADMIN_EDITOR ')" )
208+ @ PreAuthorize ("@perm.has('ADMIN_AD_WRITE ')" )
209209 @ Operation (
210210 summary = "슬롯 생성" ,
211211 security = @ SecurityRequirement (name = "bearerAuth" )
@@ -234,7 +234,7 @@ public AdminSlotListResponse.Item createSlot(
234234 }
235235
236236 @ PutMapping ("/slot/{id}" )
237- @ PreAuthorize ("hasRole('ADMIN_EDITOR ')" )
237+ @ PreAuthorize ("@perm.has('ADMIN_AD_WRITE ')" )
238238 @ Operation (
239239 summary = "슬롯 수정" ,
240240 security = @ SecurityRequirement (name = "bearerAuth" )
@@ -264,7 +264,7 @@ public AdminSlotListResponse.Item updateSlot(
264264 }
265265
266266 @ DeleteMapping ("/slot/{id}" )
267- @ PreAuthorize ("hasRole('ADMIN_EDITOR ')" )
267+ @ PreAuthorize ("@perm.has('ADMIN_SLOT_DELETE ')" )
268268 @ Operation (
269269 summary = "슬롯 삭제" ,
270270 security = @ SecurityRequirement (name = "bearerAuth" )
@@ -277,7 +277,7 @@ public void deleteSlot(@PathVariable Long id,
277277 /* ───────────── 광고 배치(AdPlacement) 관리 ───────────── */
278278
279279 @ GetMapping ("/placement" )
280- @ PreAuthorize ("hasAnyRole('ADMIN_VIEWER','ADMIN_EDITOR ')" )
280+ @ PreAuthorize ("@perm.has('ADMIN_AD_READ ')" )
281281 @ Operation (
282282 summary = "광고 배치 목록 조회" ,
283283 security = @ SecurityRequirement (name = "bearerAuth" )
@@ -306,7 +306,7 @@ public AdminAdPlacementListResponse listPlacements() {
306306 }
307307
308308 @ PostMapping ("/placement" )
309- @ PreAuthorize ("hasRole('ADMIN_EDITOR ')" )
309+ @ PreAuthorize ("@perm.has('ADMIN_AD_WRITE ')" )
310310 @ Operation (
311311 summary = "광고 배치 생성" ,
312312 security = @ SecurityRequirement (name = "bearerAuth" )
@@ -346,7 +346,7 @@ public AdminAdPlacementListResponse.Item createPlacement(
346346 }
347347
348348 @ PutMapping ("/placement/{id}" )
349- @ PreAuthorize ("hasRole('ADMIN_EDITOR ')" )
349+ @ PreAuthorize ("@perm.has('ADMIN_AD_WRITE ')" )
350350 @ Operation (
351351 summary = "광고 배치 수정" ,
352352 security = @ SecurityRequirement (name = "bearerAuth" )
@@ -387,7 +387,7 @@ public AdminAdPlacementListResponse.Item updatePlacement(
387387 }
388388
389389 @ DeleteMapping ("/placement/{id}" )
390- @ PreAuthorize ("hasRole('ADMIN_EDITOR ')" )
390+ @ PreAuthorize ("@perm.has('ADMIN_AD_WRITE ')" )
391391 @ Operation (
392392 summary = "광고 배치 삭제" ,
393393 security = @ SecurityRequirement (name = "bearerAuth" )
0 commit comments