23
23
import org .slf4j .Logger ;
24
24
import org .slf4j .LoggerFactory ;
25
25
import org .springframework .beans .factory .annotation .Autowired ;
26
+ import org .springframework .beans .factory .annotation .Value ;
26
27
import org .springframework .http .HttpStatus ;
27
28
import org .springframework .http .ResponseEntity ;
29
+ import org .springframework .security .core .Authentication ;
30
+ import org .springframework .security .core .context .SecurityContextHolder ;
28
31
import org .springframework .stereotype .Component ;
29
32
import org .springframework .web .bind .annotation .CrossOrigin ;
30
33
import org .springframework .web .bind .annotation .PathVariable ;
45
48
@ Api (value = "subscription" , description = "The Subscription API for the store and retrieve the subscriptions from the database" )
46
49
public class SubscriptionControllerImpl implements SubscriptionController {
47
50
51
+ @ Value ("${ldap.enabled}" )
52
+ private boolean authenticate ;
53
+
48
54
@ Autowired
49
55
private ISubscriptionService subscriptionService ;
50
56
@@ -58,7 +64,15 @@ public class SubscriptionControllerImpl implements SubscriptionController {
58
64
public ResponseEntity <SubscriptionResponse > createSubscription (@ RequestBody List <Subscription > subscriptions ) {
59
65
ResponseEntity <SubscriptionResponse > subResponse = null ;
60
66
SubscriptionResponse subscriptionResponse = new SubscriptionResponse ();
67
+
68
+ String user = "" ;
61
69
for (Subscription subscription : subscriptions ) {
70
+
71
+ // Adding user name in subscription json
72
+ if (authenticate ) {
73
+ user = currentUser ();
74
+ }
75
+ subscription .setUserName (user );
62
76
subResponse = null ;
63
77
try {
64
78
subscription .setCreated (Instant .now ().toEpochMilli ());
@@ -73,7 +87,7 @@ public ResponseEntity<SubscriptionResponse> createSubscription(@RequestBody List
73
87
HttpStatus .PRECONDITION_FAILED );
74
88
}
75
89
76
- if (!subscriptionService .doSubscriptionExist (subscription .getSubscriptionName ())) {
90
+ if (!subscriptionService .doSubscriptionExist (subscription .getSubscriptionName (), user )) {
77
91
subscriptionService .addSubscription (subscription );
78
92
LOG .info ("Subscription :" + subscription .getSubscriptionName () + " Inserted Successfully" );
79
93
subscriptionResponse .setMsg ("Inserted Successfully" );
@@ -94,30 +108,34 @@ public ResponseEntity<SubscriptionResponse> createSubscription(@RequestBody List
94
108
@ CrossOrigin
95
109
@ ApiOperation (value = "Returns the subscription rules for given subscription name" )
96
110
public ResponseEntity <List <Subscription >> getSubscriptionById (@ PathVariable String subscriptionName ) {
111
+ String user = "" ;
112
+ if (authenticate ) {
113
+ user = currentUser ();
114
+ }
97
115
List <Subscription > subscriptionList = new ArrayList <Subscription >();
98
116
try {
99
117
LOG .info ("Subscription :" + subscriptionName + " fetch started" );
100
- subscriptionList .add (subscriptionService .getSubscription (subscriptionName ));
118
+ subscriptionList .add (subscriptionService .getSubscription (subscriptionName , user ));
101
119
LOG .info ("Subscription :" + subscriptionName + " fetched" );
102
120
return new ResponseEntity <List <Subscription >>(subscriptionList , HttpStatus .OK );
103
121
} catch (SubscriptionNotFoundException e ) {
104
122
LOG .error ("Subscription :" + subscriptionName + " not found in records" );
105
123
return new ResponseEntity <List <Subscription >>(subscriptionList , HttpStatus .OK );
106
-
107
124
}
108
-
109
125
}
110
126
111
127
@ Override
112
-
113
128
// @CrossOrigin
114
129
@ ApiOperation (value = "Update the existing subscription by the subscription name" )
115
130
public ResponseEntity <SubscriptionResponse > updateSubscriptions (@ RequestBody List <Subscription > subscriptions ) {
131
+ String user = "" ;
132
+ if (authenticate ) {
133
+ user = currentUser ();
134
+ }
116
135
Subscription subscription = subscriptions .get (0 );
117
136
String subscriptionName = subscription .getSubscriptionName ();
118
137
LOG .info ("Subscription :" + subscriptionName + " update started" );
119
138
SubscriptionResponse subscriptionResponse = new SubscriptionResponse ();
120
-
121
139
try {
122
140
subscription .setCreated (Instant .now ().toEpochMilli ());
123
141
subscriptionValidator .validateSubscription (subscription );
@@ -130,8 +148,8 @@ public ResponseEntity<SubscriptionResponse> updateSubscriptions(@RequestBody Lis
130
148
return new ResponseEntity <SubscriptionResponse >(subscriptionResponse , HttpStatus .PRECONDITION_FAILED );
131
149
}
132
150
133
- if (subscriptionService .doSubscriptionExist (subscriptionName )) {
134
- subscriptionService .modifySubscription (subscription , subscriptionName );
151
+ if (subscriptionService .doSubscriptionExist (subscriptionName , user )) {
152
+ subscriptionService .modifySubscription (subscription , subscriptionName , user );
135
153
LOG .info ("Subscription :" + subscriptionName + " update completed" );
136
154
subscriptionResponse .setMsg ("Updated Successfully" );
137
155
subscriptionResponse .setStatusCode (HttpStatus .OK .value ());
@@ -143,16 +161,19 @@ public ResponseEntity<SubscriptionResponse> updateSubscriptions(@RequestBody Lis
143
161
subscriptionResponse .setStatusCode (HttpStatus .BAD_REQUEST .value ());
144
162
return new ResponseEntity <SubscriptionResponse >(subscriptionResponse , HttpStatus .BAD_REQUEST );
145
163
}
146
-
147
164
}
148
165
149
166
@ Override
150
167
@ CrossOrigin
151
168
@ ApiOperation (value = "Removes the subscription from the database" )
152
169
public ResponseEntity <SubscriptionResponse > deleteSubscriptionById (@ PathVariable String subscriptionName ) {
170
+ String user = "" ;
171
+ if (authenticate ) {
172
+ user = currentUser ();
173
+ }
153
174
SubscriptionResponse subscriptionResponse = new SubscriptionResponse ();
154
175
LOG .info ("Subscription :" + subscriptionName + " delete started" );
155
- if (subscriptionService .deleteSubscription (subscriptionName )) {
176
+ if (subscriptionService .deleteSubscription (subscriptionName , user )) {
156
177
LOG .info ("Subscription :" + subscriptionName + " deleted Successfully" );
157
178
subscriptionResponse .setMsg ("Deleted Successfully" );
158
179
subscriptionResponse .setStatusCode (HttpStatus .OK .value ());
@@ -163,7 +184,6 @@ public ResponseEntity<SubscriptionResponse> deleteSubscriptionById(@PathVariable
163
184
subscriptionResponse .setStatusCode (HttpStatus .BAD_REQUEST .value ());
164
185
return new ResponseEntity <SubscriptionResponse >(subscriptionResponse , HttpStatus .BAD_REQUEST );
165
186
}
166
-
167
187
}
168
188
169
189
@ Override
@@ -180,4 +200,8 @@ public ResponseEntity<List<Subscription>> getSubscriptions() {
180
200
return new ResponseEntity <List <Subscription >>(subscriptionList , HttpStatus .OK );
181
201
}
182
202
}
203
+
204
+ public String currentUser () {
205
+ return SecurityContextHolder .getContext ().getAuthentication ().getName ();
206
+ }
183
207
}
0 commit comments