Project

General

Profile

1
package eu.dnetlib.administration.uis.modules.base;
2

    
3
import java.util.Arrays;
4
import java.util.List;
5
import java.util.stream.Collectors;
6

    
7
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.ui.ModelMap;
9
import org.springframework.web.bind.annotation.RequestBody;
10
import org.springframework.web.bind.annotation.RequestMapping;
11
import org.springframework.web.bind.annotation.RequestMethod;
12
import org.springframework.web.bind.annotation.RestController;
13

    
14
import eu.dnetlib.administration.uis.annotations.Authorization;
15
import eu.dnetlib.administration.uis.annotations.MenuEntry;
16
import eu.dnetlib.administration.uis.annotations.MenuGroup;
17
import eu.dnetlib.administration.uis.annotations.PermissionLevel;
18
import eu.dnetlib.administration.uis.auth.AuthorizationDAO;
19
import eu.dnetlib.administration.uis.auth.User;
20
import eu.dnetlib.administration.uis.modules.UIModule;
21
import eu.dnetlib.exceptions.DnetGenericException;
22

    
23
@RestController
24
@RequestMapping("/ajax/users")
25
@MenuEntry("Users")
26
@MenuGroup("Configuration")
27
@Authorization(PermissionLevel.SUPER_ADMIN)
28
public class UsersModule extends UIModule {
29

    
30
	@Autowired
31
	private AuthorizationDAO dao;
32

    
33
	@RequestMapping(value = "", method = RequestMethod.GET)
34
	public List<User> listUsers() throws DnetGenericException {
35
		return dao.getPermissionLevels().entrySet()
36
				.stream()
37
				.map(e -> new User(e.getKey(), null, null, e.getValue()))
38
				.sorted()
39
				.collect(Collectors.toList());
40
	}
41

    
42
	@RequestMapping(value = "", method = RequestMethod.POST)
43
	public boolean updateUsers(@RequestBody final List<User> users) throws DnetGenericException {
44
		dao.updatePermissionLevels(users.stream().collect(Collectors.toMap(User::getId, User::getPermissionLevels)));
45
		return true;
46
	}
47

    
48
	@Override
49
	public void populateModelMap(final ModelMap map) {
50
		map.addAttribute("availableLevels", Arrays.stream(PermissionLevel.values()).map(PermissionLevel::asMap).collect(Collectors.toList()));
51
	}
52

    
53
}
(5-5/5)