Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature#529 #565

Closed
wants to merge 10 commits into from
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.security.web.authentication.www.BasicAuthenticationEntryPoint;
import org.springframework.security.web.firewall.HttpFirewall;
Expand Down Expand Up @@ -57,7 +59,7 @@ public void configure(HttpSecurity http) throws Exception {
public void commence(HttpServletRequest request, HttpServletResponse response,
AuthenticationException authException) throws IOException {
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
response.getWriter().print(config.getErr());
response.getWriter().print(config.getErrorTokenUnvailables());
}
});
}
Expand All @@ -69,4 +71,9 @@ public static HttpFirewall getHttpFirewall() {
strictHttpFirewall.setAllowUrlEncodedDoubleSlash(true);
return strictHttpFirewall;
}

@Bean
public PasswordEncoder encoder(){
return new BCryptPasswordEncoder(12);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@ public class PropertiesConfig {
@Value("${security.datasource.authoritiesClaim}")
private String authoritiesClaim;
@Value("${security.datasource.err}")
private String err;
private String errorTokenUnvailables;

//limitDb properties
@Value("${limitdb.enabled}")
private Boolean enabled;
@Value("${limitdb.maxusers}")
private Integer maxusers;
@Value("${limitdb.err}")
private String error;
private String errorLimitDb;
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package com.businessassistantbcn.usermanagement.controller;

import com.businessassistantbcn.usermanagement.dto.input.UserEmailDto;
import com.businessassistantbcn.usermanagement.dto.input.UserUuidDto;
import com.businessassistantbcn.usermanagement.service.UserManagementService;
import com.businessassistantbcn.usermanagement.dto.output.GenericResultDto;
import com.businessassistantbcn.usermanagement.dto.io.UserDto;
import com.businessassistantbcn.usermanagement.dto.output.UserResponse;
import com.businessassistantbcn.usermanagement.service.IUserManagementService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
Expand All @@ -16,50 +17,52 @@
public class UserManagementController {

@Autowired
UserManagementService userManagementService;
IUserManagementService userManagementService;

@GetMapping(value="/test")
public String test() {
return "Hello from BusinessAssistant User!!!";
}


@GetMapping("/user/email")
@PostMapping("/user")
//@PreAuthorize("hasAuthority('SUPERUSER')") // Comentar en modo dev
@Operation(summary = "get user")

@Operation(summary = "add user")
@ApiResponses({@ApiResponse(responseCode = "200", description = "OK"),
@ApiResponse(responseCode = "400", description = "Bad Request"),
@ApiResponse(responseCode = "404", description = "Not Found"),
@ApiResponse(responseCode = "503", description = "Service Unavailable") })

public Mono<?> userResponse(
@RequestBody UserEmailDto userEmailDto) {
return userManagementService.getUserByEmail(userEmailDto);
public Mono<GenericResultDto<?>> addUser(@RequestBody UserDto user){
return userManagementService.addUser(user);
}

@GetMapping("/user/uuid")

@GetMapping("/user/email")
//@PreAuthorize("hasAuthority('SUPERUSER')") // Comentar en modo dev
@Operation(summary = "get user")

@ApiResponses({@ApiResponse(responseCode = "200", description = "OK"),
@ApiResponse(responseCode = "400", description = "Bad Request"),
@ApiResponse(responseCode = "404", description = "Not Found"),
@ApiResponse(responseCode = "503", description = "Service Unavailable") })
public Mono<?> userResponse(
@RequestBody UserUuidDto userUuidDto) {
return userManagementService.getUserByUuid(userUuidDto);

public Mono<GenericResultDto<UserResponse>> getUserByEmail(
@RequestBody UserDto user) {
return userManagementService.getUserByEmail(user);
}

@PostMapping("/user")
@GetMapping("/user/uuid")
//@PreAuthorize("hasAuthority('SUPERUSER')") // Comentar en modo dev
@Operation(summary = "add user")
@Operation(summary = "get user")
@ApiResponses({@ApiResponse(responseCode = "200", description = "OK"),
@ApiResponse(responseCode = "400", description = "Bad Request"),
@ApiResponse(responseCode = "404", description = "Not Found"),
@ApiResponse(responseCode = "503", description = "Service Unavailable") })
public Mono<?> addUser(@RequestBody UserEmailDto userEmailDto){
return userManagementService.addUser(userEmailDto);
public Mono<GenericResultDto<UserResponse>> getUserById(
@RequestBody UserDto user) {
return userManagementService.getUserById(user);

}



}
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
package com.businessassistantbcn.usermanagement.document;

public enum Role {
USER,
ADMIN
USER("USER"),
ADMIN("ADMIN");

private String name;

Role(String name) {
this.name = name;
}

@Override
public String toString(){
return this.name;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import org.bson.types.ObjectId;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import org.springframework.security.crypto.password.PasswordEncoder;

import java.util.List;

Expand Down Expand Up @@ -34,4 +35,9 @@ public class User {
private long latestAccess;

public User() {}

public User encodePassword(PasswordEncoder encoder) {
this.password = encoder.encode(password);
return this;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.businessassistantbcn.usermanagement.dto.input;

public interface EmailOnly {
String getUserEmail();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.businessassistantbcn.usermanagement.dto.input;

public interface IdOnly {
String getUserId();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package com.businessassistantbcn.usermanagement.dto.input;

public interface SingUpRequest extends EmailOnly {
String getUserPassword();

}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.businessassistantbcn.usermanagement.dto.io;
import java.util.List;

import com.businessassistantbcn.usermanagement.dto.input.IdOnly;
import com.businessassistantbcn.usermanagement.dto.input.SingUpRequest;
import com.businessassistantbcn.usermanagement.dto.output.UserResponse;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;

@Builder
@Getter
@Setter
public class UserDto implements IdOnly, SingUpRequest, UserResponse {

@JsonProperty(value = "user_uuid")
private String userId;

@JsonProperty(value = "user_email")
private String userEmail;

@JsonProperty(value = "user_role",access = JsonProperty.Access.READ_ONLY)
private List<String> userRoles;

@JsonProperty(value = "user_password",access = JsonProperty.Access.WRITE_ONLY)
private String userPassword;

//no constructor till is needed, use builder instead
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,10 @@
package com.businessassistantbcn.usermanagement.dto.output;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.*;

@Getter@Setter
@AllArgsConstructor
@ToString
@Getter
public class ErrorDto {

private String message;
private String errorMessage;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.businessassistantbcn.usermanagement.dto.output;

import lombok.Getter;

@Getter
public class GenericResultDto<T>{
private int offset;
private int limit;
private int count;

private T[] results;

private GenericResultDto() {
//private no args constructor, used only for Integration tests
}

public GenericResultDto(T... results) {
offset = 0; //default value when no pagintaion
limit = -1; //default value when no pagintaion
count = results.length;
this.results = results;
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.businessassistantbcn.usermanagement.dto.output;

import java.util.List;

public interface UserResponse {
String getUserId();

String getUserEmail();

List<String> getUserRoles();
}
Loading