Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
import org.springframework.data.annotation.LastModifiedDate;

@MappedSuperclass
@JsonIgnoreProperties(value = {"created", "modified"}, allowGetters = true)
@JsonIgnoreProperties(value = {"created", "modified", "id"}, allowGetters = true)
public abstract class Base implements Serializable {

private static final long serialVersionUID = 8389104517465359723L;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.openmbee.mms.localuser.config;

import org.openmbee.mms.localuser.security.UserCreateRequest;
import org.openmbee.mms.localuser.security.UserDetailsServiceImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down Expand Up @@ -39,7 +40,11 @@ public DaoAuthenticationProvider daoAuthenticationProvider() {
try {
userDetailsService.loadUserByUsername(adminUsername);
} catch (UsernameNotFoundException e) {
userDetailsService.register(adminUsername, adminPassword, true);
UserCreateRequest req = new UserCreateRequest();
req.setAdmin(true);
req.setPassword(adminPassword);
req.setUsername(adminUsername);
userDetailsService.register(req);
logger.info(String.format("Creating root user: %s with specified password.",
adminUsername));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,13 @@
import org.openmbee.mms.core.utils.AuthenticationUtils;
import org.openmbee.mms.localuser.security.UserCreateRequest;
import org.openmbee.mms.localuser.security.UserDetailsServiceImpl;
import org.openmbee.mms.localuser.security.UsersResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
Expand All @@ -34,12 +36,20 @@ public UserCreateRequest createUser(@RequestBody UserCreateRequest req) {
try {
userDetailsService.loadUserByUsername(req.getUsername());
} catch (UsernameNotFoundException e) {
userDetailsService.register(req.getUsername(), req.getPassword(), req.isAdmin());
userDetailsService.register(req);
return req;
}
throw new BadRequestException("User already exists");
}

@GetMapping(value = "/users")
@PreAuthorize(AuthorizationConstants.IS_MMSADMIN)
public UsersResponse getUsers() {
UsersResponse res = new UsersResponse();
res.setUsers(userDetailsService.getUsers());
return res;
}

@PostMapping(value = "/password", consumes = MediaType.APPLICATION_JSON_VALUE)
@PreAuthorize("isAuthenticated()")
public Object updatePassword(@RequestBody UserCreateRequest req,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,35 @@ public class UserCreateRequest implements Serializable {

private String username;
private String password;
private String email;
private String firstname;
private String lastname;
private boolean admin;

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getFirstname() {
return firstname;
}

public void setFirstname(String firstname) {
this.firstname = firstname;
}

public String getLastname() {
return lastname;
}

public void setLastname(String lastname) {
this.lastname = lastname;
}

public String getUsername() {
return this.username;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.openmbee.mms.localuser.security;

import java.util.List;
import java.util.Optional;

import org.openmbee.mms.core.exceptions.ForbiddenException;
Expand Down Expand Up @@ -39,13 +40,20 @@ public UserDetailsImpl loadUserByUsername(String username) throws UsernameNotFou
return new UserDetailsImpl(user.get());
}

public List<User> getUsers() {
return userRepository.findAll();
}

@Transactional
public User register(String username, String password, boolean isAdmin) {
public User register(UserCreateRequest req) {
User user = new User();
user.setUsername(username);
user.setPassword(passwordEncoder.encode(password));
user.setEmail(req.getEmail());
user.setFirstName(req.getFirstname());
user.setLastName(req.getLastname());
user.setUsername(req.getUsername());
user.setPassword(passwordEncoder.encode(req.getPassword()));
user.setEnabled(true);
user.setAdmin(isAdmin);
user.setAdmin(req.isAdmin());
return userRepository.save(user);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package org.openmbee.mms.localuser.security;

import java.util.List;
import org.openmbee.mms.data.domains.global.User;

public class UsersResponse {

private List<User> users;

public List<User> getUsers() {
return users;
}

public void setUsers(List<User> users) {
this.users = users;
}
}