🚧 Delete token feature
This commit is contained in:
parent
38fcb3e84c
commit
9e28c1c7f3
@ -1,11 +1,14 @@
|
|||||||
package dev.dinauer.maven.app;
|
package dev.dinauer.maven.app;
|
||||||
|
|
||||||
|
import dev.dinauer.maven.jpa.maven.repo.VersionRepo;
|
||||||
import dev.dinauer.maven.user.User;
|
import dev.dinauer.maven.user.User;
|
||||||
import dev.dinauer.maven.jpa.maven.Version;
|
import dev.dinauer.maven.jpa.maven.Version;
|
||||||
import dev.dinauer.maven.jpa.maven.repo.ArtifactRepo;
|
import dev.dinauer.maven.jpa.maven.repo.ArtifactRepo;
|
||||||
import dev.dinauer.maven.jpa.maven.ArtifactId;
|
import dev.dinauer.maven.jpa.maven.ArtifactId;
|
||||||
import dev.dinauer.maven.user.UserClient;
|
import dev.dinauer.maven.user.UserClient;
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
|
import jakarta.transaction.Transactional;
|
||||||
|
import jakarta.ws.rs.DELETE;
|
||||||
import jakarta.ws.rs.GET;
|
import jakarta.ws.rs.GET;
|
||||||
import jakarta.ws.rs.Path;
|
import jakarta.ws.rs.Path;
|
||||||
import jakarta.ws.rs.PathParam;
|
import jakarta.ws.rs.PathParam;
|
||||||
@ -24,6 +27,9 @@ public class ArtifactResource
|
|||||||
@RestClient
|
@RestClient
|
||||||
UserClient userClient;
|
UserClient userClient;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
VersionRepo versionRepo;
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
public List<ArtifactId> get()
|
public List<ArtifactId> get()
|
||||||
{
|
{
|
||||||
@ -37,6 +43,14 @@ public class ArtifactResource
|
|||||||
return artifactRepo.findById(id);
|
return artifactRepo.findById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DELETE
|
||||||
|
@Path("/{id}")
|
||||||
|
@Transactional
|
||||||
|
public void deleteById(@PathParam("id") String id)
|
||||||
|
{
|
||||||
|
artifactRepo.deleteById(id);
|
||||||
|
}
|
||||||
|
|
||||||
private List<ArtifactId> find()
|
private List<ArtifactId> find()
|
||||||
{
|
{
|
||||||
List<ArtifactId> artifactIds = artifactRepo.listAll();
|
List<ArtifactId> artifactIds = artifactRepo.listAll();
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package dev.dinauer.maven.jpa.events;
|
package dev.dinauer.maven.event;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonManagedReference;
|
import com.fasterxml.jackson.annotation.JsonManagedReference;
|
||||||
import dev.dinauer.maven.user.User;
|
import dev.dinauer.maven.user.User;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package dev.dinauer.maven.jpa.events;
|
package dev.dinauer.maven.event;
|
||||||
|
|
||||||
public enum EventType
|
public enum EventType
|
||||||
{
|
{
|
||||||
@ -1,11 +1,9 @@
|
|||||||
package dev.dinauer.maven.app;
|
package dev.dinauer.maven.event;
|
||||||
|
|
||||||
import dev.dinauer.maven.user.User;
|
import dev.dinauer.maven.user.User;
|
||||||
import dev.dinauer.maven.jpa.events.Event;
|
import dev.dinauer.maven.event.repo.EventRepo;
|
||||||
import dev.dinauer.maven.jpa.events.repo.EventRepo;
|
|
||||||
import dev.dinauer.maven.user.UserClient;
|
import dev.dinauer.maven.user.UserClient;
|
||||||
import io.quarkus.panache.common.Sort;
|
import io.quarkus.panache.common.Sort;
|
||||||
import io.quarkus.security.Authenticated;
|
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
import jakarta.ws.rs.GET;
|
import jakarta.ws.rs.GET;
|
||||||
import jakarta.ws.rs.Path;
|
import jakarta.ws.rs.Path;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package dev.dinauer.maven.jpa.events;
|
package dev.dinauer.maven.event;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonBackReference;
|
import com.fasterxml.jackson.annotation.JsonBackReference;
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
@ -1,6 +1,6 @@
|
|||||||
package dev.dinauer.maven.jpa.events.repo;
|
package dev.dinauer.maven.event.repo;
|
||||||
|
|
||||||
import dev.dinauer.maven.jpa.events.Event;
|
import dev.dinauer.maven.event.Event;
|
||||||
import io.quarkus.hibernate.orm.panache.PanacheRepositoryBase;
|
import io.quarkus.hibernate.orm.panache.PanacheRepositoryBase;
|
||||||
import jakarta.enterprise.context.ApplicationScoped;
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
|
|
||||||
@ -4,6 +4,8 @@ import com.fasterxml.jackson.annotation.JsonBackReference;
|
|||||||
import com.fasterxml.jackson.annotation.JsonManagedReference;
|
import com.fasterxml.jackson.annotation.JsonManagedReference;
|
||||||
import jakarta.persistence.*;
|
import jakarta.persistence.*;
|
||||||
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
|
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
|
||||||
|
import org.hibernate.annotations.OnDelete;
|
||||||
|
import org.hibernate.annotations.OnDeleteAction;
|
||||||
|
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@ -25,12 +27,12 @@ public class ArtifactId
|
|||||||
@Column(name = "artifact_id")
|
@Column(name = "artifact_id")
|
||||||
private String artifactId;
|
private String artifactId;
|
||||||
|
|
||||||
@ManyToOne(cascade = CascadeType.ALL)
|
@ManyToOne(cascade = CascadeType.PERSIST)
|
||||||
@JoinColumn(name = "group_id")
|
@JoinColumn(name = "group_id")
|
||||||
@JsonBackReference
|
@JsonBackReference
|
||||||
private GroupId group;
|
private GroupId group;
|
||||||
|
|
||||||
@OneToMany(mappedBy = "artifact")
|
@OneToMany(mappedBy = "artifact", cascade = CascadeType.REMOVE)
|
||||||
@JsonManagedReference
|
@JsonManagedReference
|
||||||
private List<Version> versions = new ArrayList<>();
|
private List<Version> versions = new ArrayList<>();
|
||||||
|
|
||||||
|
|||||||
@ -18,7 +18,7 @@ public class GroupId
|
|||||||
@Column(name = "group_id")
|
@Column(name = "group_id")
|
||||||
private String groupId;
|
private String groupId;
|
||||||
|
|
||||||
@OneToMany(mappedBy = "group")
|
@OneToMany(mappedBy = "group", cascade = CascadeType.REMOVE)
|
||||||
@JsonManagedReference
|
@JsonManagedReference
|
||||||
private List<ArtifactId> artifacts = new ArrayList<>();
|
private List<ArtifactId> artifacts = new ArrayList<>();
|
||||||
|
|
||||||
|
|||||||
@ -26,7 +26,7 @@ public class Version
|
|||||||
|
|
||||||
private String version;
|
private String version;
|
||||||
|
|
||||||
@ManyToOne(cascade = CascadeType.ALL)
|
@ManyToOne(cascade = CascadeType.PERSIST)
|
||||||
@JoinColumn(name = "artifact_id")
|
@JoinColumn(name = "artifact_id")
|
||||||
@JsonBackReference
|
@JsonBackReference
|
||||||
private ArtifactId artifact;
|
private ArtifactId artifact;
|
||||||
|
|||||||
@ -1,9 +1,9 @@
|
|||||||
package dev.dinauer.maven.maven.core;
|
package dev.dinauer.maven.maven.core;
|
||||||
|
|
||||||
import dev.dinauer.maven.jpa.events.Event;
|
import dev.dinauer.maven.event.Event;
|
||||||
import dev.dinauer.maven.jpa.events.EventType;
|
import dev.dinauer.maven.event.EventType;
|
||||||
import dev.dinauer.maven.jpa.events.Resource;
|
import dev.dinauer.maven.event.Resource;
|
||||||
import dev.dinauer.maven.jpa.events.repo.EventRepo;
|
import dev.dinauer.maven.event.repo.EventRepo;
|
||||||
import dev.dinauer.maven.jpa.maven.ArtifactId;
|
import dev.dinauer.maven.jpa.maven.ArtifactId;
|
||||||
import dev.dinauer.maven.jpa.maven.Version;
|
import dev.dinauer.maven.jpa.maven.Version;
|
||||||
import dev.dinauer.maven.jpa.maven.repo.VersionRepo;
|
import dev.dinauer.maven.jpa.maven.repo.VersionRepo;
|
||||||
|
|||||||
@ -5,9 +5,7 @@ import dev.dinauer.maven.maven.token.dto.TokenCreation;
|
|||||||
import dev.dinauer.maven.maven.token.dto.TokenSecret;
|
import dev.dinauer.maven.maven.token.dto.TokenSecret;
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
import jakarta.transaction.Transactional;
|
import jakarta.transaction.Transactional;
|
||||||
import jakarta.ws.rs.GET;
|
import jakarta.ws.rs.*;
|
||||||
import jakarta.ws.rs.POST;
|
|
||||||
import jakarta.ws.rs.Path;
|
|
||||||
import jakarta.ws.rs.core.SecurityContext;
|
import jakarta.ws.rs.core.SecurityContext;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -27,13 +25,19 @@ public class TokenResource
|
|||||||
@GET
|
@GET
|
||||||
public List<Token> get()
|
public List<Token> get()
|
||||||
{
|
{
|
||||||
return tokenRepo.findByUserId(securityContext.getUserPrincipal().getName()).stream().map(item -> new Token(item.getName(), item.getExpiresAt(), item.getCreatedAt())).toList();
|
return tokenRepo.findByUserId(securityContext.getUserPrincipal().getName()).stream().map(item -> new Token(item.getId(), item.getName(), item.getExpiresAt(), item.getCreatedAt())).toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@POST
|
@POST
|
||||||
@Transactional
|
|
||||||
public TokenSecret create(TokenCreation tokenCreation)
|
public TokenSecret create(TokenCreation tokenCreation)
|
||||||
{
|
{
|
||||||
return tokenService.create(tokenCreation);
|
return tokenService.create(tokenCreation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DELETE
|
||||||
|
@Path("/{id}")
|
||||||
|
public void delete(@PathParam("id") String id)
|
||||||
|
{
|
||||||
|
tokenService.delete(id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import io.vertx.core.http.HttpHeaders;
|
|||||||
import jakarta.enterprise.context.ApplicationScoped;
|
import jakarta.enterprise.context.ApplicationScoped;
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
import io.vertx.core.http.HttpServerRequest;
|
import io.vertx.core.http.HttpServerRequest;
|
||||||
|
import jakarta.transaction.Transactional;
|
||||||
import jakarta.ws.rs.BadRequestException;
|
import jakarta.ws.rs.BadRequestException;
|
||||||
import jakarta.ws.rs.core.SecurityContext;
|
import jakarta.ws.rs.core.SecurityContext;
|
||||||
import org.eclipse.microprofile.config.inject.ConfigProperty;
|
import org.eclipse.microprofile.config.inject.ConfigProperty;
|
||||||
@ -29,6 +30,7 @@ public class TokenService
|
|||||||
@Inject
|
@Inject
|
||||||
SecurityContext securityContext;
|
SecurityContext securityContext;
|
||||||
|
|
||||||
|
@Transactional
|
||||||
public TokenSecret create(TokenCreation tokenCreation)
|
public TokenSecret create(TokenCreation tokenCreation)
|
||||||
{
|
{
|
||||||
String secret = UUID.randomUUID().toString();
|
String secret = UUID.randomUUID().toString();
|
||||||
@ -39,7 +41,17 @@ public class TokenService
|
|||||||
.setExpiresAt(tokenCreation.expiresAt())
|
.setExpiresAt(tokenCreation.expiresAt())
|
||||||
.setCreatedAt(ZonedDateTime.now());
|
.setCreatedAt(ZonedDateTime.now());
|
||||||
tokenRepo.persist(entity);
|
tokenRepo.persist(entity);
|
||||||
return new TokenSecret(tokenCreation.name(), tokenCreation.expiresAt(), secret, entity.getCreatedAt());
|
return new TokenSecret(entity.getId(), tokenCreation.name(), tokenCreation.expiresAt(), secret, entity.getCreatedAt());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void delete(String id)
|
||||||
|
{
|
||||||
|
TokenEntity token = tokenRepo.findById(id);
|
||||||
|
if (securityContext.getUserPrincipal().getName().equals(token.getUserId()))
|
||||||
|
{
|
||||||
|
tokenRepo.delete(token);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String require()
|
public String require()
|
||||||
|
|||||||
@ -3,6 +3,6 @@ package dev.dinauer.maven.maven.token.dto;
|
|||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
|
|
||||||
public record Token(String name, LocalDate expiresAt, ZonedDateTime createdAt)
|
public record Token(String id, String name, LocalDate expiresAt, ZonedDateTime createdAt)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,6 +3,6 @@ package dev.dinauer.maven.maven.token.dto;
|
|||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
import java.time.ZonedDateTime;
|
import java.time.ZonedDateTime;
|
||||||
|
|
||||||
public record TokenSecret(String name, LocalDate expiresAt, String token, ZonedDateTime createdAt)
|
public record TokenSecret(String id, String name, LocalDate expiresAt, String token, ZonedDateTime createdAt)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user