user credential changes
This commit is contained in:
parent
f6b7b6e00d
commit
04381aec20
|
@ -9,7 +9,7 @@ import java.util.UUID;
|
|||
|
||||
@XmlRootElement(name = "remove-credential-confirmation")
|
||||
@XmlAccessorType(XmlAccessType.FIELD)
|
||||
public class RemoveCredentialConfirmationEntity {
|
||||
public class RemoveCredentialRequestEntity {
|
||||
|
||||
@XmlAttribute(name = "credential-id")
|
||||
private UUID credentialId;
|
|
@ -0,0 +1,24 @@
|
|||
package eu.eudat.commons.types.usercredential;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class UserCredentialDataEntity {
|
||||
private List<String> providers;
|
||||
private String email;
|
||||
|
||||
public List<String> getProviders() {
|
||||
return providers;
|
||||
}
|
||||
|
||||
public void setProviders(List<String> providers) {
|
||||
this.providers = providers;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
}
|
|
@ -20,7 +20,11 @@ public class UserCredentialEntity extends TenantScopedBaseEntity {
|
|||
|
||||
@Column(name = "\"user\"", columnDefinition = "uuid", nullable = false)
|
||||
private UUID userId;
|
||||
public final static String _userId = "userId";
|
||||
public final static String _userId = "userId";
|
||||
|
||||
@Column(name = "data", nullable = true)
|
||||
private String data;
|
||||
public final static String _data = "data";
|
||||
|
||||
@Column(name = "\"external_id\"", length = UserCredentialEntity._externalIdLength, nullable = false)
|
||||
private String externalId;
|
||||
|
@ -63,4 +67,12 @@ public class UserCredentialEntity extends TenantScopedBaseEntity {
|
|||
public void setCreatedAt(Instant createdAt) {
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
public String getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(String data) {
|
||||
this.data = data;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,10 @@ import eu.eudat.commons.enums.ActionConfirmationStatus;
|
|||
import eu.eudat.commons.enums.ActionConfirmationType;
|
||||
import eu.eudat.commons.enums.IsActive;
|
||||
import eu.eudat.model.actionconfirmation.DmpInvitation;
|
||||
import eu.eudat.model.actionconfirmation.EmailConfirmation;
|
||||
import eu.eudat.model.actionconfirmation.MergeAccountConfirmation;
|
||||
import eu.eudat.model.actionconfirmation.RemoveCredentialRequest;
|
||||
import eu.eudat.model.persist.actionconfirmation.MergeAccountConfirmationPersist;
|
||||
import eu.eudat.model.persist.actionconfirmation.RemoveCredentialRequestPersist;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.UUID;
|
||||
|
@ -19,9 +22,13 @@ public class ActionConfirmation {
|
|||
|
||||
private ActionConfirmationStatus status;
|
||||
public static final String _status = "status";
|
||||
private MergeAccountConfirmation mergeAccountConfirmation;
|
||||
|
||||
private EmailConfirmation emailConfirmation;
|
||||
public static final String _emailConfirmation = "emailConfirmation";
|
||||
public static final String _mergeAccountConfirmation = "mergeAccountConfirmation";
|
||||
|
||||
private RemoveCredentialRequest removeCredentialRequest;
|
||||
|
||||
public static final String _removeCredentialRequest = "removeCredentialRequest";
|
||||
|
||||
private DmpInvitation dmpInvitation;
|
||||
public static final String _dmpInvitation = "dmpInvitation";
|
||||
|
@ -72,14 +79,6 @@ public class ActionConfirmation {
|
|||
this.status = status;
|
||||
}
|
||||
|
||||
public EmailConfirmation getEmailConfirmation() {
|
||||
return emailConfirmation;
|
||||
}
|
||||
|
||||
public void setEmailConfirmation(EmailConfirmation emailConfirmation) {
|
||||
this.emailConfirmation = emailConfirmation;
|
||||
}
|
||||
|
||||
public DmpInvitation getDmpInvitation() {
|
||||
return dmpInvitation;
|
||||
}
|
||||
|
@ -143,4 +142,20 @@ public class ActionConfirmation {
|
|||
public void setHash(String hash) {
|
||||
this.hash = hash;
|
||||
}
|
||||
|
||||
public MergeAccountConfirmation getMergeAccountConfirmation() {
|
||||
return mergeAccountConfirmation;
|
||||
}
|
||||
|
||||
public void setMergeAccountConfirmation(MergeAccountConfirmation mergeAccountConfirmation) {
|
||||
this.mergeAccountConfirmation = mergeAccountConfirmation;
|
||||
}
|
||||
|
||||
public RemoveCredentialRequest getRemoveCredentialRequest() {
|
||||
return removeCredentialRequest;
|
||||
}
|
||||
|
||||
public void setRemoveCredentialRequest(RemoveCredentialRequest removeCredentialRequest) {
|
||||
this.removeCredentialRequest = removeCredentialRequest;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package eu.eudat.model;
|
||||
|
||||
import eu.eudat.model.usercredential.UserCredentialData;
|
||||
|
||||
import java.time.Instant;
|
||||
import java.util.UUID;
|
||||
|
||||
|
@ -16,6 +18,8 @@ public class UserCredential {
|
|||
private Instant createdAt;
|
||||
|
||||
public static final String _createdAt = "createdAt";
|
||||
private UserCredentialData data;
|
||||
public static final String _data = "data";
|
||||
|
||||
public UUID getId() {
|
||||
return id;
|
||||
|
@ -48,4 +52,12 @@ public class UserCredential {
|
|||
public void setCreatedAt(Instant createdAt) {
|
||||
this.createdAt = createdAt;
|
||||
}
|
||||
|
||||
public UserCredentialData getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(UserCredentialData data) {
|
||||
this.data = data;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package eu.eudat.model.actionconfirmation;
|
||||
|
||||
|
||||
public class EmailConfirmation {
|
||||
public class MergeAccountConfirmation {
|
||||
|
||||
private String email;
|
||||
public static final String _email = "email";
|
|
@ -0,0 +1,31 @@
|
|||
package eu.eudat.model.actionconfirmation;
|
||||
|
||||
import eu.eudat.commons.validation.BaseValidator;
|
||||
import eu.eudat.commons.validation.specification.Specification;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.errorcode.ErrorThesaurusProperties;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.MessageSource;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.context.i18n.LocaleContextHolder;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class RemoveCredentialRequest {
|
||||
|
||||
private UUID credentialId;
|
||||
public static final String _credentialId = "credentialId";
|
||||
|
||||
public UUID getCredentialId() {
|
||||
return credentialId;
|
||||
}
|
||||
|
||||
public void setCredentialId(UUID credentialId) {
|
||||
this.credentialId = credentialId;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -5,13 +5,15 @@ import eu.eudat.commons.XmlHandlingService;
|
|||
import eu.eudat.commons.enums.ActionConfirmationType;
|
||||
import eu.eudat.commons.types.actionconfirmation.DmpInvitationEntity;
|
||||
import eu.eudat.commons.types.actionconfirmation.MergeAccountConfirmationEntity;
|
||||
import eu.eudat.commons.types.actionconfirmation.RemoveCredentialRequestEntity;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.data.ActionConfirmationEntity;
|
||||
import eu.eudat.model.ActionConfirmation;
|
||||
import eu.eudat.model.Tenant;
|
||||
import eu.eudat.model.User;
|
||||
import eu.eudat.model.builder.actionconfirmation.DmpInvitationBuilder;
|
||||
import eu.eudat.model.builder.actionconfirmation.EmailConfirmationBuilder;
|
||||
import eu.eudat.model.builder.actionconfirmation.MergeAccountConfirmationBuilder;
|
||||
import eu.eudat.model.builder.actionconfirmation.RemoveCredentialRequestBuilder;
|
||||
import eu.eudat.query.TenantQuery;
|
||||
import eu.eudat.query.UserQuery;
|
||||
import gr.cite.tools.data.builder.BuilderFactory;
|
||||
|
@ -56,7 +58,8 @@ public class ActionConfirmationBuilder extends BaseBuilder<ActionConfirmation, A
|
|||
this.logger.trace(new DataLogEntry("requested fields",fields));
|
||||
if(fields == null || data == null || fields.isEmpty()) return new ArrayList<>();
|
||||
|
||||
FieldSet emailConfirmationFields = fields.extractPrefixed(this.asPrefix(ActionConfirmation._emailConfirmation));
|
||||
FieldSet mergeAccountConfirmationFields = fields.extractPrefixed(this.asPrefix(ActionConfirmation._mergeAccountConfirmation));
|
||||
FieldSet removeCredentialRequestFields = fields.extractPrefixed(this.asPrefix(ActionConfirmation._removeCredentialRequest));
|
||||
FieldSet dmpInvitationFields = fields.extractPrefixed(this.asPrefix(ActionConfirmation._dmpInvitation));
|
||||
|
||||
FieldSet userFields = fields.extractPrefixed(this.asPrefix(ActionConfirmation._createdBy));
|
||||
|
@ -73,13 +76,22 @@ public class ActionConfirmationBuilder extends BaseBuilder<ActionConfirmation, A
|
|||
if(fields.hasField(this.asIndexer(ActionConfirmation._status))) m.setStatus(d.getStatus());
|
||||
if(fields.hasField(this.asIndexer(ActionConfirmation._isActive))) m.setIsActive(d.getIsActive());
|
||||
if(fields.hasField(this.asIndexer(ActionConfirmation._expiresAt))) m.setExpiresAt(d.getExpiresAt());
|
||||
if (!emailConfirmationFields.isEmpty() && d.getData() != null){
|
||||
if (d.getType().equals(ActionConfirmationType.MergeAccount) || d.getType().equals(ActionConfirmationType.RemoveCredential)){
|
||||
MergeAccountConfirmationEntity emailConfirmation = this.xmlHandlingService.fromXmlSafe(MergeAccountConfirmationEntity.class, d.getData());
|
||||
m.setEmailConfirmation(this.builderFactory.builder(EmailConfirmationBuilder.class).authorize(this.authorize).build(emailConfirmationFields, emailConfirmation));
|
||||
}else{
|
||||
DmpInvitationEntity dmpInvitation = this.xmlHandlingService.fromXmlSafe(DmpInvitationEntity.class, d.getData());
|
||||
m.setDmpInvitation(this.builderFactory.builder(DmpInvitationBuilder.class).authorize(this.authorize).build(dmpInvitationFields, dmpInvitation));
|
||||
if (!removeCredentialRequestFields.isEmpty() && d.getData() != null){
|
||||
switch (d.getType())
|
||||
{
|
||||
case MergeAccount -> {
|
||||
MergeAccountConfirmationEntity emailConfirmation = this.xmlHandlingService.fromXmlSafe(MergeAccountConfirmationEntity.class, d.getData());
|
||||
m.setMergeAccountConfirmation(this.builderFactory.builder(MergeAccountConfirmationBuilder.class).authorize(this.authorize).build(mergeAccountConfirmationFields, emailConfirmation));
|
||||
}
|
||||
case DmpInvitation -> {
|
||||
DmpInvitationEntity dmpInvitation = this.xmlHandlingService.fromXmlSafe(DmpInvitationEntity.class, d.getData());
|
||||
m.setDmpInvitation(this.builderFactory.builder(DmpInvitationBuilder.class).authorize(this.authorize).build(dmpInvitationFields, dmpInvitation));
|
||||
}
|
||||
case RemoveCredential -> {
|
||||
RemoveCredentialRequestEntity emailConfirmation = this.xmlHandlingService.fromXmlSafe(RemoveCredentialRequestEntity.class, d.getData());
|
||||
m.setRemoveCredentialRequest(this.builderFactory.builder(RemoveCredentialRequestBuilder.class).authorize(this.authorize).build(removeCredentialRequestFields, emailConfirmation));
|
||||
}
|
||||
default -> throw new InternalError("unknown type: " + d.getType());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,10 +1,16 @@
|
|||
package eu.eudat.model.builder;
|
||||
|
||||
import eu.eudat.authorization.AuthorizationFlags;
|
||||
import eu.eudat.commons.JsonHandlingService;
|
||||
import eu.eudat.commons.types.description.PropertyDefinitionEntity;
|
||||
import eu.eudat.commons.types.usercredential.UserCredentialDataEntity;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.data.UserCredentialEntity;
|
||||
import eu.eudat.model.Description;
|
||||
import eu.eudat.model.User;
|
||||
import eu.eudat.model.UserCredential;
|
||||
import eu.eudat.model.builder.descriptionpropertiesdefinition.PropertyDefinitionBuilder;
|
||||
import eu.eudat.model.builder.usercredential.UserCredentialDataBuilder;
|
||||
import eu.eudat.query.UserQuery;
|
||||
import gr.cite.tools.data.builder.BuilderFactory;
|
||||
import gr.cite.tools.data.query.QueryFactory;
|
||||
|
@ -29,16 +35,18 @@ public class UserCredentialBuilder extends BaseBuilder<UserCredential, UserCrede
|
|||
private final BuilderFactory builderFactory;
|
||||
|
||||
private final QueryFactory queryFactory;
|
||||
private final JsonHandlingService jsonHandlingService;
|
||||
|
||||
private EnumSet<AuthorizationFlags> authorize = EnumSet.of(AuthorizationFlags.None);
|
||||
|
||||
@Autowired
|
||||
public UserCredentialBuilder(
|
||||
ConventionService conventionService,
|
||||
BuilderFactory builderFactory, QueryFactory queryFactory) {
|
||||
ConventionService conventionService,
|
||||
BuilderFactory builderFactory, QueryFactory queryFactory, JsonHandlingService jsonHandlingService) {
|
||||
super(conventionService, new LoggerService(LoggerFactory.getLogger(UserCredentialBuilder.class)));
|
||||
this.builderFactory = builderFactory;
|
||||
this.queryFactory = queryFactory;
|
||||
this.jsonHandlingService = jsonHandlingService;
|
||||
}
|
||||
|
||||
public UserCredentialBuilder authorize(EnumSet<AuthorizationFlags> values) {
|
||||
|
@ -55,6 +63,8 @@ public class UserCredentialBuilder extends BaseBuilder<UserCredential, UserCrede
|
|||
|
||||
FieldSet userFields = fields.extractPrefixed(this.asPrefix(UserCredential._user));
|
||||
Map<UUID, User> userItemsMap = this.collectUsers(userFields, data);
|
||||
|
||||
FieldSet definitionPropertiesFields = fields.extractPrefixed(this.asPrefix(UserCredential._data));
|
||||
|
||||
List<UserCredential> models = new ArrayList<>();
|
||||
|
||||
|
@ -64,7 +74,10 @@ public class UserCredentialBuilder extends BaseBuilder<UserCredential, UserCrede
|
|||
if (fields.hasField(this.asIndexer(UserCredential._createdAt))) m.setCreatedAt(d.getCreatedAt());
|
||||
if (fields.hasField(this.asIndexer(UserCredential._externalId))) m.setExternalId(d.getExternalId());
|
||||
if (!userFields.isEmpty() && userItemsMap != null && userItemsMap.containsKey(d.getUserId())) m.setUser(userItemsMap.get(d.getUserId()));
|
||||
|
||||
if (!definitionPropertiesFields.isEmpty() && d.getData() != null){
|
||||
UserCredentialDataEntity propertyDefinition = this.jsonHandlingService.fromJsonSafe(UserCredentialDataEntity.class, d.getData());
|
||||
m.setData(this.builderFactory.builder(UserCredentialDataBuilder.class).authorize(this.authorize).build(definitionPropertiesFields, propertyDefinition));
|
||||
}
|
||||
models.add(m);
|
||||
}
|
||||
|
||||
|
|
|
@ -3,7 +3,7 @@ package eu.eudat.model.builder.actionconfirmation;
|
|||
import eu.eudat.authorization.AuthorizationFlags;
|
||||
import eu.eudat.commons.types.actionconfirmation.MergeAccountConfirmationEntity;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.model.actionconfirmation.EmailConfirmation;
|
||||
import eu.eudat.model.actionconfirmation.MergeAccountConfirmation;
|
||||
import eu.eudat.model.builder.BaseBuilder;
|
||||
import gr.cite.tools.data.builder.BuilderFactory;
|
||||
import gr.cite.tools.exception.MyApplicationException;
|
||||
|
@ -20,35 +20,33 @@ import java.util.*;
|
|||
|
||||
@Component
|
||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public class EmailConfirmationBuilder extends BaseBuilder<EmailConfirmation, MergeAccountConfirmationEntity> {
|
||||
public class MergeAccountConfirmationBuilder extends BaseBuilder<MergeAccountConfirmation, MergeAccountConfirmationEntity> {
|
||||
|
||||
private final BuilderFactory builderFactory;
|
||||
private EnumSet<AuthorizationFlags> authorize = EnumSet.of(AuthorizationFlags.None);
|
||||
|
||||
@Autowired
|
||||
public EmailConfirmationBuilder(
|
||||
ConventionService conventionService, BuilderFactory builderFactory) {
|
||||
super(conventionService, new LoggerService(LoggerFactory.getLogger(EmailConfirmationBuilder.class)));
|
||||
this.builderFactory = builderFactory;
|
||||
public MergeAccountConfirmationBuilder(
|
||||
ConventionService conventionService) {
|
||||
super(conventionService, new LoggerService(LoggerFactory.getLogger(MergeAccountConfirmationBuilder.class)));
|
||||
}
|
||||
|
||||
public EmailConfirmationBuilder authorize(EnumSet<AuthorizationFlags> values) {
|
||||
public MergeAccountConfirmationBuilder authorize(EnumSet<AuthorizationFlags> values) {
|
||||
this.authorize = values;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<EmailConfirmation> build(FieldSet fields, List<MergeAccountConfirmationEntity> data) throws MyApplicationException {
|
||||
public List<MergeAccountConfirmation> build(FieldSet fields, List<MergeAccountConfirmationEntity> data) throws MyApplicationException {
|
||||
this.logger.debug("building for {} items requesting {} fields", Optional.ofNullable(data).map(List::size).orElse(0), Optional.ofNullable(fields).map(FieldSet::getFields).map(Set::size).orElse(0));
|
||||
this.logger.trace(new DataLogEntry("requested fields", fields));
|
||||
if (fields == null || data == null || fields.isEmpty())
|
||||
return new ArrayList<>();
|
||||
|
||||
|
||||
List<EmailConfirmation> models = new ArrayList<>();
|
||||
List<MergeAccountConfirmation> models = new ArrayList<>();
|
||||
for (MergeAccountConfirmationEntity d : data) {
|
||||
EmailConfirmation m = new EmailConfirmation();
|
||||
if (fields.hasField(this.asIndexer(EmailConfirmation._email))) m.setEmail(d.getEmail());
|
||||
MergeAccountConfirmation m = new MergeAccountConfirmation();
|
||||
if (fields.hasField(this.asIndexer(MergeAccountConfirmation._email))) m.setEmail(d.getEmail());
|
||||
|
||||
models.add(m);
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
package eu.eudat.model.builder.actionconfirmation;
|
||||
|
||||
import eu.eudat.authorization.AuthorizationFlags;
|
||||
import eu.eudat.commons.types.actionconfirmation.RemoveCredentialRequestEntity;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.model.actionconfirmation.RemoveCredentialRequest;
|
||||
import eu.eudat.model.builder.BaseBuilder;
|
||||
import gr.cite.tools.exception.MyApplicationException;
|
||||
import gr.cite.tools.fieldset.FieldSet;
|
||||
import gr.cite.tools.logging.DataLogEntry;
|
||||
import gr.cite.tools.logging.LoggerService;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@Component
|
||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public class RemoveCredentialRequestBuilder extends BaseBuilder<RemoveCredentialRequest, RemoveCredentialRequestEntity> {
|
||||
|
||||
private EnumSet<AuthorizationFlags> authorize = EnumSet.of(AuthorizationFlags.None);
|
||||
|
||||
@Autowired
|
||||
public RemoveCredentialRequestBuilder(
|
||||
ConventionService conventionService) {
|
||||
super(conventionService, new LoggerService(LoggerFactory.getLogger(RemoveCredentialRequestBuilder.class)));
|
||||
}
|
||||
|
||||
public RemoveCredentialRequestBuilder authorize(EnumSet<AuthorizationFlags> values) {
|
||||
this.authorize = values;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RemoveCredentialRequest> build(FieldSet fields, List<RemoveCredentialRequestEntity> data) throws MyApplicationException {
|
||||
this.logger.debug("building for {} items requesting {} fields", Optional.ofNullable(data).map(List::size).orElse(0), Optional.ofNullable(fields).map(FieldSet::getFields).map(Set::size).orElse(0));
|
||||
this.logger.trace(new DataLogEntry("requested fields", fields));
|
||||
if (fields == null || data == null || fields.isEmpty())
|
||||
return new ArrayList<>();
|
||||
|
||||
|
||||
List<RemoveCredentialRequest> models = new ArrayList<>();
|
||||
for (RemoveCredentialRequestEntity d : data) {
|
||||
RemoveCredentialRequest m = new RemoveCredentialRequest();
|
||||
if (fields.hasField(this.asIndexer(RemoveCredentialRequest._credentialId))) m.setCredentialId(d.getCredentialId());
|
||||
|
||||
models.add(m);
|
||||
}
|
||||
this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0));
|
||||
return models;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
package eu.eudat.model.builder.usercredential;
|
||||
|
||||
import eu.eudat.authorization.AuthorizationFlags;
|
||||
import eu.eudat.commons.types.usercredential.UserCredentialDataEntity;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.model.builder.BaseBuilder;
|
||||
import eu.eudat.model.usercredential.UserCredentialData;
|
||||
import gr.cite.tools.exception.MyApplicationException;
|
||||
import gr.cite.tools.fieldset.FieldSet;
|
||||
import gr.cite.tools.logging.DataLogEntry;
|
||||
import gr.cite.tools.logging.LoggerService;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@Component()
|
||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public class UserCredentialDataBuilder extends BaseBuilder<UserCredentialData, UserCredentialDataEntity> {
|
||||
|
||||
private EnumSet<AuthorizationFlags> authorize = EnumSet.of(AuthorizationFlags.None);
|
||||
|
||||
@Autowired
|
||||
public UserCredentialDataBuilder(
|
||||
ConventionService conventionService) {
|
||||
super(conventionService, new LoggerService(LoggerFactory.getLogger(UserCredentialDataBuilder.class)));
|
||||
}
|
||||
|
||||
public UserCredentialDataBuilder authorize(EnumSet<AuthorizationFlags> values) {
|
||||
this.authorize = values;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UserCredentialData> build(FieldSet fields, List<UserCredentialDataEntity> data) throws MyApplicationException {
|
||||
this.logger.debug("building for {} items requesting {} fields", Optional.ofNullable(data).map(List::size).orElse(0), Optional.ofNullable(fields).map(FieldSet::getFields).map(Set::size).orElse(0));
|
||||
this.logger.trace(new DataLogEntry("requested fields", fields));
|
||||
if (fields == null || data == null || fields.isEmpty())
|
||||
return new ArrayList<>();
|
||||
|
||||
//Not Bulk Build because is XML no interaction with db
|
||||
|
||||
List<UserCredentialData> models = new ArrayList<>();
|
||||
for (UserCredentialDataEntity d : data) {
|
||||
UserCredentialData m = new UserCredentialData();
|
||||
if (fields.hasField(this.asIndexer(UserCredentialData._email))) m.setEmail(d.getEmail());
|
||||
if (fields.hasField(this.asIndexer(UserCredentialData._providers))) m.setProviders(d.getProviders());
|
||||
models.add(m);
|
||||
}
|
||||
this.logger.debug("build {} items", Optional.of(models).map(List::size).orElse(0));
|
||||
return models;
|
||||
}
|
||||
}
|
|
@ -4,6 +4,7 @@ import eu.eudat.authorization.OwnedResource;
|
|||
import eu.eudat.authorization.Permission;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.model.UserCredential;
|
||||
import eu.eudat.model.censorship.usercredential.UserCredentialDataCensor;
|
||||
import gr.cite.commons.web.authz.service.AuthorizationService;
|
||||
import gr.cite.tools.data.censor.CensorFactory;
|
||||
import gr.cite.tools.fieldset.FieldSet;
|
||||
|
@ -41,6 +42,9 @@ public class UserCredentialCensor extends BaseCensor {
|
|||
|
||||
FieldSet descriptionReferenceFields = fields.extractPrefixed(this.asIndexerPrefix(UserCredential._user));
|
||||
this.censorFactory.censor(DescriptionReferenceCensor.class).censor(descriptionReferenceFields, userId);
|
||||
|
||||
FieldSet dataFields = fields.extractPrefixed(this.asIndexerPrefix(UserCredential._data));
|
||||
this.censorFactory.censor(UserCredentialDataCensor.class).censor(dataFields, userId);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
package eu.eudat.model.censorship.usercredential;
|
||||
|
||||
import eu.eudat.authorization.OwnedResource;
|
||||
import eu.eudat.authorization.Permission;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.model.censorship.BaseCensor;
|
||||
import eu.eudat.model.censorship.DescriptionReferenceCensor;
|
||||
import gr.cite.commons.web.authz.service.AuthorizationService;
|
||||
import gr.cite.tools.data.censor.CensorFactory;
|
||||
import gr.cite.tools.fieldset.FieldSet;
|
||||
import gr.cite.tools.logging.DataLogEntry;
|
||||
import gr.cite.tools.logging.LoggerService;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
@Component
|
||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||
public class UserCredentialDataCensor extends BaseCensor {
|
||||
|
||||
private static final LoggerService logger = new LoggerService(LoggerFactory.getLogger(UserCredentialDataCensor.class));
|
||||
|
||||
protected final AuthorizationService authService;
|
||||
|
||||
protected final CensorFactory censorFactory;
|
||||
|
||||
public UserCredentialDataCensor(ConventionService conventionService, AuthorizationService authService, CensorFactory censorFactory) {
|
||||
super(conventionService);
|
||||
this.authService = authService;
|
||||
this.censorFactory = censorFactory;
|
||||
}
|
||||
|
||||
public void censor(FieldSet fields, UUID userId) {
|
||||
logger.debug(new DataLogEntry("censoring fields", fields));
|
||||
if (fields == null || fields.isEmpty())
|
||||
return;
|
||||
this.authService.authorizeAtLeastOneForce(userId != null ? List.of(new OwnedResource(userId)) : null, Permission.BrowseUser);
|
||||
}
|
||||
|
||||
}
|
|
@ -9,6 +9,7 @@ import eu.eudat.convention.ConventionService;
|
|||
import eu.eudat.errorcode.ErrorThesaurusProperties;
|
||||
import eu.eudat.model.persist.actionconfirmation.DmpInvitationPersist;
|
||||
import eu.eudat.model.persist.actionconfirmation.MergeAccountConfirmationPersist;
|
||||
import eu.eudat.model.persist.actionconfirmation.RemoveCredentialRequestPersist;
|
||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||
import org.springframework.context.MessageSource;
|
||||
import org.springframework.context.annotation.Scope;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package eu.eudat.model.persist;
|
||||
package eu.eudat.model.persist.actionconfirmation;
|
||||
|
||||
import eu.eudat.commons.validation.BaseValidator;
|
||||
import eu.eudat.commons.validation.specification.Specification;
|
|
@ -0,0 +1,26 @@
|
|||
package eu.eudat.model.usercredential;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class UserCredentialData {
|
||||
private List<String> providers;
|
||||
public static final String _providers = "providers";
|
||||
private String email;
|
||||
public static final String _email = "email";
|
||||
|
||||
public List<String> getProviders() {
|
||||
return providers;
|
||||
}
|
||||
|
||||
public void setProviders(List<String> providers) {
|
||||
this.providers = providers;
|
||||
}
|
||||
|
||||
public String getEmail() {
|
||||
return email;
|
||||
}
|
||||
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
}
|
|
@ -239,7 +239,8 @@ public class ActionConfirmationQuery extends QueryBase<ActionConfirmationEntity>
|
|||
else if (item.match(ActionConfirmation._status)) return ActionConfirmationEntity._status;
|
||||
else if (item.match(ActionConfirmationEntity._token)) return ActionConfirmationEntity._token;
|
||||
else if (item.match(ActionConfirmation._expiresAt)) return ActionConfirmationEntity._expiresAt;
|
||||
else if (item.prefix(ActionConfirmation._emailConfirmation)) return ActionConfirmationEntity._data;
|
||||
else if (item.prefix(ActionConfirmation._mergeAccountConfirmation)) return ActionConfirmationEntity._data;
|
||||
else if (item.prefix(ActionConfirmation._removeCredentialRequest)) return ActionConfirmationEntity._data;
|
||||
else if (item.prefix(ActionConfirmation._dmpInvitation)) return ActionConfirmationEntity._data;
|
||||
else if (item.prefix(ActionConfirmation._createdBy)) return ActionConfirmationEntity._createdById;
|
||||
else if (item.match(ActionConfirmation._createdBy)) return ActionConfirmationEntity._createdById;
|
||||
|
|
|
@ -7,18 +7,16 @@ import eu.eudat.commons.enums.IsActive;
|
|||
import eu.eudat.commons.scope.user.UserScope;
|
||||
import eu.eudat.commons.types.actionconfirmation.DmpInvitationEntity;
|
||||
import eu.eudat.commons.types.actionconfirmation.MergeAccountConfirmationEntity;
|
||||
import eu.eudat.commons.types.actionconfirmation.RemoveCredentialConfirmationEntity;
|
||||
import eu.eudat.commons.types.actionconfirmation.RemoveCredentialRequestEntity;
|
||||
import eu.eudat.convention.ConventionService;
|
||||
import eu.eudat.data.ActionConfirmationEntity;
|
||||
import eu.eudat.errorcode.ErrorThesaurusProperties;
|
||||
import eu.eudat.model.ActionConfirmation;
|
||||
import eu.eudat.model.Dmp;
|
||||
import eu.eudat.model.ReferenceType;
|
||||
import eu.eudat.model.builder.ActionConfirmationBuilder;
|
||||
import eu.eudat.model.builder.DmpBuilder;
|
||||
import eu.eudat.model.deleter.ActionConfirmationDeleter;
|
||||
import eu.eudat.model.persist.ActionConfirmationPersist;
|
||||
import eu.eudat.model.persist.RemoveCredentialRequestPersist;
|
||||
import eu.eudat.model.persist.actionconfirmation.RemoveCredentialRequestPersist;
|
||||
import eu.eudat.model.persist.actionconfirmation.DmpInvitationPersist;
|
||||
import eu.eudat.model.persist.actionconfirmation.MergeAccountConfirmationPersist;
|
||||
import eu.eudat.service.dmpblueprint.DmpBlueprintServiceImpl;
|
||||
|
@ -138,8 +136,8 @@ public class ActionConfirmationServiceImpl implements ActionConfirmationService
|
|||
return data;
|
||||
}
|
||||
|
||||
private @NotNull RemoveCredentialConfirmationEntity buildMergeAccountConfirmationEntity(RemoveCredentialRequestPersist persist){
|
||||
RemoveCredentialConfirmationEntity data = new RemoveCredentialConfirmationEntity();
|
||||
private @NotNull RemoveCredentialRequestEntity buildMergeAccountConfirmationEntity(RemoveCredentialRequestPersist persist){
|
||||
RemoveCredentialRequestEntity data = new RemoveCredentialRequestEntity();
|
||||
if (persist == null) return data;
|
||||
|
||||
data.setCredentialId(persist.getCredentialId());
|
||||
|
|
|
@ -2,7 +2,7 @@ package eu.eudat.service.user;
|
|||
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import eu.eudat.model.User;
|
||||
import eu.eudat.model.persist.RemoveCredentialRequestPersist;
|
||||
import eu.eudat.model.persist.actionconfirmation.RemoveCredentialRequestPersist;
|
||||
import eu.eudat.model.persist.UserMergeRequestPersist;
|
||||
import eu.eudat.model.persist.UserPersist;
|
||||
import eu.eudat.model.persist.UserRolePatchPersist;
|
||||
|
|
|
@ -13,7 +13,7 @@ import eu.eudat.commons.enums.IsActive;
|
|||
import eu.eudat.commons.enums.notification.NotificationContactType;
|
||||
import eu.eudat.commons.scope.user.UserScope;
|
||||
import eu.eudat.commons.types.actionconfirmation.MergeAccountConfirmationEntity;
|
||||
import eu.eudat.commons.types.actionconfirmation.RemoveCredentialConfirmationEntity;
|
||||
import eu.eudat.commons.types.actionconfirmation.RemoveCredentialRequestEntity;
|
||||
import eu.eudat.commons.types.notification.*;
|
||||
import eu.eudat.commons.types.user.AdditionalInfoEntity;
|
||||
import eu.eudat.commons.validation.ValidatorFactory;
|
||||
|
@ -35,6 +35,7 @@ import eu.eudat.model.deleter.UserRoleDeleter;
|
|||
import eu.eudat.model.deleter.UserSettingsSettingsDeleter;
|
||||
import eu.eudat.model.persist.*;
|
||||
import eu.eudat.model.persist.actionconfirmation.MergeAccountConfirmationPersist;
|
||||
import eu.eudat.model.persist.actionconfirmation.RemoveCredentialRequestPersist;
|
||||
import eu.eudat.query.*;
|
||||
import eu.eudat.service.actionconfirmation.ActionConfirmationService;
|
||||
import eu.eudat.service.elastic.ElasticService;
|
||||
|
@ -586,11 +587,11 @@ public class UserServiceImpl implements UserService {
|
|||
|
||||
this.checkActionState(action);
|
||||
|
||||
RemoveCredentialConfirmationEntity removeCredentialConfirmationEntity = this.xmlHandlingService.fromXmlSafe(RemoveCredentialConfirmationEntity.class, action.getData());
|
||||
if (removeCredentialConfirmationEntity == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{removeCredentialConfirmationEntity, RemoveCredentialConfirmationEntity.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||
RemoveCredentialRequestEntity removeCredentialRequestEntity = this.xmlHandlingService.fromXmlSafe(RemoveCredentialRequestEntity.class, action.getData());
|
||||
if (removeCredentialRequestEntity == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{removeCredentialRequestEntity, RemoveCredentialRequestEntity.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||
|
||||
UserCredentialEntity userCredentialEntity = this.queryFactory.query(UserCredentialQuery.class).ids(removeCredentialConfirmationEntity.getCredentialId()).first();
|
||||
if (userCredentialEntity == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{removeCredentialConfirmationEntity.getCredentialId(), UserCredential.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||
UserCredentialEntity userCredentialEntity = this.queryFactory.query(UserCredentialQuery.class).ids(removeCredentialRequestEntity.getCredentialId()).first();
|
||||
if (userCredentialEntity == null) throw new MyNotFoundException(messageSource.getMessage("General_ItemNotFound", new Object[]{removeCredentialRequestEntity.getCredentialId(), UserCredential.class.getSimpleName()}, LocaleContextHolder.getLocale()));
|
||||
|
||||
if (!this.userScope.getUserIdSafe().equals(userCredentialEntity.getId())) throw new MyForbiddenException("Only requested user can approve");
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ import eu.eudat.model.builder.DmpAssociatedUserBuilder;
|
|||
import eu.eudat.model.builder.UserBuilder;
|
||||
import eu.eudat.model.censorship.DmpAssociatedUserCensor;
|
||||
import eu.eudat.model.censorship.UserCensor;
|
||||
import eu.eudat.model.persist.RemoveCredentialRequestPersist;
|
||||
import eu.eudat.model.persist.actionconfirmation.RemoveCredentialRequestPersist;
|
||||
import eu.eudat.model.persist.UserMergeRequestPersist;
|
||||
import eu.eudat.model.persist.UserPersist;
|
||||
import eu.eudat.model.persist.UserRolePatchPersist;
|
||||
|
|
|
@ -23,7 +23,6 @@ public class UserInterceptorCacheService extends CacheService<UserInterceptorCac
|
|||
this.userId = userId;
|
||||
}
|
||||
|
||||
private String subjectId;
|
||||
|
||||
public String getSubjectId() {
|
||||
return subjectId;
|
||||
|
@ -33,6 +32,7 @@ public class UserInterceptorCacheService extends CacheService<UserInterceptorCac
|
|||
this.subjectId = subjectId;
|
||||
}
|
||||
|
||||
private String subjectId;
|
||||
private UUID userId;
|
||||
private List<String> roles;
|
||||
private List<String> emails;
|
||||
|
|
Loading…
Reference in New Issue