Project

General

Profile

1
package eu.dnetlib.organizations.controller;
2

    
3
import java.util.HashMap;
4
import java.util.Map;
5

    
6
import org.apache.commons.codec.digest.DigestUtils;
7
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.security.core.Authentication;
9
import org.springframework.web.bind.annotation.DeleteMapping;
10
import org.springframework.web.bind.annotation.GetMapping;
11
import org.springframework.web.bind.annotation.PostMapping;
12
import org.springframework.web.bind.annotation.RequestBody;
13
import org.springframework.web.bind.annotation.RequestParam;
14
import org.springframework.web.bind.annotation.RestController;
15

    
16
import eu.dnetlib.organizations.model.User;
17
import eu.dnetlib.organizations.model.view.UserView;
18
import eu.dnetlib.organizations.repository.UserRepository;
19
import eu.dnetlib.organizations.repository.readonly.UserViewRepository;
20
import eu.dnetlib.organizations.utils.DatabaseUtils;
21
import eu.dnetlib.organizations.utils.OpenOrgsConstants;
22

    
23
@RestController
24
public class UserController {
25

    
26
	private static final String DEFAULT_PASSWORD = "dnet";
27

    
28
	@Autowired
29
	private UserRepository userRepository;
30
	@Autowired
31
	private UserViewRepository userViewRepository;
32
	@Autowired
33
	private DatabaseUtils dbUtils;
34

    
35
	@PostMapping(value = "/public_api/newUser")
36
	public Map<String, Integer> newUser(final @RequestParam String email) {
37
		final Map<String, Integer> res = new HashMap<>();
38
		if (userRepository.existsById(email)) {
39
			res.put("status", 2);
40
		} else {
41
			final User user = new User();
42
			user.setEmail(email);
43
			user.setPassword("{MD5}" + DigestUtils.md5Hex(DEFAULT_PASSWORD));
44
			user.setRole(OpenOrgsConstants.pendingRole);
45
			user.setValid(false);
46
			userRepository.save(user);
47
			res.put("status", 1);
48
		}
49
		return res;
50
	}
51

    
52
	@GetMapping("/api/users")
53
	public Iterable<UserView> users() {
54
		return userViewRepository.findAll();
55
	}
56

    
57
	@PostMapping("/api/users")
58
	public Iterable<UserView> save(@RequestBody final UserView userView, final Authentication authentication) {
59
		if (authentication.getName().equals(userView.getEmail())) { throw new RuntimeException("You can't edit your own user"); }
60
		dbUtils.saveUser(userView);
61
		return users();
62
	}
63

    
64
	@DeleteMapping("/api/users")
65
	public Iterable<UserView> delete(final @RequestParam String email, final Authentication authentication) {
66
		if (authentication.getName().equals(email)) { throw new RuntimeException("You can't delete your own user"); }
67
		dbUtils.deleteUser(email);
68
		return users();
69
	}
70

    
71
}
(3-3/5)