ISSUE-33 #96

Merged
hitanshu merged 88 commits from kruti/CFTunnels:ISSUE-33 into test 2026-01-14 17:26:26 +00:00
4 changed files with 31 additions and 34 deletions
Showing only changes of commit ccfe79f7f1 - Show all commits

View File

@ -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,

View File

@ -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();
} }
} }

View File

@ -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];
}
} }

View File

@ -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;
}
} }