5
5
import lombok .RequiredArgsConstructor ;
6
6
import net .pengcook .authentication .domain .UserInfo ;
7
7
import net .pengcook .user .domain .BlockeeGroup ;
8
+ import net .pengcook .user .domain .BlockerGroup ;
8
9
import net .pengcook .user .domain .Ownable ;
10
+ import net .pengcook .user .exception .ForbiddenException ;
9
11
import net .pengcook .user .service .UserService ;
10
12
import org .aspectj .lang .ProceedingJoinPoint ;
11
13
import org .aspectj .lang .annotation .Around ;
@@ -36,8 +38,9 @@ public Object filterBlockedAuthorsFromList(ProceedingJoinPoint joinPoint) throws
36
38
}
37
39
38
40
BlockeeGroup blockeeGroup = userService .getBlockeeGroup (userInfo .getId ());
41
+ BlockerGroup blockerGroup = userService .getBlockerGroup (userInfo .getId ());
39
42
40
- return filterBlockedUsers (ownables , blockeeGroup );
43
+ return filterBlockedUsers (ownables , blockeeGroup , blockerGroup );
41
44
}
42
45
43
46
@ Pointcut ("execution(java.util.Optional<net.pengcook.user.domain.Ownable+> net.pengcook..repository..*(..))" )
@@ -55,17 +58,22 @@ public Object filterBlockedAuthorFromOptional(ProceedingJoinPoint joinPoint) thr
55
58
56
59
BlockeeGroup blockeeGroup = userService .getBlockeeGroup (userInfo .getId ());
57
60
if (blockeeGroup .contains (ownableOptional .get ().getOwnerId ())) {
58
- return Optional .empty ();
61
+ throw new ForbiddenException ("차단한 사용자입니다." );
62
+ }
63
+
64
+ BlockerGroup blockerGroup = userService .getBlockerGroup (userInfo .getId ());
65
+ if (blockerGroup .contains (ownableOptional .get ().getOwnerId ())) {
66
+ throw new ForbiddenException ("게시글을 이용할 수 없습니다." );
59
67
}
60
68
61
69
return ownableOptional ;
62
70
}
63
71
64
72
@ Pointcut ("execution(net.pengcook.user.domain.Ownable+ net.pengcook..repository..*(..))" )
65
- public void repositoryMethodsReturningOwnable () {
73
+ public void repositoryMethodsReturningAuthorAble () {
66
74
}
67
75
68
- @ Around ("repositoryMethodsReturningOwnable ()" )
76
+ @ Around ("repositoryMethodsReturningAuthorAble ()" )
69
77
public Object filterBlockedAuthor (ProceedingJoinPoint joinPoint ) throws Throwable {
70
78
Ownable ownable = (Ownable ) joinPoint .proceed ();
71
79
@@ -76,7 +84,12 @@ public Object filterBlockedAuthor(ProceedingJoinPoint joinPoint) throws Throwabl
76
84
77
85
BlockeeGroup blockeeGroup = userService .getBlockeeGroup (userInfo .getId ());
78
86
if (blockeeGroup .contains (ownable .getOwnerId ())) {
79
- return null ;
87
+ throw new ForbiddenException ("차단한 사용자입니다." );
88
+ }
89
+
90
+ BlockerGroup blockerGroup = userService .getBlockerGroup (userInfo .getId ());
91
+ if (blockerGroup .contains (ownable .getOwnerId ())) {
92
+ throw new ForbiddenException ("게시글을 이용할 수 없습니다." );
80
93
}
81
94
82
95
return ownable ;
@@ -91,9 +104,14 @@ private UserInfo getCurrentUserInfo() {
91
104
}
92
105
}
93
106
94
- private List <Ownable > filterBlockedUsers (List <Ownable > ownables , BlockeeGroup blockeeGroup ) {
95
- return ownables .stream ()
107
+ private List <Ownable > filterBlockedUsers (
108
+ List <Ownable > authorAbles ,
109
+ BlockeeGroup blockeeGroup ,
110
+ BlockerGroup blockerGroup
111
+ ) {
112
+ return authorAbles .stream ()
96
113
.filter (item -> !blockeeGroup .contains (item .getOwnerId ()))
114
+ .filter (item -> !blockerGroup .contains (item .getOwnerId ()))
97
115
.toList ();
98
116
}
99
117
}
0 commit comments