11package de .jadenk .springcloud .controller ;
22
33import de .jadenk .springcloud .config .SecurityConfig ;
4- import de .jadenk .springcloud .model .Log ;
5- import de .jadenk .springcloud .model .Role ;
6- import de .jadenk .springcloud .model .UploadedFile ;
7- import de .jadenk .springcloud .model .User ;
4+ import de .jadenk .springcloud .model .*;
85import de .jadenk .springcloud .repository .LogRepository ;
96import de .jadenk .springcloud .repository .RoleRepository ;
107import de .jadenk .springcloud .repository .UserRepository ;
118import de .jadenk .springcloud .service .LogService ;
129import de .jadenk .springcloud .service .UserService ;
10+ import de .jadenk .springcloud .service .WebhookService ;
1311import de .jadenk .springcloud .util .MessageService ;
12+ import de .jadenk .springcloud .util .WebhookEvent ;
1413import org .springframework .beans .factory .annotation .Autowired ;
1514import org .springframework .security .core .Authentication ;
1615import org .springframework .security .core .GrantedAuthority ;
2120import org .springframework .web .bind .annotation .*;
2221import org .springframework .web .servlet .mvc .support .RedirectAttributes ;
2322
24- import java .util .Collection ;
25- import java .util .List ;
26- import java .util .Optional ;
27- import java .util .Set ;
23+ import java .util .*;
2824
2925@ Controller
3026public class AdminController {
3127
3228 @ Autowired
3329 private LogService logService ;
3430
31+ @ Autowired
32+ private WebhookService webhookService ;
33+
3534 @ Autowired
3635 private UserRepository userRepository ;
3736
@@ -76,6 +75,10 @@ public String adminDashboard(@RequestParam(value = "page", defaultValue = "1") i
7675 int offset = (page - 1 ) * pageSize ;
7776 List <Log > logs = logRepository .findLogsPaged (offset , pageSize );
7877
78+
79+ Webhook webhook = webhookService .getFirst ().orElse (new Webhook ());
80+ model .addAttribute ("webhook" , webhook );
81+ model .addAttribute ("webhooks" , webhookService .getAll ());
7982 model .addAttribute ("users" , users );
8083 model .addAttribute ("logs" , logs );
8184 model .addAttribute ("roles" , roles );
@@ -100,15 +103,17 @@ public String updateUser(@RequestParam("id") Long id,
100103 User user = userRepository .findById (id )
101104 .orElseThrow (() -> new IllegalArgumentException ("User not found: " + id ));
102105
106+ Log log = null ;
107+
103108 if (!user .getUsername ().equals (username )) {
104109 String message = messageService .getLog ("admin.user.username.changed" , user .getUsername (), username );
105- logService .log (currentUser .getUsername (), message );
110+ log = logService .log (currentUser .getUsername (), message );
106111 user .setUsername (username );
107112 }
108113
109114 if (!user .getEmail ().equals (email )) {
110115 String message = messageService .getLog ("admin.user.email.changed" , user .getUsername (), email );
111- logService .log (currentUser .getUsername (), message );
116+ log = logService .log (currentUser .getUsername (), message );
112117 user .setEmail (email );
113118 }
114119
@@ -120,17 +125,19 @@ public String updateUser(@RequestParam("id") Long id,
120125 Role currentRole = user .getRole ();
121126 if (!currentRole .equals (foundRole )) {
122127 String message = messageService .getLog ("admin.user.role.changed" , user .getUsername (), currentRole .getName (), foundRole .getName ());
123- logService .log (currentUser .getUsername (), message );
128+ log = logService .log (currentUser .getUsername (), message );
124129 user .setRole (foundRole );
125130 }
126131
127132 if (password != null && !password .trim ().isEmpty ()) {
128133 String encodedPassword = securityConfig .passwordEncoder ().encode (password );
129134 user .setPassword (encodedPassword );
130135 String message = messageService .getLog ("admin.user.password.changed" , user .getUsername ());
131- logService .log (currentUser .getUsername (), message );
136+ log = logService .log (currentUser .getUsername (), message );
132137 }
133138
139+ webhookService .triggerWebhookEvent (WebhookEvent .USER_UPDATED , "User " + user .getUsername () + " was updated" , log .getId ());
140+
134141 userRepository .save (user );
135142
136143 return "redirect:/admin" ;
@@ -157,7 +164,8 @@ public String banUser(@PathVariable Long id, RedirectAttributes redirectAttribut
157164 User user = userService .getUserById (id );
158165 String status = user .isBanned () ? "banned" : "unbanned" ;
159166 String message = messageService .getLog ("admin.user.ban.status" , user .getUsername (), status );
160- logService .log (currentUser .getUsername (), message );
167+ Log log = logService .log (currentUser .getUsername (), message );
168+ webhookService .triggerWebhookEvent (WebhookEvent .USER_BANNED , "User " + user .getUsername () + " was " + status , log .getId ());
161169 } catch (Exception e ) {
162170 System .out .println ("Error while banning user." );
163171 }
0 commit comments