rename package (+schema etc.) credentials to accounts (#185)
Co-authored-by: Michael Hoennig <michael@hoennig.de> Reviewed-on: https://dev.hostsharing.net/hostsharing/hs.hsadmin.ng/pulls/185 Reviewed-by: Timotheus Pokorra <timotheus.pokorra@hostsharing.net>
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
package net.hostsharing.hsadminng.credentials;
|
||||
package net.hostsharing.hsadminng.hs.accounts;
|
||||
|
||||
import jakarta.persistence.EntityManager;
|
||||
import jakarta.persistence.EntityNotFoundException;
|
||||
import net.hostsharing.hsadminng.config.MessageTranslator;
|
||||
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.ContextResource;
|
||||
import net.hostsharing.hsadminng.accounts.generated.api.v1.model.ContextResource;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.hostsharing.hsadminng.credentials;
|
||||
package net.hostsharing.hsadminng.hs.accounts;
|
||||
|
||||
import jakarta.persistence.Column;
|
||||
import jakarta.persistence.GeneratedValue;
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.hostsharing.hsadminng.credentials;
|
||||
package net.hostsharing.hsadminng.hs.accounts;
|
||||
|
||||
import jakarta.persistence.AttributeOverride;
|
||||
import jakarta.persistence.AttributeOverrides;
|
||||
@@ -24,7 +24,7 @@ import static net.hostsharing.hsadminng.rbac.generator.RbacSpec.WITHOUT_IMPLICIT
|
||||
import static net.hostsharing.hsadminng.rbac.generator.RbacSpec.rbacViewFor;
|
||||
|
||||
@Entity
|
||||
@Table(schema = "hs_credentials", name = "context") // TODO_impl: RBAC rules for _rv do not yet work properly
|
||||
@Table(schema = "hs_accounts", name = "context") // TODO_impl: RBAC rules for _rv do not yet work properly
|
||||
@SuperBuilder(toBuilder = true)
|
||||
@Getter
|
||||
@Setter
|
||||
@@ -50,6 +50,6 @@ public class HsCredentialsContextRbacEntity extends HsCredentialsContext {
|
||||
|
||||
// TODO_impl: RBAC rules for _rv do not yet work properly (remove the X)
|
||||
public static void mainX(String[] args) throws IOException {
|
||||
rbacX().generateWithBaseFileName("9-hs-global/950-credentials/9513-hs-credentials-rbac");
|
||||
rbacX().generateWithBaseFileName("9-hs-global/950-accounts/9513-hs-credentials-rbac");
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.hostsharing.hsadminng.credentials;
|
||||
package net.hostsharing.hsadminng.hs.accounts;
|
||||
|
||||
import io.micrometer.core.annotation.Timed;
|
||||
import org.springframework.data.repository.Repository;
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.hostsharing.hsadminng.credentials;
|
||||
package net.hostsharing.hsadminng.hs.accounts;
|
||||
|
||||
import jakarta.persistence.AttributeOverride;
|
||||
import jakarta.persistence.AttributeOverrides;
|
||||
@@ -11,7 +11,7 @@ import lombok.Setter;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
@Entity
|
||||
@Table(schema = "hs_credentials", name = "context")
|
||||
@Table(schema = "hs_accounts", name = "context")
|
||||
@SuperBuilder(toBuilder = true)
|
||||
@Getter
|
||||
@Setter
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.hostsharing.hsadminng.credentials;
|
||||
package net.hostsharing.hsadminng.hs.accounts;
|
||||
|
||||
import io.micrometer.core.annotation.Timed;
|
||||
import org.springframework.data.repository.Repository;
|
||||
@@ -1,12 +1,12 @@
|
||||
package net.hostsharing.hsadminng.credentials;
|
||||
package net.hostsharing.hsadminng.hs.accounts;
|
||||
|
||||
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.ContextsApi;
|
||||
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.ContextResource;
|
||||
import net.hostsharing.hsadminng.accounts.generated.api.v1.api.ContextsApi;
|
||||
import net.hostsharing.hsadminng.accounts.generated.api.v1.model.ContextResource;
|
||||
import net.hostsharing.hsadminng.mapper.StrictMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.hostsharing.hsadminng.credentials;
|
||||
package net.hostsharing.hsadminng.hs.accounts;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneOffset;
|
||||
@@ -10,11 +10,11 @@ import io.micrometer.core.annotation.Timed;
|
||||
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
|
||||
import net.hostsharing.hsadminng.config.MessageTranslator;
|
||||
import net.hostsharing.hsadminng.context.Context;
|
||||
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.credentials.generated.api.v1.model.HsOfficePersonResource;
|
||||
import net.hostsharing.hsadminng.accounts.generated.api.v1.api.CredentialsApi;
|
||||
import net.hostsharing.hsadminng.accounts.generated.api.v1.model.CredentialsInsertResource;
|
||||
import net.hostsharing.hsadminng.accounts.generated.api.v1.model.CredentialsPatchResource;
|
||||
import net.hostsharing.hsadminng.accounts.generated.api.v1.model.CredentialsResource;
|
||||
import net.hostsharing.hsadminng.accounts.generated.api.v1.model.HsOfficePersonResource;
|
||||
import net.hostsharing.hsadminng.hs.office.person.HsOfficePersonRbacRepository;
|
||||
import net.hostsharing.hsadminng.mapper.StrictMapper;
|
||||
import net.hostsharing.hsadminng.persistence.EntityManagerWrapper;
|
||||
@@ -118,7 +118,7 @@ public class HsCredentialsController implements CredentialsApi {
|
||||
// return the new credentials as a resource
|
||||
final var uri =
|
||||
MvcUriComponentsBuilder.fromController(getClass())
|
||||
.path("/api/hs/credentials/credentials/{id}")
|
||||
.path("/api/hs/accounts/credentials/{id}")
|
||||
.buildAndExpand(newCredentialsEntity.getUuid())
|
||||
.toUri();
|
||||
final var newCredentialsResource = mapper.map(
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.hostsharing.hsadminng.credentials;
|
||||
package net.hostsharing.hsadminng.hs.accounts;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import lombok.*;
|
||||
@@ -19,7 +19,7 @@ import static jakarta.persistence.CascadeType.REFRESH;
|
||||
import static net.hostsharing.hsadminng.repr.Stringify.stringify;
|
||||
|
||||
@Entity
|
||||
@Table(schema = "hs_credentials", name = "credentials")
|
||||
@Table(schema = "hs_accounts", name = "credentials")
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
@@ -79,7 +79,7 @@ public class HsCredentialsEntity implements BaseEntity<HsCredentialsEntity>, Str
|
||||
|
||||
@OneToMany(fetch = FetchType.LAZY, cascade = { MERGE, REFRESH }, orphanRemoval = true)
|
||||
@JoinTable(
|
||||
name = "context_mapping", schema = "hs_credentials",
|
||||
name = "context_mapping", schema = "hs_accounts",
|
||||
joinColumns = @JoinColumn(name = "credentials_uuid", referencedColumnName = "uuid"),
|
||||
inverseJoinColumns = @JoinColumn(name = "context_uuid", referencedColumnName = "uuid")
|
||||
)
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.hostsharing.hsadminng.credentials;
|
||||
package net.hostsharing.hsadminng.hs.accounts;
|
||||
|
||||
import net.hostsharing.hsadminng.credentials.generated.api.v1.model.CredentialsPatchResource;
|
||||
import net.hostsharing.hsadminng.accounts.generated.api.v1.model.CredentialsPatchResource;
|
||||
import net.hostsharing.hsadminng.mapper.EntityPatcher;
|
||||
import net.hostsharing.hsadminng.mapper.OptionalFromJson;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package net.hostsharing.hsadminng.credentials;
|
||||
package net.hostsharing.hsadminng.hs.accounts;
|
||||
|
||||
import io.micrometer.core.annotation.Timed;
|
||||
import net.hostsharing.hsadminng.hs.office.person.HsOfficePerson;
|
||||
@@ -1,7 +1,7 @@
|
||||
openapi-processor-mapping: v2
|
||||
|
||||
options:
|
||||
package-name: net.hostsharing.hsadminng.credentials.generated.api.v1
|
||||
package-name: net.hostsharing.hsadminng.accounts.generated.api.v1
|
||||
model-name-suffix: Resource
|
||||
bean-validation: true
|
||||
|
||||
@@ -13,5 +13,5 @@ map:
|
||||
- type: string:uuid => java.util.UUID
|
||||
|
||||
paths:
|
||||
/api/hs/credentials/credentials/{credentialsUuid}:
|
||||
/api/hs/accounts/credentials/{credentialsUuid}:
|
||||
null: org.openapitools.jackson.nullable.JsonNullable
|
||||
@@ -10,18 +10,18 @@ paths:
|
||||
|
||||
# Contexts
|
||||
|
||||
/api/hs/credentials/contexts:
|
||||
/api/hs/accounts/contexts:
|
||||
$ref: "contexts.yaml"
|
||||
|
||||
|
||||
# Credentials
|
||||
|
||||
/api/hs/credentials/credentials/{credentialsUuid}/used:
|
||||
/api/hs/accounts/credentials/{credentialsUuid}/used:
|
||||
$ref: "credentials-with-uuid-used.yaml"
|
||||
|
||||
/api/hs/credentials/credentials/{credentialsUuid}:
|
||||
/api/hs/accounts/credentials/{credentialsUuid}:
|
||||
$ref: "credentials-with-uuid.yaml"
|
||||
|
||||
/api/hs/credentials/credentials:
|
||||
/api/hs/accounts/credentials:
|
||||
$ref: "credentials.yaml"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
get:
|
||||
summary: Returns a list of all credentials.
|
||||
description: Returns the list of all credentials which are visible to the current subject or any of it's assumed roles.
|
||||
description: Returns the list of all credentials which are visible to the current subject or any of it's assumed roles.
|
||||
tags:
|
||||
- credentials
|
||||
operationId: getListOfCredentialsByPersonUuid
|
||||
@@ -4,5 +4,5 @@
|
||||
-- ============================================================================
|
||||
--changeset michael.hoennig:hs-credentials-SCHEMA endDelimiter:--//
|
||||
-- ----------------------------------------------------------------------------
|
||||
CREATE SCHEMA hs_credentials;
|
||||
CREATE SCHEMA hs_accounts;
|
||||
--//
|
||||
@@ -5,7 +5,7 @@
|
||||
--changeset michael.hoennig:hs-credentials-CREDENTIALS-TABLE endDelimiter:--//
|
||||
-- ----------------------------------------------------------------------------
|
||||
|
||||
create table hs_credentials.credentials
|
||||
create table hs_accounts.credentials
|
||||
(
|
||||
uuid uuid PRIMARY KEY references rbac.subject (uuid) initially deferred,
|
||||
version int not null default 0,
|
||||
@@ -30,7 +30,7 @@ create table hs_credentials.credentials
|
||||
--changeset michael.hoennig:hs-credentials-context-CONTEXT-TABLE endDelimiter:--//
|
||||
-- ----------------------------------------------------------------------------
|
||||
|
||||
create table hs_credentials.context
|
||||
create table hs_accounts.context
|
||||
(
|
||||
uuid uuid PRIMARY KEY,
|
||||
version int not null default 0,
|
||||
@@ -46,47 +46,47 @@ create table hs_credentials.context
|
||||
-- ============================================================================
|
||||
--changeset michael.hoennig:hs-credentials-CONTEXT-IMMUTABLE-TRIGGER endDelimiter:--//
|
||||
-- ----------------------------------------------------------------------------
|
||||
CREATE OR REPLACE FUNCTION hs_credentials.prevent_context_update()
|
||||
CREATE OR REPLACE FUNCTION hs_accounts.prevent_context_update()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
RAISE EXCEPTION 'Updates to hs_credentials.context are not allowed.';
|
||||
RAISE EXCEPTION 'Updates to hs_accounts.context are not allowed.';
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
-- Trigger to enforce immutability
|
||||
CREATE TRIGGER context_immutable_trigger
|
||||
BEFORE UPDATE ON hs_credentials.context
|
||||
FOR EACH ROW EXECUTE FUNCTION hs_credentials.prevent_context_update();
|
||||
BEFORE UPDATE ON hs_accounts.context
|
||||
FOR EACH ROW EXECUTE FUNCTION hs_accounts.prevent_context_update();
|
||||
--//
|
||||
|
||||
|
||||
-- ============================================================================
|
||||
--changeset michael.hoennig:hs_credentials-CONTEXT-MAPPING endDelimiter:--//
|
||||
--changeset michael.hoennig:hs_accounts-CONTEXT-MAPPING endDelimiter:--//
|
||||
-- ----------------------------------------------------------------------------
|
||||
|
||||
create table hs_credentials.context_mapping
|
||||
create table hs_accounts.context_mapping
|
||||
(
|
||||
uuid uuid PRIMARY KEY DEFAULT uuid_generate_v4(),
|
||||
credentials_uuid uuid references hs_credentials.credentials(uuid) ON DELETE CASCADE,
|
||||
context_uuid uuid references hs_credentials.context(uuid) ON DELETE RESTRICT
|
||||
credentials_uuid uuid references hs_accounts.credentials(uuid) ON DELETE CASCADE,
|
||||
context_uuid uuid references hs_accounts.context(uuid) ON DELETE RESTRICT
|
||||
);
|
||||
--//
|
||||
|
||||
|
||||
-- ============================================================================
|
||||
--changeset michael.hoennig:hs-hs_credentials-JOURNALS endDelimiter:--//
|
||||
--changeset michael.hoennig:hs-hs_accounts-JOURNALS endDelimiter:--//
|
||||
-- ----------------------------------------------------------------------------
|
||||
|
||||
call base.create_journal('hs_credentials.context_mapping');
|
||||
call base.create_journal('hs_credentials.context');
|
||||
call base.create_journal('hs_credentials.credentials');
|
||||
call base.create_journal('hs_accounts.context_mapping');
|
||||
call base.create_journal('hs_accounts.context');
|
||||
call base.create_journal('hs_accounts.credentials');
|
||||
--//
|
||||
|
||||
|
||||
-- ============================================================================
|
||||
--changeset michael.hoennig:hs_credentials-HISTORICIZATION endDelimiter:--//
|
||||
--changeset michael.hoennig:hs_accounts-HISTORICIZATION endDelimiter:--//
|
||||
-- ----------------------------------------------------------------------------
|
||||
call base.tx_create_historicization('hs_credentials.context_mapping');
|
||||
call base.tx_create_historicization('hs_credentials.context');
|
||||
call base.tx_create_historicization('hs_credentials.credentials');
|
||||
call base.tx_create_historicization('hs_accounts.context_mapping');
|
||||
call base.tx_create_historicization('hs_accounts.context');
|
||||
call base.tx_create_historicization('hs_accounts.credentials');
|
||||
--//
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
|
||||
-- ============================================================================
|
||||
--changeset michael.hoennig:hs_credentials-credentials-TEST-DATA context:!without-test-data endDelimiter:--//
|
||||
--changeset michael.hoennig:hs_accounts-credentials-TEST-DATA context:!without-test-data endDelimiter:--//
|
||||
-- ----------------------------------------------------------------------------
|
||||
|
||||
do language plpgsql $$
|
||||
@@ -13,9 +13,9 @@ declare
|
||||
superuserFranSubjectUuid uuid;
|
||||
personFranUuid uuid;
|
||||
|
||||
context_HSADMIN_prod hs_credentials.context;
|
||||
context_SSH_internal hs_credentials.context;
|
||||
context_MATRIX_internal hs_credentials.context;
|
||||
context_HSADMIN_prod hs_accounts.context;
|
||||
context_SSH_internal hs_accounts.context;
|
||||
context_MATRIX_internal hs_accounts.context;
|
||||
|
||||
begin
|
||||
call base.defineContext('creating booking-project test-data', null, 'superuser-alex@hostsharing.net', 'rbac.global#global:ADMIN');
|
||||
@@ -26,13 +26,13 @@ begin
|
||||
personFranUuid = (SELECT uuid FROM hs_office.person WHERE givenName='Fran');
|
||||
|
||||
-- Add test contexts
|
||||
INSERT INTO hs_credentials.context (uuid, type, qualifier) VALUES
|
||||
INSERT INTO hs_accounts.context (uuid, type, qualifier) VALUES
|
||||
('11111111-1111-1111-1111-111111111111', 'HSADMIN', 'prod')
|
||||
RETURNING * INTO context_HSADMIN_prod;
|
||||
INSERT INTO hs_credentials.context (uuid, type, qualifier) VALUES
|
||||
INSERT INTO hs_accounts.context (uuid, type, qualifier) VALUES
|
||||
('22222222-2222-2222-2222-222222222222', 'SSH', 'internal')
|
||||
RETURNING * INTO context_SSH_internal;
|
||||
INSERT INTO hs_credentials.context (uuid, type, qualifier) VALUES
|
||||
INSERT INTO hs_accounts.context (uuid, type, qualifier) VALUES
|
||||
('33333333-3333-3333-3333-333333333333', 'MATRIX', 'internal')
|
||||
RETURNING * INTO context_MATRIX_internal;
|
||||
|
||||
@@ -47,16 +47,16 @@ begin
|
||||
-- call rbac.grantPermissionToRole(
|
||||
-- rbac.createPermission(context_MATRIX_internal.uuid, 'SELECT'),
|
||||
-- rbac.global_ADMIN());
|
||||
-- call rbac.grantRoleToRole(hs_credentials.context_REFERRER(context_SSH_internal), rbac.global_ADMIN());
|
||||
-- call rbac.grantRoleToRole(hs_credentials.context_REFERRER(context_MATRIX_internal), rbac.global_ADMIN());
|
||||
-- call rbac.grantRoleToRole(hs_accounts.context_REFERRER(context_SSH_internal), rbac.global_ADMIN());
|
||||
-- call rbac.grantRoleToRole(hs_accounts.context_REFERRER(context_MATRIX_internal), rbac.global_ADMIN());
|
||||
|
||||
-- Add test credentials (linking to assumed rbac.subject UUIDs)
|
||||
INSERT INTO hs_credentials.credentials (uuid, version, person_uuid, active, global_uid, global_gid, onboarding_token, totp_secret, phone_password, email_address, sms_number) VALUES
|
||||
INSERT INTO hs_accounts.credentials (uuid, version, person_uuid, active, global_uid, global_gid, onboarding_token, totp_secret, phone_password, email_address, sms_number) VALUES
|
||||
( superuserAlexSubjectUuid, 0, personAlexUuid, true, 1001, 1001, 'token-abc', 'otp-secret-1', 'phone-pw-1', 'alex@example.com', '111-222-3333'),
|
||||
( superuserFranSubjectUuid, 0, personFranUuid, true, 1002, 1002, 'token-def', 'otp-secret-2', 'phone-pw-2', 'fran@example.com', '444-555-6666');
|
||||
|
||||
-- Map credentials to contexts
|
||||
INSERT INTO hs_credentials.context_mapping (credentials_uuid, context_uuid) VALUES
|
||||
INSERT INTO hs_accounts.context_mapping (credentials_uuid, context_uuid) VALUES
|
||||
(superuserAlexSubjectUuid, '11111111-1111-1111-1111-111111111111'), -- HSADMIN context
|
||||
(superuserFranSubjectUuid, '11111111-1111-1111-1111-111111111111'), -- HSADMIN context
|
||||
(superuserAlexSubjectUuid, '22222222-2222-2222-2222-222222222222'), -- SSH context
|
||||
@@ -103,7 +103,7 @@ databaseChangeLog:
|
||||
file: db/changelog/5-hs-office/502-person/5028-hs-office-person-test-data.sql
|
||||
context: "!without-test-data"
|
||||
- include:
|
||||
file: db/changelog/5-hs-office/502-person/5028-hs-office-person-test-data-for-credentials.sql
|
||||
file: db/changelog/5-hs-office/502-person/5028-hs-office-person-test-data-for-accounts.sql
|
||||
context: "!without-test-data"
|
||||
- include:
|
||||
file: db/changelog/5-hs-office/503-relation/5030-hs-office-relation.sql
|
||||
@@ -218,16 +218,16 @@ databaseChangeLog:
|
||||
context: "!only-prod-schema"
|
||||
|
||||
- include:
|
||||
file: db/changelog/9-hs-global/950-credentials/9500-hs-credentials-schema.sql
|
||||
file: db/changelog/9-hs-global/950-accounts/9500-hs-accounts-schema.sql
|
||||
context: "!only-prod-schema"
|
||||
- include:
|
||||
file: db/changelog/9-hs-global/950-credentials/9510-hs-credentials.sql
|
||||
file: db/changelog/9-hs-global/950-accounts/9510-hs-accounts.sql
|
||||
context: "!only-prod-schema"
|
||||
# TODO_impl: RBAC rules for _rv do not yet work properly
|
||||
# - include:
|
||||
# file: db/changelog/9-hs-global/950-credentials/9513-hs-credentials-rbac.sql
|
||||
# file: db/changelog/9-hs-global/950-accounts/9513-hs-accounts-context-rbac.sql
|
||||
- include:
|
||||
file: db/changelog/9-hs-global/950-credentials/9519-hs-credentials-test-data.sql
|
||||
file: db/changelog/9-hs-global/950-accounts/9519-hs-accounts-test-data.sql
|
||||
context: "!only-prod-schema and !without-test-data"
|
||||
|
||||
- include:
|
||||
|
||||
Reference in New Issue
Block a user