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 @@ -75,7 +75,7 @@ public Mono<Void> createFormEncoded(ServerWebExchange exchange) {
return userSignup.signupAndLoginFromFormData(exchange);
}

@PostMapping("/super")
@PostMapping(value = "/super", consumes = {MediaType.APPLICATION_JSON_VALUE})
public Mono<ResponseDTO<User>> createSuperUser(
@Valid @RequestBody UserSignupRequestDTO resource,
ServerWebExchange exchange
Expand All @@ -84,6 +84,11 @@ public Mono<ResponseDTO<User>> createSuperUser(
.map(created -> new ResponseDTO<>(HttpStatus.CREATED.value(), created, null));
}

@PostMapping(value = "/super", consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE})
public Mono<Void> createSuperUserFromFormData(ServerWebExchange exchange) {
return userSignup.signupAndLoginSuperFromFormData(exchange);
}

@PutMapping()
public Mono<ResponseDTO<User>> update(@RequestBody User resource, ServerWebExchange exchange) {
return service.updateCurrentUser(resource, exchange)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ public Mono<Void> signupAndLoginFromFormData(ServerWebExchange exchange) {
.map(formData -> {
final User user = new User();
user.setEmail(formData.getFirst(FieldName.EMAIL));
user.setPassword(formData.getFirst("password"));
user.setPassword(formData.getFirst(FieldName.PASSWORD));
if (formData.containsKey(FieldName.NAME)) {
user.setName(formData.getFirst(FieldName.NAME));
}
Expand Down Expand Up @@ -201,4 +201,49 @@ public Mono<User> signupAndLoginSuper(UserSignupRequestDTO userFromRequest, Serv
});
}

public Mono<Void> signupAndLoginSuperFromFormData(ServerWebExchange exchange) {
return exchange.getFormData()
.map(formData -> {
final UserSignupRequestDTO user = new UserSignupRequestDTO();
user.setEmail(formData.getFirst(FieldName.EMAIL));
user.setPassword(formData.getFirst(FieldName.PASSWORD));
user.setSource(LoginSource.FORM);
user.setState(UserState.ACTIVATED);
user.setEnabled(true);
if (formData.containsKey(FieldName.NAME)) {
user.setName(formData.getFirst(FieldName.NAME));
}
if (formData.containsKey("role")) {
user.setRole(formData.getFirst("role"));
}
if (formData.containsKey("companyName")) {
user.setCompanyName(formData.getFirst("companyName"));
}
if (formData.containsKey("allowCollectingAnonymousData")) {
user.setAllowCollectingAnonymousData("true".equals(formData.getFirst("allowCollectingAnonymousData")));
}
if (formData.containsKey("signupForNewsletter")) {
user.setSignupForNewsletter("true".equals(formData.getFirst("signupForNewsletter")));
}
return user;
})
.flatMap(user -> signupAndLoginSuper(user, exchange))
.then()
.onErrorResume(error -> {
String referer = exchange.getRequest().getHeaders().getFirst("referer");
if (referer == null) {
referer = DEFAULT_ORIGIN_HEADER;
}
final URIBuilder redirectUriBuilder = new URIBuilder(URI.create(referer)).setParameter("error", error.getMessage());
URI redirectUri;
try {
redirectUri = redirectUriBuilder.build();
} catch (URISyntaxException e) {
log.error("Error building redirect URI with error for signup, {}.", e.getMessage(), error);
redirectUri = URI.create(referer);
}
return redirectStrategy.sendRedirect(exchange, redirectUri);
});
}

}