ISSUE-33 #97
@ -20,9 +20,6 @@ public class CustomOidcUserConfiguration extends OidcUserService {
|
|||||||
@Autowired
|
@Autowired
|
||||||
AuthoritiesToGroupMapping authoritiesToGroupMapping;
|
AuthoritiesToGroupMapping authoritiesToGroupMapping;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
UserRepository userRepository;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public OidcUser loadUser(OidcUserRequest userRequest) {
|
public OidcUser loadUser(OidcUserRequest userRequest) {
|
||||||
// * * Delegate to the default implementation for loading user and claims
|
// * * 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 a new DefaultOidcUser with merged authorities
|
||||||
return new DefaultOidcUser(
|
return new DefaultOidcUser(
|
||||||
mappedAuthorities,
|
mappedAuthorities,
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.JsonProcessingException;
|
|||||||
import com.hithomelabs.CFTunnels.Config.AuthoritiesToGroupMapping;
|
import com.hithomelabs.CFTunnels.Config.AuthoritiesToGroupMapping;
|
||||||
import com.hithomelabs.CFTunnels.Config.CloudflareConfig;
|
import com.hithomelabs.CFTunnels.Config.CloudflareConfig;
|
||||||
import com.hithomelabs.CFTunnels.Config.RestTemplateConfig;
|
import com.hithomelabs.CFTunnels.Config.RestTemplateConfig;
|
||||||
|
import com.hithomelabs.CFTunnels.Entity.Request;
|
||||||
import com.hithomelabs.CFTunnels.Entity.User;
|
import com.hithomelabs.CFTunnels.Entity.User;
|
||||||
import com.hithomelabs.CFTunnels.Headers.AuthKeyEmailHeader;
|
import com.hithomelabs.CFTunnels.Headers.AuthKeyEmailHeader;
|
||||||
import com.hithomelabs.CFTunnels.Models.Config;
|
import com.hithomelabs.CFTunnels.Models.Config;
|
||||||
@ -141,13 +142,13 @@ public class TunnelController implements ErrorController {
|
|||||||
return ResponseEntity.ok(jsonResponse);
|
return ResponseEntity.ok(jsonResponse);
|
||||||
}
|
}
|
||||||
|
|
||||||
@PreAuthorize("hasAnyRole('DEVELOPER')")
|
// @PreAuthorize("hasAnyRole('DEVELOPER')")
|
||||||
@PutMapping("/tunnel/{tunnelId}/request")
|
@PutMapping("/tunnel/{tunnelId}/request")
|
||||||
public ResponseEntity<Ingress> createTunnelMappingRequest(@PathVariable UUID tunnelId, @AuthenticationPrincipal OidcUser oidcUser, @RequestBody Ingress ingess){
|
public ResponseEntity<Request> createTunnelMappingRequest(@PathVariable String tunnelId, @AuthenticationPrincipal OidcUser oidcUser, @RequestBody Ingress ingess){
|
||||||
String email = oidcUser.getEmail();
|
Request request = mappingRequestService.createMappingRequest(tunnelId, ingess, oidcUser);
|
||||||
User user = userRepository.findByEmail(email).orElseThrow(() -> new RuntimeException("User Not Found: " + email));
|
if(request.getId() != null)
|
||||||
mappingRequestService.createMappingRequest(tunnelId, ingess, user);
|
return ResponseEntity.status(HttpStatus.CREATED).body(request);
|
||||||
return ResponseEntity.ok(ingess);
|
return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -47,13 +47,4 @@ public class Ingress {
|
|||||||
public void setOriginRequest(Map<String, Object> originRequest) {
|
public void setOriginRequest(Map<String, Object> originRequest) {
|
||||||
this.originRequest = 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.TunnelRepository;
|
||||||
import com.hithomelabs.CFTunnels.Repositories.UserRepository;
|
import com.hithomelabs.CFTunnels.Repositories.UserRepository;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.security.oauth2.core.oidc.user.OidcUser;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@ -31,10 +33,7 @@ public class MappingRequestService {
|
|||||||
|
|
||||||
public Mapping createMapping(UUID tunnelId, Ingress ingress){
|
public Mapping createMapping(UUID tunnelId, Ingress ingress){
|
||||||
Tunnel tunnel = tunnelRepository.findByCfTunnelId(tunnelId).orElseThrow(() -> new RuntimeException("Tunnel not found"));
|
Tunnel tunnel = tunnelRepository.findByCfTunnelId(tunnelId).orElseThrow(() -> new RuntimeException("Tunnel not found"));
|
||||||
Mapping mapping = new Mapping();
|
Mapping mapping = createMappingFromTunnelIngress(tunnel, ingress);
|
||||||
mapping.setTunnel(tunnel);
|
|
||||||
mapping.setPort(ingress.getPort());
|
|
||||||
mapping.setSubdomain(ingress.getSubdomain());
|
|
||||||
return mappingRepository.save(mapping);
|
return mappingRepository.save(mapping);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,8 +45,27 @@ public class MappingRequestService {
|
|||||||
return requestRepository.save(request);
|
return requestRepository.save(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Request createMappingRequest(UUID tunnelId, Ingress ingress, User user){
|
public Request createMappingRequest(String tunnelId, Ingress ingress, OidcUser oidcUser){
|
||||||
Mapping mapping = createMapping(tunnelId, ingress);
|
User user = userRepository.findByEmail(oidcUser.getEmail()).orElseGet(()-> mapUser(oidcUser));
|
||||||
|
Mapping mapping = createMapping(UUID.fromString(tunnelId), ingress);
|
||||||
return createRequest(mapping, user);
|
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