diff --git a/.env.unix.example b/.env.unix.example index 5a9779d9ae762e517d44e52d969aadab9c485f93..dcb45d886a4f4c90de85959a7874b54201c2eb80 100644 --- a/.env.unix.example +++ b/.env.unix.example @@ -9,6 +9,9 @@ SEARCH_PASSWORD=admin METADATA_DB=fda METADATA_USERNAME=root METADATA_PASSWORD=dbrepo +AUTH_DB=keycloak +AUTH_USERNAME=root +AUTH_PASSWORD=dbrepo BROKER_ENDPOINT=http://broker-service:15672 BROKER_USERNAME=fda BROKER_PASSWORD=fda diff --git a/dbrepo-authentication-service/Dockerfile b/dbrepo-authentication-service/Dockerfile index 354ec042ef658b362942ae7d57579c41c44dafe4..12cc75bde91d0b0c2a9652be3052debe1c18b9c6 100644 --- a/dbrepo-authentication-service/Dockerfile +++ b/dbrepo-authentication-service/Dockerfile @@ -36,13 +36,14 @@ WORKDIR /app COPY ./healthcheck.sh ./healthcheck.sh -ENV METADATA_USERNAME=root -ENV METADATA_PASSWORD=dbrepo +ENV AUTH_DB=keycloak +ENV AUTH_USERNAME=root +ENV AUTH_PASSWORD=dbrepo ENV KC_DB=mariadb -ENV KC_DB_URL=jdbc:mariadb://metadata-db/fda -ENV KC_DB_USERNAME=${METADATA_USERNAME} -ENV KC_DB_PASSWORD=${METADATA_PASSWORD} +ENV KC_DB_URL=jdbc:mariadb://auth-db/${AUTH_DB} +ENV KC_DB_USERNAME=${AUTH_USERNAME} +ENV KC_DB_PASSWORD=${AUTH_PASSWORD} ENV KC_HOSTNAME_STRICT_HTTPS=false ENV KC_HOSTNAME_PATH=/api/auth ENV KC_HOSTNAME_ADMIN_URL=http://localhost/api/auth diff --git a/dbrepo-metadata-db/setup-schema.sql b/dbrepo-metadata-db/setup-schema.sql index a63d05b837d0200a53505d7165797020303e78fb..8da039c555a4deeb7a90c1b352633ce85ccd30c6 100644 --- a/dbrepo-metadata-db/setup-schema.sql +++ b/dbrepo-metadata-db/setup-schema.sql @@ -1,5 +1,21 @@ BEGIN; +CREATE TABLE IF NOT EXISTS `fda`.`mdb_users` +( + id character varying(36) NOT NULL, + username character varying(255) NOT NULL, + firstname character varying(255), + lastname character varying(255), + email character varying(255) NOT NULL, + orcid character varying(255), + affiliation character varying(255), + mariadb_password character varying(255) NOT NULL, + theme_dark boolean, + PRIMARY KEY (id), + UNIQUE (username), + UNIQUE (email) +) WITH SYSTEM VERSIONING; + CREATE TABLE IF NOT EXISTS `fda`.`mdb_images` ( id bigint NOT NULL AUTO_INCREMENT, @@ -32,13 +48,13 @@ CREATE TABLE IF NOT EXISTS `fda`.`mdb_images_date` CREATE TABLE IF NOT EXISTS `fda`.`mdb_containers` ( id bigint NOT NULL AUTO_INCREMENT, - INTERNAL_NAME character varying(255) NOT NULL, - NAME character varying(255) NOT NULL, - HOST character varying(255) NOT NULL, - PORT integer NOT NULL, + internal_name character varying(255) NOT NULL, + name character varying(255) NOT NULL, + host character varying(255) NOT NULL, + port integer NOT NULL, image_id bigint NOT NULL, created timestamp NOT NULL DEFAULT NOW(), - LAST_MODIFIED timestamp, + last_modified timestamp, privileged_username character varying(255) NOT NULL, privileged_password character varying(255) NOT NULL, PRIMARY KEY (id), @@ -48,18 +64,18 @@ CREATE TABLE IF NOT EXISTS `fda`.`mdb_containers` CREATE TABLE IF NOT EXISTS `fda`.`mdb_data` ( ID bigint NOT NULL AUTO_INCREMENT, - PROVENANCE TEXT, - FileEncoding TEXT, - FileType VARCHAR(100), - Version TEXT, - Seperator TEXT, + PROVENANCE text, + FileEncoding text, + FileType character varying(100), + Version text, + Seperator text, PRIMARY KEY (ID) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `fda`.`mdb_licenses` ( identifier character varying(255) NOT NULL, - uri TEXT NOT NULL, + uri text NOT NULL, PRIMARY KEY (identifier), UNIQUE (uri) ) WITH SYSTEM VERSIONING; @@ -71,16 +87,19 @@ CREATE TABLE IF NOT EXISTS `fda`.`mdb_databases` name character varying(255) NOT NULL, internal_name character varying(255) NOT NULL, exchange_name character varying(255) NOT NULL, - description TEXT, + description text, engine character varying(20), - is_public BOOLEAN NOT NULL DEFAULT TRUE, - created_by character varying(255), - owned_by character varying(255), - contact_person character varying(255), + is_public boolean NOT NULL DEFAULT TRUE, + created_by character varying(36), + owned_by character varying(36), + contact_person character varying(36), created timestamp NOT NULL DEFAULT NOW(), last_modified timestamp, PRIMARY KEY (id), - FOREIGN KEY (cid) REFERENCES mdb_containers (id) /* currently we only support one-to-one */ + FOREIGN KEY (cid) REFERENCES mdb_containers (id) /* currently we only support one-to-one */, + FOREIGN KEY (created_by) REFERENCES mdb_users (id), + FOREIGN KEY (owned_by) REFERENCES mdb_users (id), + FOREIGN KEY (contact_person) REFERENCES mdb_users (id) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `fda`.`mdb_databases_subjects` @@ -110,11 +129,13 @@ CREATE TABLE IF NOT EXISTS `fda`.`mdb_tables` Version TEXT, created timestamp NOT NULL DEFAULT NOW(), versioned boolean not null default true, - created_by character varying(255) NOT NULL, - owned_by character varying(255) NOT NULL, + created_by character varying(36) NOT NULL, + owned_by character varying(36) NOT NULL, last_modified timestamp, PRIMARY KEY (ID), - FOREIGN KEY (tDBID) REFERENCES mdb_databases (id) + FOREIGN KEY (tDBID) REFERENCES mdb_databases (id), + FOREIGN KEY (created_by) REFERENCES mdb_users (id), + FOREIGN KEY (owned_by) REFERENCES mdb_users (id) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `fda`.`mdb_columns` @@ -159,19 +180,17 @@ CREATE TABLE IF NOT EXISTS `fda`.`mdb_columns_sets` CREATE TABLE IF NOT EXISTS `fda`.`mdb_columns_nom` ( - cDBID bigint, tID bigint, cID bigint, maxlength INTEGER, last_modified timestamp, created timestamp NOT NULL DEFAULT NOW(), - FOREIGN KEY (cDBID, tID, cID) REFERENCES mdb_columns (cDBID, tID, ID), - PRIMARY KEY (cDBID, tID, cID) + FOREIGN KEY (tID, cID) REFERENCES mdb_columns (tID, ID), + PRIMARY KEY (tID, cID) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `fda`.`mdb_columns_num` ( - cDBID bigint, tID bigint, cID bigint, SIunit TEXT, @@ -183,21 +202,20 @@ CREATE TABLE IF NOT EXISTS `fda`.`mdb_columns_num` -- Histogram INTEGER[], last_modified timestamp, created timestamp NOT NULL DEFAULT NOW(), - FOREIGN KEY (cDBID, tID, cID) REFERENCES mdb_columns (cDBID, tID, ID), - PRIMARY KEY (cDBID, tID, cID) + FOREIGN KEY (tID, cID) REFERENCES mdb_columns (tID, ID), + PRIMARY KEY (tID, cID) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `fda`.`mdb_columns_cat` ( - cDBID bigint, tID bigint, cID bigint, num_cat INTEGER, -- cat_array TEXT[], last_modified timestamp, created timestamp NOT NULL DEFAULT NOW(), - FOREIGN KEY (cDBID, tID, cID) REFERENCES mdb_columns (cDBID, tID, ID), - PRIMARY KEY (cDBID, tID, cID) + FOREIGN KEY (tID, cID) REFERENCES mdb_columns (tID, ID), + PRIMARY KEY (tID, cID) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `fda`.`mdb_constraints_foreign_key` @@ -255,26 +273,28 @@ CREATE TABLE IF NOT EXISTS `fda`.`mdb_constraints_checks` CREATE TABLE IF NOT EXISTS `fda`.`mdb_concepts` ( - id bigint NOT NULL AUTO_INCREMENT, - uri text not null, - name VARCHAR(255) null, - description TEXT null, - created timestamp NOT NULL DEFAULT NOW(), - created_by character varying(255), + id bigint NOT NULL AUTO_INCREMENT, + uri text not null, + name VARCHAR(255) null, + description TEXT null, + created timestamp NOT NULL DEFAULT NOW(), + created_by character varying(36) NOT NULL, PRIMARY KEY (id), - UNIQUE (uri) + UNIQUE (uri), + FOREIGN KEY (created_by) REFERENCES mdb_users (id) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `fda`.`mdb_units` ( - id bigint NOT NULL AUTO_INCREMENT, - uri text not null, - name VARCHAR(255) null, - description TEXT null, - created timestamp NOT NULL DEFAULT NOW(), - created_by character varying(255), + id bigint NOT NULL AUTO_INCREMENT, + uri text not null, + name VARCHAR(255) null, + description TEXT null, + created timestamp NOT NULL DEFAULT NOW(), + created_by character varying(36) NOT NULL, PRIMARY KEY (id), - UNIQUE (uri) + UNIQUE (uri), + FOREIGN KEY (created_by) REFERENCES mdb_users (id) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `fda`.`mdb_columns_concepts` @@ -297,21 +317,22 @@ CREATE TABLE IF NOT EXISTS `fda`.`mdb_columns_units` CREATE TABLE IF NOT EXISTS `fda`.`mdb_view` ( - id bigint NOT NULL AUTO_INCREMENT, - vdbid bigint NOT NULL, - vName VARCHAR(255) NOT NULL, - internal_name VARCHAR(255) NOT NULL, - Query TEXT NOT NULL, - query_hash VARCHAR(255) NOT NULL, - Public BOOLEAN NOT NULL, + id bigint NOT NULL AUTO_INCREMENT, + vdbid bigint NOT NULL, + vName VARCHAR(255) NOT NULL, + internal_name VARCHAR(255) NOT NULL, + Query TEXT NOT NULL, + query_hash VARCHAR(255) NOT NULL, + Public BOOLEAN NOT NULL, NumCols INTEGER, NumRows INTEGER, - InitialView BOOLEAN NOT NULL, - created timestamp NOT NULL DEFAULT NOW(), + InitialView BOOLEAN NOT NULL, + created timestamp NOT NULL DEFAULT NOW(), last_modified timestamp, - created_by character varying(255) NOT NULL, + created_by character varying(36) NOT NULL, PRIMARY KEY (id), - FOREIGN KEY (vdbid) REFERENCES mdb_databases (id) + FOREIGN KEY (vdbid) REFERENCES mdb_databases (id), + FOREIGN KEY (created_by) REFERENCES mdb_users (id) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `fda`.`mdb_banner_messages` @@ -328,17 +349,18 @@ CREATE TABLE IF NOT EXISTS `fda`.`mdb_banner_messages` CREATE TABLE IF NOT EXISTS `fda`.`mdb_ontologies` ( - id bigint NOT NULL AUTO_INCREMENT, - prefix VARCHAR(8) NOT NULL, - uri TEXT NOT NULL, + id bigint NOT NULL AUTO_INCREMENT, + prefix VARCHAR(8) NOT NULL, + uri TEXT NOT NULL, uri_pattern TEXT, - sparql_endpoint TEXT NULL, + sparql_endpoint TEXT NULL, last_modified timestamp, - created timestamp NOT NULL DEFAULT NOW(), - created_by character varying(255) NULL, + created timestamp NOT NULL DEFAULT NOW(), + created_by character varying(36) NOT NULL, UNIQUE (prefix), UNIQUE (uri), - PRIMARY KEY (id) + PRIMARY KEY (id), + FOREIGN KEY (created_by) REFERENCES mdb_users (id) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `fda`.`mdb_view_columns` @@ -373,11 +395,12 @@ CREATE TABLE IF NOT EXISTS `fda`.`mdb_identifiers` result_number bigint, doi VARCHAR(255), created timestamp NOT NULL DEFAULT NOW(), - created_by character varying(255) NOT NULL, + created_by character varying(36) NOT NULL, last_modified timestamp, PRIMARY KEY (id), /* must be a single id from persistent identifier concept */ FOREIGN KEY (dbid) REFERENCES mdb_databases (id), - UNIQUE (dbid, qid) + UNIQUE (dbid, qid), + FOREIGN KEY (created_by) REFERENCES mdb_users (id) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `fda`.`mdb_identifier_licenses` @@ -462,11 +485,12 @@ CREATE TABLE IF NOT EXISTS `fda`.`mdb_feed` ( fDBID bigint, fID bigint, - fUserId character varying(255) not null, + fUserId character varying(36) not null, fDataID bigint REFERENCES mdb_data (ID), - created timestamp NOT NULL DEFAULT NOW(), + created timestamp NOT NULL DEFAULT NOW(), PRIMARY KEY (fDBID, fID, fUserId, fDataID), - FOREIGN KEY (fDBID, fID) REFERENCES mdb_tables (tDBID, ID) + FOREIGN KEY (fDBID, fID) REFERENCES mdb_tables (tDBID, ID), + FOREIGN KEY (fUserId) REFERENCES mdb_users (id) ) WITH SYSTEM VERSIONING; CREATE TABLE IF NOT EXISTS `fda`.`mdb_update` @@ -490,11 +514,12 @@ CREATE TABLE IF NOT EXISTS `fda`.`mdb_access` CREATE TABLE IF NOT EXISTS `fda`.`mdb_have_access` ( - user_id character varying(255) NOT NULL, + user_id character varying(36) NOT NULL, database_id bigint REFERENCES mdb_databases (id), access_type ENUM ('READ', 'WRITE_OWN', 'WRITE_ALL') NOT NULL, created timestamp NOT NULL DEFAULT NOW(), - PRIMARY KEY (user_id, database_id) + PRIMARY KEY (user_id, database_id), + FOREIGN KEY (user_id) REFERENCES mdb_users (id) ) WITH SYSTEM VERSIONING; COMMIT; diff --git a/dbrepo-metadata-service/Dockerfile b/dbrepo-metadata-service/Dockerfile index 776b2b5609f87c01a6b8bb53a51815c1053f5563..92c2c42cf14b207792fe7604f3f1f5f93c9b881d 100644 --- a/dbrepo-metadata-service/Dockerfile +++ b/dbrepo-metadata-service/Dockerfile @@ -56,7 +56,7 @@ ENV SEARCH_USERNAME=admin ENV SHARED_FILESYSTEM=/tmp ENV USER_NETWORK=userdb ENV WEBSITE="http://localhost" -ENV KEYCLOAK_HOST="http://authentication-service:8080/api/auth" +ENV KEYCLOAK_HOST="http://authentication-service:8080" ENV KEYCLOAK_ADMIN=fda ENV KEYCLOAK_ADMIN_PASSWORD=fda diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserAttributesDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserAttributesDto.java index 794bdd12e8a47c08deb4ec9bc2c9907c8a75d449..48f9662ef87771f0d770ac82c1d46fc5e03964e8 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserAttributesDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserAttributesDto.java @@ -1,5 +1,6 @@ package at.tuwien.api.user; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; @@ -26,7 +27,8 @@ public class UserAttributesDto { @Schema(example = "Brown University") private String affiliation; - @JsonProperty("mariadb_password") + @JsonIgnore + @org.springframework.data.annotation.Transient @Schema(example = "*CC67043C7BCFF5EEA5566BD9B1F3C74FD9A5CF5D") private String mariadbPassword; diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserBriefDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserBriefDto.java index 7955cde62208fac5bdac44ae130d9436cbf81d0d..35651f362d48d1107c54411e534baf597771ff77 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserBriefDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserBriefDto.java @@ -41,9 +41,4 @@ public class UserBriefDto { @Schema(example = "Carberry") private String lastname; - @JsonProperty("email_verified") - @Schema(example = "true") - @org.springframework.data.annotation.Transient - private Boolean emailVerified; - } diff --git a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java index 21fa777910d21d3ef71d1ffdd1de90d3c63b7f7f..de30923fd9a250897295f66e38c025cc1146b4b5 100644 --- a/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java +++ b/dbrepo-metadata-service/api/src/main/java/at/tuwien/api/user/UserDto.java @@ -1,6 +1,5 @@ package at.tuwien.api.user; -import at.tuwien.api.container.ContainerDto; import com.fasterxml.jackson.annotation.JsonProperty; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; @@ -12,7 +11,6 @@ import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.FieldType; -import java.util.List; import java.util.UUID; @Getter @@ -42,10 +40,6 @@ public class UserDto { @Field(name = "name", type = FieldType.Keyword) private String name; - @Schema(example = "http://orcid.org/0000-0002-1825-0097") - @Field(name = "orcid", type = FieldType.Keyword) - private String orcid; - @JsonProperty("given_name") @Schema(example = "Josiah") @Field(name = "firstname", type = FieldType.Keyword) @@ -59,27 +53,9 @@ public class UserDto { @NotNull private UserAttributesDto attributes; - @NotNull - @org.springframework.data.annotation.Transient - private List<ContainerDto> containers; - - @NotNull - @org.springframework.data.annotation.Transient - private List<ContainerDto> databases; - - @NotNull - @org.springframework.data.annotation.Transient - private List<ContainerDto> identifiers; - @NotNull @org.springframework.data.annotation.Transient @Schema(example = "jcarberry@brown.edu") private String email; - @NotNull - @JsonProperty("email_verified") - @org.springframework.data.annotation.Transient - @Schema(example = "true") - private Boolean emailVerified; - } diff --git a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/UserMapper.java b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/UserMapper.java index bef71a2bbf4838a944a440e9be3c9e60429ee2d5..e6d9c83b57e292f0d741c4dbbdf147bad36dc95f 100644 --- a/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/UserMapper.java +++ b/dbrepo-metadata-service/repositories/src/main/java/at/tuwien/mapper/UserMapper.java @@ -71,6 +71,12 @@ public interface UserMapper { UserBriefDto userDtoToUserBriefDto(UserDto data); /* keep */ + @Mappings({ + @Mapping(target = "attributes.orcid", source = "orcid"), + @Mapping(target = "attributes.affiliation", source = "affiliation"), + @Mapping(target = "attributes.themeDark", source = "themeDark"), + @Mapping(target = "attributes.mariadbPassword", source = "mariadbPassword") + }) UserDto userToUserDto(User data); default UserDetailsDto tokenIntrospectDtoToUserDetailsDto(TokenIntrospectDto data) { diff --git a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java index a151801be3b08456734b6a8eecd351b9649ebf5e..deec706f9a32bbaff91a9409f82eb993f76b6cb2 100644 --- a/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java +++ b/dbrepo-metadata-service/services/src/main/java/at/tuwien/service/impl/UserServiceImpl.java @@ -69,7 +69,7 @@ public class UserServiceImpl implements UserService { final User entity = User.builder() .username(data.getUsername()) .email(data.getEmail()) - .themeDark(true) + .themeDark(false) .mariadbPassword(getMariaDbPassword(data.getPassword())) .build(); keycloakGateway.createUser(userMapper.signupRequestDtoToUserCreateDto(data)); diff --git a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java index 840b7670fbcd2779a11f0e2997c71df65a8fbcd0..c8ee4c13fdb3fccff1703fc24a7e435b6e1ceb29 100644 --- a/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java +++ b/dbrepo-metadata-service/test/src/main/java/at/tuwien/test/BaseTest.java @@ -296,7 +296,6 @@ public abstract class BaseTest { .email(USER_1_EMAIL) .firstname(USER_1_FIRSTNAME) .lastname(USER_1_LASTNAME) - .emailVerified(USER_1_VERIFIED) .attributes(USER_1_ATTRIBUTES_DTO) .build(); @@ -329,7 +328,6 @@ public abstract class BaseTest { .username(USER_1_USERNAME) .firstname(USER_1_FIRSTNAME) .lastname(USER_1_LASTNAME) - .emailVerified(USER_1_VERIFIED) .build(); public final static UserDetails USER_1_DETAILS = UserDetailsDto.builder() @@ -402,7 +400,6 @@ public abstract class BaseTest { .email(USER_2_EMAIL) .firstname(USER_2_FIRSTNAME) .lastname(USER_2_LASTNAME) - .emailVerified(USER_2_VERIFIED) .build(); public final static UserBriefDto USER_2_BRIEF_DTO = UserBriefDto.builder() @@ -410,7 +407,6 @@ public abstract class BaseTest { .username(USER_2_USERNAME) .firstname(USER_2_FIRSTNAME) .lastname(USER_2_LASTNAME) - .emailVerified(USER_2_VERIFIED) .build(); public final static SignupRequestDto USER_2_SIGNUP_REQUEST_DTO = SignupRequestDto.builder() @@ -487,7 +483,6 @@ public abstract class BaseTest { .email(USER_3_EMAIL) .firstname(USER_3_FIRSTNAME) .lastname(USER_3_LASTNAME) - .emailVerified(USER_3_VERIFIED) .build(); public final static UserDetails USER_3_DETAILS = UserDetailsDto.builder() @@ -553,20 +548,16 @@ public abstract class BaseTest { .id(USER_4_ID) .username(USER_4_USERNAME) .email(USER_4_EMAIL) - .emailVerified(true) .firstname(USER_4_FIRSTNAME) .lastname(USER_4_LASTNAME) - .emailVerified(USER_4_VERIFIED) .attributes(USER_4_ATTRIBUTES_DTO) .build(); public final static UserBriefDto USER_4_BRIEF_DTO = UserBriefDto.builder() .id(USER_4_ID) .username(USER_4_USERNAME) - .emailVerified(true) .firstname(USER_4_FIRSTNAME) .lastname(USER_4_LASTNAME) - .emailVerified(USER_4_VERIFIED) .build(); public final static UserDetails USER_4_DETAILS = UserDetailsDto.builder() @@ -601,7 +592,6 @@ public abstract class BaseTest { .email(USER_5_EMAIL) .firstname(USER_5_FIRSTNAME) .lastname(USER_5_LASTNAME) - .emailVerified(USER_5_VERIFIED) .build(); public final static UserDetails USER_5_DETAILS = UserDetailsDto.builder() @@ -647,7 +637,6 @@ public abstract class BaseTest { .email(USER_6_EMAIL) .firstname(USER_6_FIRSTNAME) .lastname(USER_6_LASTNAME) - .emailVerified(USER_6_VERIFIED) .build(); public final static UserDetails USER_6_DETAILS = UserDetailsDto.builder() diff --git a/dbrepo-search-db/limits.conf b/dbrepo-search-db/limits.conf new file mode 100644 index 0000000000000000000000000000000000000000..80050ed3983f22e4ce355a5b9b8d2f43c260813f --- /dev/null +++ b/dbrepo-search-db/limits.conf @@ -0,0 +1,3 @@ +# allow user 'opensearch' mlockall +opensearch soft memlock unlimited +opensearch hard memlock unlimited diff --git a/dbrepo-ui/api/user.mapper.js b/dbrepo-ui/api/user.mapper.js index db9223ef6135c8796c16ba1929b1cb368fe850c9..b58993521e8d435e0977d9ba5093ec9bc39d8b2d 100644 --- a/dbrepo-ui/api/user.mapper.js +++ b/dbrepo-ui/api/user.mapper.js @@ -14,9 +14,9 @@ class UserMapper { userInfoToUser (data) { const obj = Object.assign({}, data) obj.attributes = { - theme_dark: data.attributes.filter(a => a.name === 'theme_dark')[0].value === 'true', - orcid: data.attributes.filter(a => a.name === 'orcid')[0].value, - affiliation: data.attributes.filter(a => a.name === 'affiliation')[0].value + theme_dark: data.attributes.theme_dark, + orcid: data.attributes.orcid, + affiliation: data.attributes.affiliation } return obj } @@ -39,7 +39,7 @@ class UserMapper { return null } if (!('given_name' in user) || !('family_name' in user) || user.given_name === null || user.family_name === null) { - return user?.username + return user.username } return user.given_name + ' ' + user.family_name } diff --git a/dbrepo-ui/components/TableList.vue b/dbrepo-ui/components/TableList.vue index 85f7849d3afe4195e89186e1afdd9bebff6b66d5..44cd4357779e196f8378438db2344a5622c218f6 100644 --- a/dbrepo-ui/components/TableList.vue +++ b/dbrepo-ui/components/TableList.vue @@ -100,7 +100,7 @@ export default { return formatTimestampUTCLabel(this.tableDetails.created) }, canRead () { - if (this.database?.is_public) { + if (this.database && this.database.is_public) { return true } if (!this.user || !this.access) { diff --git a/dbrepo-ui/pages/database/_database_id/table/_table_id/info.vue b/dbrepo-ui/pages/database/_database_id/table/_table_id/info.vue index 70229bfeac4cee632a7ec58a94a2af4c90bc9608..f6aefd5c4e0f8fed2c4c2bd9ce3be381036a920a 100644 --- a/dbrepo-ui/pages/database/_database_id/table/_table_id/info.vue +++ b/dbrepo-ui/pages/database/_database_id/table/_table_id/info.vue @@ -129,7 +129,7 @@ export default { return this.$store.state.roles }, canRead () { - if (this.database?.is_public) { + if (this.database && this.database.is_public) { return true } if (!this.user || !this.access) { diff --git a/docker-compose.yml b/docker-compose.yml index 1e3559c677682970de6eb46374ec63949f6c9416..4466879fe8b75292dde440739898508647d3784f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,6 +7,7 @@ version: "3.6" volumes: metadata-db-data: data-db-data: + auth-db-data: upload-service-data: search-db-data: broker-service-data: @@ -37,13 +38,18 @@ services: networks: core: volumes: - - metadata-db-data:/var/lib/mysql + - metadata-db-data:/bitnami/mariadb - ./dbrepo-metadata-db/setup-schema_local.sql:/docker-entrypoint-initdb.d/setup-schema_local.sql ports: - "3306:3306" - "9100:9100" env_file: - .env + healthcheck: + test: mysqladmin ping --user="$METADATA_USERNAME" --password="$METADATA_PASSWORD" --silent + interval: 10s + timeout: 5s + retries: 12 logging: driver: json-file @@ -55,7 +61,7 @@ services: networks: core: volumes: - - data-db-data:/var/lib/mysql + - data-db-data:/bitnami/mariadb - "/tmp:/tmp" ports: - "3307:3306" @@ -72,6 +78,31 @@ services: logging: driver: json-file + dbrepo-auth-db: + restart: "no" + container_name: dbrepo-auth-db + hostname: auth-db + image: mariadb:10.5 + networks: + core: + volumes: + - auth-db-data:/bitnami/mariadb + ports: + - "3308:3306" + - "9102:9100" + env_file: + - .env + environment: + - MARIADB_ROOT_PASSWORD=$AUTH_PASSWORD + - MARIADB_DATABASE=$AUTH_DB + healthcheck: + test: mysqladmin ping --user="$AUTH_USERNAME" --password="$AUTH_PASSWORD" --silent + interval: 10s + timeout: 5s + retries: 12 + logging: + driver: json-file + dbrepo-upload-service: restart: "no" container_name: dbrepo-upload-service @@ -190,7 +221,7 @@ services: env_file: - .env healthcheck: - test: curl -s localhost:9200/_cat/indices | grep -q "user" || exit 1 + test: curl -s localhost:9200/_cat/indices || exit 1 interval: 10s timeout: 5s retries: 12 @@ -199,13 +230,13 @@ services: ES_JAVA_OPTS: "-Xms4g -Xmx4g" logger.level: "WARN" plugins.security.disabled: "true" - bootstrap.memory_lock: "true" deploy: resources: limits: memory: 4G volumes: - search-db-data:/usr/share/elasticsearch/data + - ./dbrepo-search-db/limits.conf:/etc/security/limits.conf logging: driver: json-file