2
.gitignore
vendored
2
.gitignore
vendored
@ -32,3 +32,5 @@ out/
|
||||
.vscode/
|
||||
.floo
|
||||
.flooignore
|
||||
|
||||
/mysql/*
|
||||
|
@ -5,6 +5,7 @@ import mops.gruppen2.config.Gruppen2Config;
|
||||
import mops.gruppen2.domain.Group;
|
||||
import mops.gruppen2.domain.Role;
|
||||
import mops.gruppen2.domain.User;
|
||||
import mops.gruppen2.domain.Visibility;
|
||||
import mops.gruppen2.domain.exception.EventException;
|
||||
import mops.gruppen2.domain.exception.GroupNotFoundException;
|
||||
import mops.gruppen2.domain.exception.WrongFileException;
|
||||
@ -32,6 +33,7 @@ import java.io.CharConversionException;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
@Controller
|
||||
@SessionScope
|
||||
@ -44,6 +46,7 @@ public class Gruppen2Controller {
|
||||
private final ControllerService controllerService;
|
||||
private final InviteLinkRepositoryService inviteLinkRepositoryService;
|
||||
private final Gruppen2Config gruppen2Config;
|
||||
private final Logger logger;
|
||||
|
||||
public Gruppen2Controller(KeyCloakService keyCloakService, GroupService groupService, UserService userService, ControllerService controllerService, InviteLinkRepositoryService inviteLinkRepositoryService, Gruppen2Config gruppen2Config) {
|
||||
this.keyCloakService = keyCloakService;
|
||||
@ -51,6 +54,7 @@ public class Gruppen2Controller {
|
||||
this.userService = userService;
|
||||
this.controllerService = controllerService;
|
||||
this.inviteLinkRepositoryService = inviteLinkRepositoryService;
|
||||
logger = Logger.getLogger("Gruppen2ControllerLogger");
|
||||
this.gruppen2Config = gruppen2Config;
|
||||
}
|
||||
|
||||
@ -101,6 +105,7 @@ public class Gruppen2Controller {
|
||||
userMaximum = Long.valueOf(userList.size()) + userMaximum;
|
||||
}
|
||||
} catch (UnrecognizedPropertyException | CharConversionException ex) {
|
||||
logger.warning("File konnte nicht gelesen werden");
|
||||
throw new WrongFileException(file.getOriginalFilename());
|
||||
}
|
||||
}
|
||||
@ -180,6 +185,18 @@ public class Gruppen2Controller {
|
||||
if(group.getTitle() == null){
|
||||
throw new GroupNotFoundException(this.getClass().toString());
|
||||
}
|
||||
if (!group.getMembers().contains(user)){
|
||||
if (group.getVisibility() == Visibility.PRIVATE){
|
||||
return "privateGroupNoMember";
|
||||
}
|
||||
if (group != null) {
|
||||
model.addAttribute("group", group);
|
||||
model.addAttribute("parentId", parentId);
|
||||
model.addAttribute("parent", parent);
|
||||
return "detailsNoMember";
|
||||
}
|
||||
return "detailsNoMember";
|
||||
}
|
||||
if (parentId != null) {
|
||||
parent = userService.getGroupById(parentId);
|
||||
}
|
||||
@ -274,14 +291,19 @@ public class Gruppen2Controller {
|
||||
public String editMembers(Model model, KeycloakAuthenticationToken token, @PathVariable("id") Long groupId) throws EventException {
|
||||
Account account = keyCloakService.createAccountFromPrincipal(token);
|
||||
Group group = userService.getGroupById(groupId);
|
||||
if (group.getRoles().get(account.getName()) == Role.ADMIN) {
|
||||
model.addAttribute("account", account);
|
||||
model.addAttribute("members", group.getMembers());
|
||||
model.addAttribute("group", group);
|
||||
model.addAttribute("admin", Role.ADMIN);
|
||||
return "editMembers";
|
||||
} else {
|
||||
return "redirect:/details/";
|
||||
User user = new User(account.getName(),"", "", "");
|
||||
if (group.getMembers().contains(user)) {
|
||||
if (group.getRoles().get(account.getName()) == Role.ADMIN) {
|
||||
model.addAttribute("account", account);
|
||||
model.addAttribute("members", group.getMembers());
|
||||
model.addAttribute("group", group);
|
||||
model.addAttribute("admin", Role.ADMIN);
|
||||
return "editMembers";
|
||||
} else {
|
||||
return "redirect:/details/";
|
||||
}
|
||||
}else {
|
||||
return "privateGroupNoMember";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -20,6 +20,7 @@ import org.springframework.stereotype.Service;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import static mops.gruppen2.domain.Role.ADMIN;
|
||||
|
||||
@ -30,11 +31,13 @@ public class ControllerService {
|
||||
private final EventService eventService;
|
||||
private final UserService userService;
|
||||
private final InviteLinkRepositoryService inviteLinkRepositoryService;
|
||||
private final Logger logger;
|
||||
|
||||
public ControllerService(EventService eventService, UserService userService, InviteLinkRepositoryService inviteLinkRepositoryService) {
|
||||
this.eventService = eventService;
|
||||
this.userService = userService;
|
||||
this.inviteLinkRepositoryService = inviteLinkRepositoryService;
|
||||
this.logger = Logger.getLogger("controllerServiceLogger");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -105,8 +108,13 @@ public class ControllerService {
|
||||
|
||||
public void addUserList(List<User> users, Long groupId) {
|
||||
for (User user : users) {
|
||||
AddUserEvent addUserEvent = new AddUserEvent(groupId, user.getId(), user.getGivenname(), user.getFamilyname(), user.getEmail());
|
||||
eventService.saveEvent(addUserEvent);
|
||||
Group group = userService.getGroupById(groupId);
|
||||
if (group.getMembers().contains(user)) {
|
||||
logger.info("Benutzer " + user.getId() + " ist bereits in Gruppe");
|
||||
} else {
|
||||
AddUserEvent addUserEvent = new AddUserEvent(groupId, user.getId(), user.getGivenname(), user.getFamilyname(), user.getEmail());
|
||||
eventService.saveEvent(addUserEvent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -62,6 +62,19 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-3" style="white-space: nowrap">
|
||||
<div style="display: inline-block; margin: 0">
|
||||
<h2>Mitglieder</h2>
|
||||
<div>
|
||||
<h4>
|
||||
<a th:text="${group.getMembers().size()}"></a>
|
||||
<a>von maximal</a>
|
||||
<a th:text="${group.getUserMaximum()}"></a>
|
||||
<a>Benutzern.</a>
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
26
src/main/resources/templates/privateGroupNoMember.html
Normal file
26
src/main/resources/templates/privateGroupNoMember.html
Normal file
@ -0,0 +1,26 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<html lang="en" xmlns:th="http://www.thymeleaf.org">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta content="width=device-width, initial-scale=1, shrink-to-fit=no" name="viewport">
|
||||
<link crossorigin="anonymous" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
|
||||
integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" rel="stylesheet">
|
||||
<meta charset="UTF-8">
|
||||
<title>Seite nicht gefunden</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="mx-auto" style="vertical-align: border-radius: 5px; center; horiz-align: center; top: 50%; left: 50%;">
|
||||
<div class="jumbotron" style="background: aliceblue">
|
||||
<div class="container">
|
||||
<h1 class="display-3">Kein Zugriff auf die Gruppe</h1>
|
||||
<p class="lead">Sorry, du hast keine Berechtigung auf diese Funktionen der Gruppe zuzugreifen</p><br>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container">
|
||||
<p><a class="btn btn-primary btn-lg" href="#" onclick="window.history.back(-1);return false;" role="button">Zurück</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user