1
0

fix credentials-api-paths+includes

This commit is contained in:
Michael Hoennig
2025-05-21 10:25:18 +02:00
parent f4bf614d77
commit 037bbf5a4c
10 changed files with 94 additions and 95 deletions

View File

@@ -5,8 +5,8 @@ import java.util.List;
import io.micrometer.core.annotation.Timed;
import net.hostsharing.hsadminng.config.NoSecurityRequirement;
import net.hostsharing.hsadminng.context.Context;
import net.hostsharing.hsadminng.credentials.generated.api.v1.api.LoginContextsApi;
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.LoginContextResource;
import net.hostsharing.hsadminng.credentials.generated.api.v1.api.ContextsApi;
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.ContextResource;
import net.hostsharing.hsadminng.mapper.StrictMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
@@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@NoSecurityRequirement
public class HsCredentialsContextsController implements LoginContextsApi {
public class HsCredentialsContextsController implements ContextsApi {
@Autowired
private Context context;
@@ -27,11 +27,11 @@ public class HsCredentialsContextsController implements LoginContextsApi {
@Override
@Timed("app.credentials.contexts.getListOfLoginContexts")
public ResponseEntity<List<LoginContextResource>> getListOfLoginContexts(final String assumedRoles) {
public ResponseEntity<List<ContextResource>> getListOfContexts(final String assumedRoles) {
context.assumeRoles(assumedRoles);
final var loginContexts = contextRepo.findAll();
final var result = mapper.mapList(loginContexts, LoginContextResource.class);
final var result = mapper.mapList(loginContexts, ContextResource.class);
return ResponseEntity.ok(result);
}
}

View File

@@ -6,10 +6,10 @@ import java.util.UUID;
import io.micrometer.core.annotation.Timed;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import net.hostsharing.hsadminng.context.Context;
import net.hostsharing.hsadminng.credentials.generated.api.v1.api.LoginCredentialsApi;
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.LoginCredentialsInsertResource;
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.LoginCredentialsPatchResource;
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.LoginCredentialsResource;
import net.hostsharing.hsadminng.credentials.generated.api.v1.api.CredentialsApi;
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.CredentialsInsertResource;
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.CredentialsPatchResource;
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.CredentialsResource;
import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonRbacRepository;
import net.hostsharing.hsadminng.mapper.StrictMapper;
import net.hostsharing.hsadminng.persistence.EntityManagerWrapper;
@@ -19,7 +19,7 @@ import org.springframework.web.bind.annotation.RestController;
@RestController
@SecurityRequirement(name = "casTicket")
public class HsCredentialsController implements LoginCredentialsApi {
public class HsCredentialsController implements CredentialsApi {
@Autowired
private Context context;
@@ -34,72 +34,72 @@ public class HsCredentialsController implements LoginCredentialsApi {
private HsOfficePersonRbacRepository personRepo;
@Autowired
private HsCredentialsRepository loginCredentialsRepo;
private HsCredentialsRepository credentialsRepo;
@Override
@Timed("app.credentials.credentials.getSingleLoginCredentialsByUuid")
public ResponseEntity<LoginCredentialsResource> getSingleLoginCredentialsByUuid(
@Timed("app.credentials.credentials.getSingleCredentialsByUuid")
public ResponseEntity<CredentialsResource> getSingleCredentialsByUuid(
final String assumedRoles,
final UUID loginCredentialsUuid) {
final UUID credentialsUuid) {
context.assumeRoles(assumedRoles);
final var credentials = loginCredentialsRepo.findByUuid(loginCredentialsUuid);
final var result = mapper.map(credentials, LoginCredentialsResource.class);
final var credentials = credentialsRepo.findByUuid(credentialsUuid);
final var result = mapper.map(credentials, CredentialsResource.class);
return ResponseEntity.ok(result);
}
@Override
@Timed("app.credentials.credentials.getListOfLoginCredentialsByPersonUuid")
public ResponseEntity<List<LoginCredentialsResource>> getListOfLoginCredentialsByPersonUuid(
@Timed("app.credentials.credentials.getListOfCredentialsByPersonUuid")
public ResponseEntity<List<CredentialsResource>> getListOfCredentialsByPersonUuid(
final String assumedRoles,
final UUID personUuid
) {
context.assumeRoles(assumedRoles);
final var person = personRepo.findByUuid(personUuid).orElseThrow(); // FIXME: use proper exception
final var credentials = loginCredentialsRepo.findByPerson(person);
final var result = mapper.mapList(credentials, LoginCredentialsResource.class);
final var credentials = credentialsRepo.findByPerson(person);
final var result = mapper.mapList(credentials, CredentialsResource.class);
return ResponseEntity.ok(result);
}
@Override
@Timed("app.credentials.credentials.postNewLoginCredentials")
public ResponseEntity<LoginCredentialsResource> postNewLoginCredentials(
@Timed("app.credentials.credentials.postNewCredentials")
public ResponseEntity<CredentialsResource> postNewCredentials(
final String assumedRoles,
final LoginCredentialsInsertResource body
final CredentialsInsertResource body
) {
context.assumeRoles(assumedRoles);
final var newLoginCredentialsEntity = mapper.map(body, HsCredentialsEntity.class);
final var savedLoginCredentialsEntity = loginCredentialsRepo.save(newLoginCredentialsEntity);
final var newLoginCredentialsResource = mapper.map(savedLoginCredentialsEntity, LoginCredentialsResource.class);
return ResponseEntity.ok(newLoginCredentialsResource);
final var newCredentialsEntity = mapper.map(body, HsCredentialsEntity.class);
final var savedCredentialsEntity = credentialsRepo.save(newCredentialsEntity);
final var newCredentialsResource = mapper.map(savedCredentialsEntity, CredentialsResource.class);
return ResponseEntity.ok(newCredentialsResource);
}
@Override
@Timed("app.credentials.credentials.deleteLoginCredentialsByUuid")
public ResponseEntity<Void> deleteLoginCredentialsByUuid(final String assumedRoles, final UUID loginCredentialsUuid) {
@Timed("app.credentials.credentials.deleteCredentialsByUuid")
public ResponseEntity<Void> deleteCredentialsByUuid(final String assumedRoles, final UUID credentialsUuid) {
context.assumeRoles(assumedRoles);
final var loginCredentialsEntity = em.getReference(HsCredentialsEntity.class, loginCredentialsUuid);
em.remove(loginCredentialsEntity);
final var credentialsEntity = em.getReference(HsCredentialsEntity.class, credentialsUuid);
em.remove(credentialsEntity);
return ResponseEntity.noContent().build();
}
@Override
@Timed("app.credentials.credentials.patchLoginCredentials")
public ResponseEntity<LoginCredentialsResource> patchLoginCredentials(
@Timed("app.credentials.credentials.patchCredentials")
public ResponseEntity<CredentialsResource> patchCredentials(
final String assumedRoles,
final UUID loginCredentialsUuid,
final LoginCredentialsPatchResource body
final UUID credentialsUuid,
final CredentialsPatchResource body
) {
context.assumeRoles(assumedRoles);
final var current = loginCredentialsRepo.findByUuid(loginCredentialsUuid).orElseThrow();
final var current = credentialsRepo.findByUuid(credentialsUuid).orElseThrow();
new HsCredentialsEntityPatcher(em, current).apply(body);
final var saved = loginCredentialsRepo.save(current);
final var mapped = mapper.map(saved, LoginCredentialsResource.class);
final var saved = credentialsRepo.save(current);
final var mapped = mapper.map(saved, CredentialsResource.class);
return ResponseEntity.ok(mapped);
}
}

View File

@@ -26,7 +26,7 @@ import static net.hostsharing.hsadminng.repr.Stringify.stringify;
@AllArgsConstructor
public class HsCredentialsEntity implements BaseEntity<HsCredentialsEntity>, Stringifyable {
protected static Stringify<HsCredentialsEntity> stringify = stringify(HsCredentialsEntity.class, "loginCredentials")
protected static Stringify<HsCredentialsEntity> stringify = stringify(HsCredentialsEntity.class, "credentials")
.withProp(HsCredentialsEntity::isActive)
.withProp(HsCredentialsEntity::getEmailAddress)
.withProp(HsCredentialsEntity::getTwoFactorAuth)

View File

@@ -1,7 +1,7 @@
package net.hostsharing.hsadminng.credentials;
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.LoginContextResource;
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.LoginCredentialsPatchResource;
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.ContextResource;
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.CredentialsPatchResource;
import net.hostsharing.hsadminng.mapper.EntityPatcher;
import net.hostsharing.hsadminng.mapper.OptionalFromJson;
@@ -11,7 +11,7 @@ import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class HsCredentialsEntityPatcher implements EntityPatcher<LoginCredentialsPatchResource> {
public class HsCredentialsEntityPatcher implements EntityPatcher<CredentialsPatchResource> {
private final EntityManager em;
private final HsCredentialsEntity entity;
@@ -22,7 +22,7 @@ public class HsCredentialsEntityPatcher implements EntityPatcher<LoginCredential
}
@Override
public void apply(final LoginCredentialsPatchResource resource) {
public void apply(final CredentialsPatchResource resource) {
if ( resource.getActive() != null ) {
entity.setActive(resource.getActive());
}
@@ -40,11 +40,11 @@ public class HsCredentialsEntityPatcher implements EntityPatcher<LoginCredential
}
public void syncLoginContextEntities(
List<LoginContextResource> resources,
List<ContextResource> resources,
Set<HsCredentialsContextRealEntity> entities
) {
final var resourceUuids = resources.stream()
.map(LoginContextResource::getUuid)
.map(ContextResource::getUuid)
.collect(Collectors.toSet());
final var entityUuids = entities.stream()
@@ -61,7 +61,7 @@ public class HsCredentialsEntityPatcher implements EntityPatcher<LoginCredential
throw new EntityNotFoundException(
HsCredentialsContextRealEntity.class.getName() + " with uuid " + resource.getUuid() + " not found.");
}
if (!existingContextEntity.getType().equals(resource.getType().name()) &&
if (!existingContextEntity.getType().equals(resource.getType()) &&
!existingContextEntity.getQualifier().equals(resource.getQualifier())) {
// FIXME: i18n
throw new EntityNotFoundException("existing " + existingContextEntity + " does not match given resource " + resource);

View File

@@ -17,7 +17,7 @@ paths:
# Credentials
/api/hs/credentials/credentials:
$ref: "api-paths.yaml"
$ref: "credentials.yaml"
/api/hs/credentials/credentials/{credentialsUuid}:
$ref: "credentials-with-uuid.yaml"

View File

@@ -28,7 +28,7 @@ components:
contexts:
type: array
items:
$ref: '-context-schemas.yaml#/components/schemas/Context'
$ref: 'context-schemas.yaml#/components/schemas/Context'
required:
- uuid
- active
@@ -55,7 +55,7 @@ components:
contexts:
type: array
items:
$ref: '-context-schemas.yaml#/components/schemas/Context'
$ref: 'context-schemas.yaml#/components/schemas/Context'
additionalProperties: false
CredentialsInsert:
@@ -83,7 +83,7 @@ components:
contexts:
type: array
items:
$ref: '-context-schemas.yaml#/components/schemas/Context'
$ref: 'context-schemas.yaml#/components/schemas/Context'
required:
- uuid
- active