ISSUE-33: added user flow to create mapping from tunnel ingress
Some checks failed
sample gradle build and test / build (pull_request) Failing after 1m37s
Some checks failed
sample gradle build and test / build (pull_request) Failing after 1m37s
This commit is contained in:
parent
a40865e989
commit
ccfe79f7f1
@ -20,9 +20,6 @@ public class CustomOidcUserConfiguration extends OidcUserService {
|
||||
@Autowired
|
||||
AuthoritiesToGroupMapping authoritiesToGroupMapping;
|
||||
|
||||
@Autowired
|
||||
UserRepository userRepository;
|
||||
|
||||
@Override
|
||||
public OidcUser loadUser(OidcUserRequest userRequest) {
|
||||
// * * Delegate to the default implementation for loading user and claims
|
||||
@ -39,16 +36,6 @@ public class CustomOidcUserConfiguration extends OidcUserService {
|
||||
);
|
||||
}
|
||||
|
||||
String email = oidcUser.getEmail();
|
||||
String name = oidcUser.getNickName();
|
||||
|
||||
userRepository.findByEmail(email).orElseGet(() -> {
|
||||
User user = new User();
|
||||
user.setEmail(email);
|
||||
user.setName(name);
|
||||
return userRepository.save(user);
|
||||
});
|
||||
|
||||
// * * Return a new DefaultOidcUser with merged authorities
|
||||
return new DefaultOidcUser(
|
||||
mappedAuthorities,
|
||||
|
||||
@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.hithomelabs.CFTunnels.Config.AuthoritiesToGroupMapping;
|
||||
import com.hithomelabs.CFTunnels.Config.CloudflareConfig;
|
||||
import com.hithomelabs.CFTunnels.Config.RestTemplateConfig;
|
||||
import com.hithomelabs.CFTunnels.Entity.Request;
|
||||
import com.hithomelabs.CFTunnels.Entity.User;
|
||||
import com.hithomelabs.CFTunnels.Headers.AuthKeyEmailHeader;
|
||||
import com.hithomelabs.CFTunnels.Models.Config;
|
||||
@ -141,13 +142,13 @@ public class TunnelController implements ErrorController {
|
||||
return ResponseEntity.ok(jsonResponse);
|
||||
}
|
||||
|
||||
@PreAuthorize("hasAnyRole('DEVELOPER')")
|
||||
// @PreAuthorize("hasAnyRole('DEVELOPER')")
|
||||
@PutMapping("/tunnel/{tunnelId}/request")
|
||||
public ResponseEntity<Ingress> createTunnelMappingRequest(@PathVariable UUID tunnelId, @AuthenticationPrincipal OidcUser oidcUser, @RequestBody Ingress ingess){
|
||||
String email = oidcUser.getEmail();
|
||||
User user = userRepository.findByEmail(email).orElseThrow(() -> new RuntimeException("User Not Found: " + email));
|
||||
mappingRequestService.createMappingRequest(tunnelId, ingess, user);
|
||||
return ResponseEntity.ok(ingess);
|
||||
public ResponseEntity<Request> createTunnelMappingRequest(@PathVariable String tunnelId, @AuthenticationPrincipal OidcUser oidcUser, @RequestBody Ingress ingess){
|
||||
Request request = mappingRequestService.createMappingRequest(tunnelId, ingess, oidcUser);
|
||||
if(request.getId() != null)
|
||||
return ResponseEntity.status(HttpStatus.CREATED).body(request);
|
||||
return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -47,13 +47,4 @@ public class Ingress {
|
||||
public void setOriginRequest(Map<String, Object> originRequest) {
|
||||
this.originRequest = originRequest;
|
||||
}
|
||||
|
||||
public int getPort(){
|
||||
URI url = URI.create(this.service);
|
||||
return url.getPort();
|
||||
}
|
||||
|
||||
public String getSubdomain(){
|
||||
return this.hostname.split("//")[0];
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,8 +10,10 @@ import com.hithomelabs.CFTunnels.Repositories.RequestRepository;
|
||||
import com.hithomelabs.CFTunnels.Repositories.TunnelRepository;
|
||||
import com.hithomelabs.CFTunnels.Repositories.UserRepository;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
@Service
|
||||
@ -31,10 +33,7 @@ public class MappingRequestService {
|
||||
|
||||
public Mapping createMapping(UUID tunnelId, Ingress ingress){
|
||||
Tunnel tunnel = tunnelRepository.findByCfTunnelId(tunnelId).orElseThrow(() -> new RuntimeException("Tunnel not found"));
|
||||
Mapping mapping = new Mapping();
|
||||
mapping.setTunnel(tunnel);
|
||||
mapping.setPort(ingress.getPort());
|
||||
mapping.setSubdomain(ingress.getSubdomain());
|
||||
Mapping mapping = createMappingFromTunnelIngress(tunnel, ingress);
|
||||
return mappingRepository.save(mapping);
|
||||
}
|
||||
|
||||
@ -46,8 +45,27 @@ public class MappingRequestService {
|
||||
return requestRepository.save(request);
|
||||
}
|
||||
|
||||
public Request createMappingRequest(UUID tunnelId, Ingress ingress, User user){
|
||||
Mapping mapping = createMapping(tunnelId, ingress);
|
||||
public Request createMappingRequest(String tunnelId, Ingress ingress, OidcUser oidcUser){
|
||||
User user = userRepository.findByEmail(oidcUser.getEmail()).orElseGet(()-> mapUser(oidcUser));
|
||||
Mapping mapping = createMapping(UUID.fromString(tunnelId), ingress);
|
||||
return createRequest(mapping, user);
|
||||
}
|
||||
|
||||
public User mapUser(OidcUser oidcUser){
|
||||
String email = oidcUser.getEmail();
|
||||
String name = oidcUser.getNickName();
|
||||
User user = new User();
|
||||
user.setEmail(email);
|
||||
user.setName(name);
|
||||
userRepository.save(user);
|
||||
return user;
|
||||
}
|
||||
|
||||
public Mapping createMappingFromTunnelIngress(Tunnel tunnel, Ingress ingress){
|
||||
Mapping mapping = new Mapping();
|
||||
mapping.setTunnel(tunnel);
|
||||
mapping.setPort(Integer.parseInt(ingress.getService().split(":")[2]));
|
||||
mapping.setSubdomain(ingress.getHostname().split("\\.")[0]);
|
||||
return mapping;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user