1

Merge remote-tracking branch 'origin/master' into import-csv-in-overview

# Conflicts:
#	src/main/java/mops/gruppen2/controller/Gruppen2Controller.java
#	src/main/java/mops/gruppen2/service/ControllerService.java
#	src/main/resources/templates/editMembers.html
This commit is contained in:
XXNitram
2020-03-18 17:36:06 +01:00
7 changed files with 125 additions and 81 deletions

View File

@ -3,7 +3,6 @@ package mops.gruppen2.controller;
import mops.gruppen2.config.Gruppen2Config;
import mops.gruppen2.domain.Exceptions.EventException;
import mops.gruppen2.domain.Group;
import mops.gruppen2.domain.Role;
import mops.gruppen2.domain.User;
import mops.gruppen2.domain.Visibility;
@ -118,9 +117,10 @@ public class Gruppen2Controller {
@RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator"})
@GetMapping("/findGroup")
public String findGroup(KeycloakAuthenticationToken token, Model model, @RequestParam(value = "suchbegriff", required = false) String suchbegriff) throws EventException {
Account account = keyCloakService.createAccountFromPrincipal(token);
List<Group> groupse = new ArrayList<>();
if (suchbegriff != null) {
groupse = groupService.findGroupWith(suchbegriff);
groupse = groupService.findGroupWith(suchbegriff,account);
}
model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token));
model.addAttribute("gruppen", groupse);
@ -141,9 +141,10 @@ public class Gruppen2Controller {
return "redirect:/gruppen2/";
}
@RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator"})
@GetMapping("/details")
public String showGroupDetails(KeycloakAuthenticationToken token, Model model, @RequestParam(value = "id") Long id) throws EventException, ResponseStatusException {
@RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"})
@GetMapping("/details/{id}")
public String showGroupDetails(KeycloakAuthenticationToken token, Model model, @PathVariable (value="id") Long id) throws EventException, ResponseStatusException {
model.addAttribute("account", keyCloakService.createAccountFromPrincipal(token));
Group group = userService.getGroupById(id);
Account account = keyCloakService.createAccountFromPrincipal(token);
@ -196,22 +197,23 @@ public class Gruppen2Controller {
@RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator"})
@PostMapping("/leaveGroup")
public String pLeaveGroup(KeycloakAuthenticationToken token, @RequestParam(value = "group_id") Long id) {
public String pLeaveGroup(KeycloakAuthenticationToken token, @RequestParam (value="group_id") Long id) throws EventException {
Account account = keyCloakService.createAccountFromPrincipal(token);
User user = new User(account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail());
controllerService.deleteUser(user, id);
controllerService.deleteUser(user.getUser_id(), id);
return "redirect:/gruppen2/";
}
@RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"})
@GetMapping("/details/members")
public String editMembers(Model model, KeycloakAuthenticationToken token, @RequestParam (value = "group_id") Long id) throws EventException {
@GetMapping("/details/members/{id}")
public String editMembers(Model model, KeycloakAuthenticationToken token, @PathVariable (value="id") Long id) throws EventException {
Account account = keyCloakService.createAccountFromPrincipal(token);
Group group = userService.getGroupById(id);
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/";
@ -219,13 +221,20 @@ public class Gruppen2Controller {
}
@RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"})
@PostMapping("/changeRole")
public String changeRole(KeycloakAuthenticationToken token, @RequestParam (value = "group_id") Long id,
@RequestParam (value = "user") User user) throws EventException {
controllerService.updateRole(user, id);
return "redirect:/details/members/";
@PostMapping("/details/members/changeRole")
public String changeRole(KeycloakAuthenticationToken token, @RequestParam (value = "group_id") Long group_id,
@RequestParam (value = "user_id") String user_id) throws EventException {
controllerService.updateRole(user_id, group_id);
return "redirect:/gruppen2/details/members/" + group_id;
}
@RolesAllowed({"ROLE_orga", "ROLE_studentin", "ROLE_actuator)"})
@PostMapping("/details/members/deleteUser")
public String deleteUser(KeycloakAuthenticationToken token,@RequestParam (value = "group_id") Long group_id,
@RequestParam (value = "user_id") String user_id) throws EventException {
controllerService.deleteUser(user_id, group_id);
return "redirect:/gruppen2/details/members/" + group_id;
}
@GetMapping("*")
public String defaultLink() {

View File

@ -5,7 +5,10 @@ import mops.gruppen2.domain.Exceptions.EventException;
import mops.gruppen2.domain.event.*;
import mops.gruppen2.security.Account;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.List;
import java.util.UUID;
@Service
public class ControllerService {
@ -47,7 +50,7 @@ public class ControllerService {
addUser(account, group_id);
updateTitle(account, group_id, title);
updateDescription(account, group_id, description);
updateRole(user, group_id);
updateRole(user.getUser_id(), group_id);
}
private void createInviteLink(Long group_id) {
@ -77,9 +80,14 @@ public class ControllerService {
eventService.saveEvent(updateGroupDescriptionEvent);
}
public void updateRole(User user, Long group_id) throws EventException {
public void updateRole(String user_id, Long group_id) throws EventException {
UpdateRoleEvent updateRoleEvent;
Group group = userService.getGroupById(group_id);
User user = null;
for (User member : group.getMembers()) {
if(member.getUser_id().equals(user_id)) user = member;
}
assert user != null;
if(group.getRoles().get(user.getUser_id()) == Role.ADMIN) {
updateRoleEvent = new UpdateRoleEvent(group_id, user.getUser_id(), Role.MEMBER);
} else {
@ -88,11 +96,22 @@ public class ControllerService {
eventService.saveEvent(updateRoleEvent);
}
public void deleteUser(User user, Long group_id){
public void deleteUser(String user_id, Long group_id) throws EventException {
Group group = userService.getGroupById(group_id);
User user = null;
for (User member : group.getMembers()) {
if(member.getUser_id().equals(user_id)) user = member;
}
assert user != null;
DeleteUserEvent deleteUserEvent = new DeleteUserEvent(group_id, user.getUser_id());
eventService.saveEvent(deleteUserEvent);
}
public void deleteGroupEvent(User user, Long group_id) {
DeleteGroupEvent deleteGroupEvent = new DeleteGroupEvent(group_id, user.getUser_id());
eventService.saveEvent(deleteGroupEvent);
}
public void createLecture(Account account, String title, String description, Boolean visibility, List<User> users) throws EventException {
Visibility visibility1;
Long group_id = eventService.checkGroup();
@ -105,17 +124,12 @@ public class ControllerService {
CreateGroupEvent createGroupEvent = new CreateGroupEvent(group_id, account.getName(), null, GroupType.LECTURE, visibility1);
eventService.saveEvent(createGroupEvent);
User user = new User(account.getName(), account.getGivenname(), account.getFamilyname(), account.getEmail());
addUser(account, group_id);
updateTitle(account, group_id, title);
updateDescription(account, group_id, description);
updateRole(user, group_id);
updateRole(account.getName(), group_id);
addUserList(users, group_id);
}
public void deleteGroupEvent(User user, Long group_id) {
DeleteGroupEvent deleteGroupEvent = new DeleteGroupEvent(group_id, user.getUser_id());
eventService.saveEvent(deleteGroupEvent);
}
}

View File

@ -6,6 +6,7 @@ import mops.gruppen2.domain.Group;
import mops.gruppen2.domain.Visibility;
import mops.gruppen2.domain.event.Event;
import mops.gruppen2.repository.EventRepository;
import mops.gruppen2.security.Account;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
@ -71,15 +72,21 @@ public class GroupService {
return groups.get(group_id);
}
private List<Long> removeUserGroups(List<Long> group_ids, List<Long> user_groups) {
for (Long group_id: user_groups) {
group_ids.remove(group_id);
}
return group_ids;
}
/**
* sucht alle Zeilen in der DB wo die Visibility gleich true ist und wandelt diese in
* eine Liste von Gruppen
* sucht alle Zeilen in der DB wo die Visibility true ist und entfernt alle Gruppen des Users.
* Erstellt eine Liste aus Gruppen.
* @return
* @throws EventException
*/
public List<Group> getAllGroupWithVisibilityPublic() throws EventException {
List<Long> group_ids = eventRepository.findGroup_idsWhereVisibility(Boolean.TRUE);
public List<Group> getAllGroupWithVisibilityPublic(String user_id) throws EventException {
List<Long> group_ids = removeUserGroups(eventRepository.findGroup_idsWhereVisibility(Boolean.TRUE), eventRepository.findGroup_idsWhereUser_id(user_id));
List<EventDTO> eventDTOS = eventRepository.findAllEventsOfGroups(group_ids);
List<Event> events = eventService.translateEventDTOs(eventDTOS);
List<Group> groups = projectEventList(events);
@ -94,10 +101,10 @@ public class GroupService {
* @return
* @throws EventException
*/
public List<Group> findGroupWith(String search) throws EventException {
public List<Group> findGroupWith(String search, Account account) throws EventException {
List<Group> groups = new ArrayList<>();
for (Group group: getAllGroupWithVisibilityPublic()) {
if (group.getTitle().contains(search)|| group.getDescription().contains(search)){
for (Group group: getAllGroupWithVisibilityPublic(account.getName())) {
if (group.getTitle().toLowerCase().contains(search.toLowerCase()) || group.getDescription().toLowerCase().contains(search.toLowerCase())){
groups.add(group);
}
}