Skip to content
Snippets Groups Projects
Commit 0d586967 authored by Thomas's avatar Thomas
Browse files

User edit & bugfixs

parent 7b89c453
Branches
No related tags found
No related merge requests found
......@@ -36,16 +36,16 @@
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
......
......@@ -3,11 +3,12 @@ package mozen.business;
import java.util.Collection;
import mozen.messages.SignupMessage;
import mozen.messages.UserUpdateMessage;
import mozen.model.User;
public interface IUserManager {
User addUser(SignupMessage message);
void updateUser(User user, User userToUpdate) throws Exception;
void updateUser(User user, UserUpdateMessage message) throws Exception;
void removeUser(User user, Long id);
Collection<User> getUsers();
......
......@@ -9,6 +9,7 @@ import org.springframework.stereotype.Service;
import mozen.model.Role;
import mozen.messages.SignupMessage;
import mozen.messages.UserUpdateMessage;
import mozen.model.User;
import mozen.repos.UserRepository;
import mozen.utils.UserHelper;
......@@ -37,8 +38,18 @@ public class UserManager implements IUserManager {
}
@Override
public void updateUser(User user, User userToUpdate) throws Exception {
if(isRightUser(user, userToUpdate)) repo.save(userToUpdate);
public void updateUser(User user, UserUpdateMessage message) throws Exception {
User userToUpdate = getUser(message.getId());
if(!isRightUser(user, userToUpdate))
throw new Exception("Not the user");
userToUpdate.setEmail(message.getEmail());
userToUpdate.setUsername(message.getUsername());
if (message.getPassword() != null)
userToUpdate.setPassword(bCryptPasswordEncoder.encode(message.getPassword()));
repo.save(userToUpdate);
}
@Override
......
package mozen.messages;
import java.io.Serializable;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;
public class UserUpdateMessage implements Serializable{
private static final long serialVersionUID = 1L;
@NotNull
private Long id;
@NotNull
@Size(min = 1, max = 30)
private String username;
@Size(min = 1, max = 60)
private String password;
@NotNull
@Size(min = 1, max = 30)
@Pattern(regexp="([a-z0-9])+([.]([a-z0-9])+)?@([a-z])+(([.]([a-z])+)?|([-]([a-z])+)?)+.([a-z]){2,}")
private String email;
public UserUpdateMessage() {
}
public UserUpdateMessage(Long id, String username, String password, String email) {
this.id = id;
this.username = username;
this.password = password;
this.email = email;
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return this.username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return this.password;
}
public void setPassword(String password) {
this.password = password;
}
public String getEmail() {
return this.email;
}
public void setEmail(String email) {
this.email = email;
}
}
\ No newline at end of file
......@@ -23,22 +23,48 @@ import mozen.model.Tag;
import mozen.model.TagCategory;
import mozen.model.User;
import mozen.repos.ModelRepository;
import mozen.repos.TagRepository;
import mozen.repos.UserRepository;
@Service
public class DatabaseFiller {
@Autowired
ModelRepository modelRepo;
private ModelRepository modelRepo;
@Autowired
UserRepository userRepo;
private UserRepository userRepo;
@Autowired
private TagRepository tagRepo;
@Autowired
private BCryptPasswordEncoder bCryptPasswordEncoder;
@EventListener(ContextRefreshedEvent.class)
public void onApplicationEvent(ContextRefreshedEvent event) {
event.getApplicationContext().getBean(DatabaseFiller.class).fillDB();
// event.getApplicationContext().getBean(DatabaseFiller.class).fillDB();
event.getApplicationContext().getBean(DatabaseFiller.class).fillDBBasic();
}
@Transactional
public void addAdmin() {
User admin = new User();
admin.setEmail("admin@admin.admin");
admin.setPassword(bCryptPasswordEncoder.encode("1234"));
admin.setUsername("admin");
admin.setRole(Role.ADMIN);
try {
userRepo.save(admin);
System.err.println("[DB FILLER] Admin added");
} catch (Exception e) {
System.err.println("[DB FILLER] Admin already present");
}
}
public void fillDBBasic() {
addAdmin();
basicTags();
}
@Transactional
......@@ -56,12 +82,6 @@ public class DatabaseFiller {
u2.setUsername("user 2");
u2.setRole(Role.DEFAULT);
User admin = new User();
admin.setEmail("admin@admin.admin");
admin.setPassword(bCryptPasswordEncoder.encode("1234"));
admin.setUsername("admin");
admin.setRole(Role.ADMIN);
Model m1 = new Model();
m1.setAuthor(u1);
m1.setName("Model Testo");
......@@ -103,10 +123,11 @@ public class DatabaseFiller {
userRepo.save(u1);
userRepo.save(u2);
userRepo.save(admin);
System.err.println("[DB FILLER] Users added");
addAdmin();
modelRepo.save(m1);
System.err.println("[DB FILLER] Model added");
}
......@@ -143,4 +164,39 @@ public class DatabaseFiller {
return tags;
}
public void basicTags() {
try {
TagCategory category_task = new TagCategory();
category_task.setName("Task");
Tag tag = new Tag();
tag.setCategory(category_task);
tag.setName("Classification");
tagRepo.save(tag);
TagCategory category_arch = new TagCategory();
category_arch.setName("Architecture");
Tag tag2 = new Tag();
tag2.setCategory(category_arch);
tag2.setName("VGG19");
tagRepo.save(tag2);
TagCategory category_dataset = new TagCategory();
category_dataset.setName("Dataset");
Tag tag3 = new Tag();
tag3.setCategory(category_dataset);
tag3.setName("Cifar10");
tagRepo.save(tag3);
System.err.println("[DB FILLER] Basic tags added");
} catch (Exception e) {
System.err.println(e);
System.err.println("[DB FILLER] Basic tags already present");
}
}
}
\ No newline at end of file
package mozen.utils;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.io.InputStream;
import org.springframework.util.DigestUtils;
import org.springframework.web.multipart.MultipartFile;
public class Md5Utils {
public static String getMD5(MultipartFile file) {
try {
byte[] uploadBytes = file.getBytes();
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] digest = md5.digest(uploadBytes);
return new BigInteger(1, digest).toString(16);
} catch (NoSuchAlgorithmException | IOException e) {
InputStream inputStream = new BufferedInputStream(file.getInputStream());
String digest = DigestUtils.md5DigestAsHex(inputStream);
return digest;
} catch (IOException e) {
e.printStackTrace();
return null;
}
......
......@@ -16,6 +16,7 @@ import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
......@@ -24,6 +25,7 @@ import org.springframework.web.bind.annotation.RestController;
import mozen.business.IUserManager;
import mozen.messages.ResponseMessage;
import mozen.messages.SignupMessage;
import mozen.messages.UserUpdateMessage;
import mozen.model.User;
import mozen.utils.JwtUtils;
import mozen.utils.UserHelper;
......@@ -46,24 +48,24 @@ public class UserController {
return userManager.getUsers();
}
@PostMapping("")
public ResponseEntity<ResponseMessage> changeUserDetails(@RequestParam User userToUpdate) {
@PutMapping("")
public ResponseEntity<ResponseMessage> changeUserDetails(@RequestBody @Valid UserUpdateMessage message) {
ResponseMessage response = new ResponseMessage(false, "");
User user = UserHelper.getCurrentUser(userManager);
if(user == null) {
response.setError(true);
response.setMessage("User unknown");
return ResponseEntity.ok(response);
return ResponseEntity.badRequest().body(response);
}
try {
userManager.updateUser(user ,userToUpdate);
userManager.updateUser(user ,message);
return ResponseEntity.ok(response);
} catch (Exception e) {
response.setError(true);
response.setMessage(e.getMessage());
return ResponseEntity.badRequest().body(response);
}
return ResponseEntity.ok().build();
}
@DeleteMapping("")
......@@ -73,16 +75,17 @@ public class UserController {
if(user == null) {
response.setError(true);
response.setMessage("User unknown");
return ResponseEntity.ok(response);
return ResponseEntity.badRequest().body(response);
}
try {
userManager.removeUser(user, id);
return ResponseEntity.ok().build();
} catch (Exception e) {
response.setError(true);
response.setMessage(e.getMessage());
return ResponseEntity.badRequest().body(response);
}
return ResponseEntity.ok().build();
}
@PostMapping("/signup")
......@@ -95,12 +98,12 @@ public class UserController {
Set<GrantedAuthority> grantedAuthorities = new HashSet<>();
grantedAuthorities.add(new SimpleGrantedAuthority("ROLE_"+user.getRole()));
response.setMessage(JwtUtils.generateToken(user.getUsername(), grantedAuthorities));
return ResponseEntity.ok(response);
} catch (Exception e) {
response.setError(true);
response.setMessage(e.getMessage());
return ResponseEntity.badRequest().body(response);
}
return ResponseEntity.ok(response);
}
@GetMapping("/setAdmin")
......@@ -115,12 +118,11 @@ public class UserController {
try {
userManager.setAdmin(id, user);
return ResponseEntity.ok(response);
} catch (Exception e) {
response.setError(true);
response.setMessage(e.getMessage());
return ResponseEntity.badRequest().body(response);
}
return ResponseEntity.ok(response);
}
}
\ No newline at end of file
......@@ -22,11 +22,11 @@ server.port=8181
#spring.jpa.hibernate.ddl-auto=update
# DOCKER + MARIADB
spring.datasource.url=jdbc:mariadb://mozen_mariadb:3306/MOZEN_DB
spring.datasource.username=mozen_user
spring.datasource.password=1234
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
#spring.datasource.url=jdbc:mariadb://mozen_mariadb:3306/MOZEN_DB
#spring.datasource.username=mozen_user
#spring.datasource.password=1234
#spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
#spring.jpa.hibernate.ddl-auto=update
spring.servlet.multipart.max-file-size=10GB
spring.servlet.multipart.max-request-size=10GB
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment