CCM NG:
- Revised Import/Export system
- Added UUID to Party entity
- Changed test data sets
git-svn-id: https://svn.libreccm.org/ccm/ccm_ng@5705 8810af33-2d31-482b-a856-94f89814c4df
ccm-docs
parent
ccad3258b7
commit
ea0ddcfcb1
|
|
@ -0,0 +1,42 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2018 LibreCCM Foundation.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.libreccm.imexport;
|
||||||
|
|
||||||
|
import java.lang.annotation.ElementType;
|
||||||
|
import java.lang.annotation.Retention;
|
||||||
|
import java.lang.annotation.RetentionPolicy;
|
||||||
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to describe dependencies of an {@link EntityImExporter} when importing
|
||||||
|
* entities. Used by {@link EntityImExporterTreeManager} to
|
||||||
|
* create a dependency tree and do topological sorting.
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Target({ElementType.TYPE,
|
||||||
|
ElementType.PARAMETER,
|
||||||
|
ElementType.FIELD,
|
||||||
|
ElementType.METHOD})
|
||||||
|
public @interface DependsOn {
|
||||||
|
|
||||||
|
Class<? extends Exportable>[] value();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -35,6 +35,6 @@ public interface EntityImExporter<T extends Exportable> {
|
||||||
|
|
||||||
T importEntity(JsonObject data);
|
T importEntity(JsonObject data);
|
||||||
|
|
||||||
JsonObject exportEntity(T entity);
|
JsonObject exportEntity(Exportable entity);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -77,9 +77,7 @@ final class EntityImExporterTreeManager {
|
||||||
node -> node
|
node -> node
|
||||||
.getEntityImExporter()
|
.getEntityImExporter()
|
||||||
.getClass()
|
.getClass()
|
||||||
.getAnnotation(Processes.class)
|
.getAnnotation(Processes.class).value().getName(),
|
||||||
.type()
|
|
||||||
.getName(),
|
|
||||||
node -> node));
|
node -> node));
|
||||||
|
|
||||||
//Add the dependency relations to the nodes
|
//Add the dependency relations to the nodes
|
||||||
|
|
@ -199,9 +197,9 @@ final class EntityImExporterTreeManager {
|
||||||
throws DependencyException {
|
throws DependencyException {
|
||||||
|
|
||||||
//Get the dependencies of the current EntityImExporter
|
//Get the dependencies of the current EntityImExporter
|
||||||
final Processes processes = imExporter
|
final DependsOn dependsOn = imExporter
|
||||||
.getClass()
|
.getClass()
|
||||||
.getAnnotation(Processes.class);
|
.getAnnotation(DependsOn.class);
|
||||||
|
|
||||||
//Get the name of the module from the module info.
|
//Get the name of the module from the module info.
|
||||||
final String className = imExporter.getClass().getName();
|
final String className = imExporter.getClass().getName();
|
||||||
|
|
@ -229,7 +227,7 @@ final class EntityImExporterTreeManager {
|
||||||
className);
|
className);
|
||||||
//Process the EntityImExporter required by the current module and add
|
//Process the EntityImExporter required by the current module and add
|
||||||
//the dependency relations.
|
//the dependency relations.
|
||||||
for (final Class<? extends Exportable> clazz : processes.dependsOn()) {
|
for (final Class<? extends Exportable> clazz : dependsOn.value()) {
|
||||||
|
|
||||||
addDependencyRelation(nodes, node, clazz);
|
addDependencyRelation(nodes, node, clazz);
|
||||||
}
|
}
|
||||||
|
|
@ -265,8 +263,10 @@ final class EntityImExporterTreeManager {
|
||||||
throw new DependencyException(String.format(
|
throw new DependencyException(String.format(
|
||||||
"EntityImExporter for type \"%s\" depends on type \"%s\" "
|
"EntityImExporter for type \"%s\" depends on type \"%s\" "
|
||||||
+ "but no EntityImExporter for type \"%s\" is available.",
|
+ "but no EntityImExporter for type \"%s\" is available.",
|
||||||
node.getEntityImExporter().getClass().getAnnotation(
|
node
|
||||||
Processes.class).type().getName(),
|
.getEntityImExporter()
|
||||||
|
.getClass()
|
||||||
|
.getAnnotation(Processes.class).value().getName(),
|
||||||
requiredClass.getName(),
|
requiredClass.getName(),
|
||||||
requiredClass.getName()));
|
requiredClass.getName()));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,25 +22,38 @@ import org.libreccm.core.UnexpectedErrorException;
|
||||||
import org.libreccm.files.CcmFiles;
|
import org.libreccm.files.CcmFiles;
|
||||||
import org.libreccm.files.CcmFilesConfiguration;
|
import org.libreccm.files.CcmFilesConfiguration;
|
||||||
import org.libreccm.files.FileAccessException;
|
import org.libreccm.files.FileAccessException;
|
||||||
|
import org.libreccm.files.FileAlreadyExistsException;
|
||||||
import org.libreccm.files.FileDoesNotExistException;
|
import org.libreccm.files.FileDoesNotExistException;
|
||||||
import org.libreccm.files.InsufficientPermissionsException;
|
import org.libreccm.files.InsufficientPermissionsException;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.InetAddress;
|
||||||
|
import java.net.UnknownHostException;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.ZoneId;
|
import java.time.ZoneId;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import javax.enterprise.context.RequestScoped;
|
import javax.enterprise.context.RequestScoped;
|
||||||
import javax.enterprise.inject.Any;
|
import javax.enterprise.inject.Any;
|
||||||
import javax.enterprise.inject.Instance;
|
import javax.enterprise.inject.Instance;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import javax.enterprise.util.AnnotationLiteral;
|
||||||
import javax.json.Json;
|
import javax.json.Json;
|
||||||
|
import javax.json.JsonArray;
|
||||||
|
import javax.json.JsonArrayBuilder;
|
||||||
import javax.json.JsonObject;
|
import javax.json.JsonObject;
|
||||||
|
import javax.json.JsonObjectBuilder;
|
||||||
import javax.json.JsonReader;
|
import javax.json.JsonReader;
|
||||||
|
import javax.json.JsonWriter;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Central service for importing and exporting entities.
|
* Central service for importing and exporting entities.
|
||||||
|
|
@ -74,7 +87,121 @@ public class ImportExport {
|
||||||
public void exportEntities(final List<Exportable> entities,
|
public void exportEntities(final List<Exportable> entities,
|
||||||
final String exportName) {
|
final String exportName) {
|
||||||
|
|
||||||
throw new UnsupportedOperationException();
|
final JsonObjectBuilder manifestBuilder = Json.createObjectBuilder();
|
||||||
|
manifestBuilder.add("created",
|
||||||
|
LocalDateTime.now(ZoneId.of("UTC")).toString());
|
||||||
|
try {
|
||||||
|
manifestBuilder.add("onServer",
|
||||||
|
InetAddress.getLocalHost().getHostName());
|
||||||
|
} catch (UnknownHostException ex) {
|
||||||
|
throw new UnexpectedErrorException(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
final JsonArrayBuilder typesArrayBuilder = Json.createArrayBuilder();
|
||||||
|
|
||||||
|
final Set<String> types = entities
|
||||||
|
.stream()
|
||||||
|
.map(entity -> entity.getClass().getName())
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
final Map<String, List<Exportable>> typeEntityMap = new HashMap<>();
|
||||||
|
try {
|
||||||
|
ccmFiles.createDirectory(String.format("exports/%s", exportName));
|
||||||
|
|
||||||
|
for (final String type : types) {
|
||||||
|
ccmFiles.createDirectory(String.format("exports/%s/%s",
|
||||||
|
exportName,
|
||||||
|
type));
|
||||||
|
typesArrayBuilder.add(type);
|
||||||
|
|
||||||
|
final List<Exportable> entitiesOfType = entities
|
||||||
|
.stream()
|
||||||
|
.filter(entity -> entity.getClass().getName().equals(type))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
typeEntityMap.put(type, entitiesOfType);
|
||||||
|
}
|
||||||
|
|
||||||
|
manifestBuilder.add("types", typesArrayBuilder);
|
||||||
|
final OutputStream manifestOutputStream = ccmFiles
|
||||||
|
.createOutputStream(String.format("exports/%s/ccm-export.json",
|
||||||
|
exportName));
|
||||||
|
try (JsonWriter manifestWriter = Json.
|
||||||
|
createWriter(manifestOutputStream)) {
|
||||||
|
|
||||||
|
manifestWriter.writeObject(manifestBuilder.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (FileAccessException
|
||||||
|
| FileAlreadyExistsException
|
||||||
|
| InsufficientPermissionsException ex) {
|
||||||
|
throw new UnexpectedErrorException(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(final Map.Entry<String, List<Exportable>> entry
|
||||||
|
: typeEntityMap.entrySet()) {
|
||||||
|
|
||||||
|
createExportedEntities(exportName,
|
||||||
|
entry.getKey(),
|
||||||
|
entry.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
private JsonArrayBuilder createExportedEntities(
|
||||||
|
final String exportName,
|
||||||
|
final String type,
|
||||||
|
final List<Exportable> entities) {
|
||||||
|
|
||||||
|
final JsonArrayBuilder filesArrayBuilder = Json.createArrayBuilder();
|
||||||
|
|
||||||
|
final Class<? extends Exportable> clazz;
|
||||||
|
try {
|
||||||
|
clazz = (Class<? extends Exportable>) Class.forName(type);
|
||||||
|
} catch (ClassNotFoundException ex) {
|
||||||
|
throw new UnexpectedErrorException(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
final Instance<EntityImExporter<?>> instance = imExporters
|
||||||
|
.select(new ProcessesLiteral(clazz));
|
||||||
|
|
||||||
|
final EntityImExporter<?> imExporter;
|
||||||
|
if (instance.isUnsatisfied()) {
|
||||||
|
throw new UnexpectedErrorException(String.format(
|
||||||
|
"No EntityImExporter for entity type \"%s\" available.",
|
||||||
|
type));
|
||||||
|
} else if (instance.isAmbiguous()) {
|
||||||
|
throw new UnexpectedErrorException(String.format(
|
||||||
|
"Instance reference for EntityImExporter for entity "
|
||||||
|
+ "type \"%s\" is ambiguous.",
|
||||||
|
type));
|
||||||
|
} else {
|
||||||
|
imExporter = instance.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Exportable entity : entities) {
|
||||||
|
|
||||||
|
final String filename = String.format("%s.json", entity.getUuid());
|
||||||
|
final OutputStream outputStream;
|
||||||
|
try {
|
||||||
|
outputStream = ccmFiles.createOutputStream(String.format(
|
||||||
|
"exports/%s/%s/%s",
|
||||||
|
exportName,
|
||||||
|
type,
|
||||||
|
filename));
|
||||||
|
filesArrayBuilder.add(filename);
|
||||||
|
} catch (FileAccessException
|
||||||
|
| InsufficientPermissionsException ex) {
|
||||||
|
throw new UnexpectedErrorException(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
final JsonObject exportedEntity = imExporter.exportEntity(entity);
|
||||||
|
try (JsonWriter writer = Json.createWriter(outputStream)) {
|
||||||
|
writer.writeObject(exportedEntity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return filesArrayBuilder;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -122,13 +249,90 @@ public class ImportExport {
|
||||||
|
|
||||||
final ImportManifest manifest = createImportManifest(importName);
|
final ImportManifest manifest = createImportManifest(importName);
|
||||||
|
|
||||||
//ToDo
|
final List<EntityImExporterTreeNode> importers = orderedNodes
|
||||||
|
.stream()
|
||||||
|
.filter(node -> filterImporters(manifest, node))
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
importers
|
||||||
|
.stream()
|
||||||
|
.map(EntityImExporterTreeNode::getEntityImExporter)
|
||||||
|
.forEach(imExporter -> importEntitiesOfType(importName,
|
||||||
|
imExporter));
|
||||||
|
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
|
||||||
} catch (DependencyException ex) {
|
} catch (DependencyException ex) {
|
||||||
throw new UnexpectedErrorException(ex);
|
throw new UnexpectedErrorException(ex);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
throw new UnsupportedOperationException();
|
private boolean filterImporters(final ImportManifest manifest,
|
||||||
|
final EntityImExporterTreeNode node) {
|
||||||
|
|
||||||
|
final EntityImExporter<?> imExporter = node.getEntityImExporter();
|
||||||
|
final String type = imExporter
|
||||||
|
.getClass()
|
||||||
|
.getAnnotation(Processes.class).value().getName();
|
||||||
|
|
||||||
|
return manifest.getTypes().contains(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void importEntitiesOfType(
|
||||||
|
final String importName,
|
||||||
|
final EntityImExporter<?> entityImExporter) {
|
||||||
|
|
||||||
|
final String type = entityImExporter
|
||||||
|
.getClass()
|
||||||
|
.getAnnotation(Processes.class).value().getName();
|
||||||
|
|
||||||
|
try (final InputStream tocInputStream = ccmFiles
|
||||||
|
.createInputStream(String.format("imports/%s/%s/%s.json",
|
||||||
|
importName,
|
||||||
|
type,
|
||||||
|
type))) {
|
||||||
|
|
||||||
|
final JsonReader tocReader = Json.createReader(tocInputStream);
|
||||||
|
final JsonObject toc = tocReader.readObject();
|
||||||
|
final JsonArray files = toc.getJsonArray("files");
|
||||||
|
|
||||||
|
files.forEach(value -> importEntity(importName,
|
||||||
|
type,
|
||||||
|
value.toString(),
|
||||||
|
entityImExporter));
|
||||||
|
|
||||||
|
} catch (IOException
|
||||||
|
| FileDoesNotExistException
|
||||||
|
| FileAccessException
|
||||||
|
| InsufficientPermissionsException ex) {
|
||||||
|
|
||||||
|
throw new UnexpectedErrorException(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void importEntity(final String importName,
|
||||||
|
final String type,
|
||||||
|
final String fileName,
|
||||||
|
final EntityImExporter<?> imExporter) {
|
||||||
|
|
||||||
|
final String filePath = String.format("imports/%s/%s/%s",
|
||||||
|
importName,
|
||||||
|
type,
|
||||||
|
fileName);
|
||||||
|
try (final InputStream inputStream
|
||||||
|
= ccmFiles.createInputStream(filePath)) {
|
||||||
|
|
||||||
|
final JsonReader reader = Json.createReader(inputStream);
|
||||||
|
final JsonObject data = reader.readObject();
|
||||||
|
|
||||||
|
imExporter.importEntity(data);
|
||||||
|
|
||||||
|
} catch (IOException
|
||||||
|
| FileDoesNotExistException
|
||||||
|
| FileAccessException
|
||||||
|
| InsufficientPermissionsException ex) {
|
||||||
|
throw new UnexpectedErrorException(ex);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -218,6 +422,25 @@ public class ImportExport {
|
||||||
|
|
||||||
throw new UnexpectedErrorException(ex);
|
throw new UnexpectedErrorException(ex);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class ProcessesLiteral
|
||||||
|
extends AnnotationLiteral<Processes>
|
||||||
|
implements Processes {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
private final Class<? extends Exportable> value;
|
||||||
|
|
||||||
|
private ProcessesLiteral(final Class<? extends Exportable> value) {
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<? extends Exportable> value() {
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@ import java.lang.annotation.Retention;
|
||||||
import java.lang.annotation.RetentionPolicy;
|
import java.lang.annotation.RetentionPolicy;
|
||||||
import java.lang.annotation.Target;
|
import java.lang.annotation.Target;
|
||||||
|
|
||||||
import javax.enterprise.util.Nonbinding;
|
|
||||||
import javax.inject.Qualifier;
|
import javax.inject.Qualifier;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -40,9 +39,6 @@ import javax.inject.Qualifier;
|
||||||
ElementType.METHOD})
|
ElementType.METHOD})
|
||||||
public @interface Processes {
|
public @interface Processes {
|
||||||
|
|
||||||
Class<? extends Exportable> type();
|
Class<? extends Exportable> value();
|
||||||
|
|
||||||
@Nonbinding
|
|
||||||
Class<? extends Exportable>[] dependsOn();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -96,6 +96,9 @@ public class Party implements Serializable {
|
||||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
@GeneratedValue(strategy = GenerationType.AUTO)
|
||||||
private long partyId;
|
private long partyId;
|
||||||
|
|
||||||
|
@Column(name = "UUID", unique = true, nullable = false)
|
||||||
|
private String uuid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The name of the party. Must only contain the letters a to z and A to Z,
|
* The name of the party. Must only contain the letters a to z and A to Z,
|
||||||
* the numbers 0 to 9 the {@code -} (dash) and the {@code _} (underscore).
|
* the numbers 0 to 9 the {@code -} (dash) and the {@code _} (underscore).
|
||||||
|
|
@ -126,6 +129,14 @@ public class Party implements Serializable {
|
||||||
this.partyId = partyId;
|
this.partyId = partyId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getUuid() {
|
||||||
|
return uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void setUuid(final String uuid) {
|
||||||
|
this.uuid = uuid;
|
||||||
|
}
|
||||||
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,8 +24,10 @@ import org.libreccm.core.CoreConstants;
|
||||||
import javax.enterprise.context.RequestScoped;
|
import javax.enterprise.context.RequestScoped;
|
||||||
import javax.persistence.TypedQuery;
|
import javax.persistence.TypedQuery;
|
||||||
import javax.transaction.Transactional;
|
import javax.transaction.Transactional;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Repository class for parties.
|
* Repository class for parties.
|
||||||
|
|
@ -60,6 +62,11 @@ public class PartyRepository extends AbstractEntityRepository<Long, Party> {
|
||||||
return entity.getPartyId() == 0;
|
return entity.getPartyId() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initNewEntity(final Party party) {
|
||||||
|
party.setUuid(UUID.randomUUID().toString());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds a {@link Party} (which can be a user or group) by its name.
|
* Finds a {@link Party} (which can be a user or group) by its name.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -24,15 +24,46 @@ import com.fasterxml.jackson.annotation.ObjectIdGenerators;
|
||||||
import org.libreccm.core.EmailAddress;
|
import org.libreccm.core.EmailAddress;
|
||||||
import org.libreccm.portation.Portable;
|
import org.libreccm.portation.Portable;
|
||||||
|
|
||||||
import javax.persistence.*;
|
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
import javax.xml.bind.annotation.*;
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.*;
|
|
||||||
|
|
||||||
import static org.libreccm.core.CoreConstants.CORE_XML_NS;
|
import static org.libreccm.core.CoreConstants.CORE_XML_NS;
|
||||||
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||||
|
|
||||||
|
import org.libreccm.imexport.Exportable;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import javax.persistence.AssociationOverride;
|
||||||
|
import javax.persistence.CollectionTable;
|
||||||
|
import javax.persistence.Column;
|
||||||
|
import javax.persistence.ElementCollection;
|
||||||
|
import javax.persistence.Embedded;
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.FetchType;
|
||||||
|
import javax.persistence.JoinColumn;
|
||||||
|
import javax.persistence.JoinTable;
|
||||||
|
import javax.persistence.NamedAttributeNode;
|
||||||
|
import javax.persistence.NamedEntityGraph;
|
||||||
|
import javax.persistence.NamedEntityGraphs;
|
||||||
|
import javax.persistence.NamedQueries;
|
||||||
|
import javax.persistence.NamedQuery;
|
||||||
|
import javax.persistence.NamedSubgraph;
|
||||||
|
import javax.persistence.OneToMany;
|
||||||
|
import javax.persistence.Table;
|
||||||
|
import javax.xml.bind.annotation.XmlAccessType;
|
||||||
|
import javax.xml.bind.annotation.XmlAccessorType;
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlElementWrapper;
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
import javax.xml.bind.annotation.XmlTransient;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A user is a person (or a system) accessing CCM. A user authenticates itself
|
* A user is a person (or a system) accessing CCM. A user authenticates itself
|
||||||
* using a password or other credentials.
|
* using a password or other credentials.
|
||||||
|
|
@ -121,7 +152,7 @@ import static org.libreccm.core.CoreConstants.DB_SCHEMA;
|
||||||
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
|
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class,
|
||||||
resolver = UserIdResolver.class,
|
resolver = UserIdResolver.class,
|
||||||
property = "name")
|
property = "name")
|
||||||
public class User extends Party implements Serializable, Portable {
|
public class User extends Party implements Serializable, Exportable, Portable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 4035223413596611393L;
|
private static final long serialVersionUID = 4035223413596611393L;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2018 LibreCCM Foundation.
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||||
|
* MA 02110-1301 USA
|
||||||
|
*/
|
||||||
|
package org.libreccm.security;
|
||||||
|
|
||||||
|
import org.libreccm.imexport.EntityImExporter;
|
||||||
|
import org.libreccm.imexport.Exportable;
|
||||||
|
import org.libreccm.imexport.Processes;
|
||||||
|
|
||||||
|
import javax.enterprise.context.RequestScoped;
|
||||||
|
import javax.json.JsonObject;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||||
|
*/
|
||||||
|
@RequestScoped
|
||||||
|
@Processes(User.class)
|
||||||
|
public class UserImExporter implements EntityImExporter<User> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public User importEntity(final JsonObject data) {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JsonObject exportEntity(final Exportable entity) {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
alter table CCM_CORE.PARTIES
|
||||||
|
add column UUID varchar(255) not null;
|
||||||
|
|
||||||
|
alter table CCM_CORE.PARTIES
|
||||||
|
add constraint UK_1hv061qace2mn4loroe3fwdel unique (UUID);
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
alter table CCM_CORE.PARTIES
|
||||||
|
add column UUID varchar(255) not null;
|
||||||
|
|
||||||
|
alter table CCM_CORE.PARTIES
|
||||||
|
add constraint UK_1hv061qace2mn4loroe3fwdel unique (UUID);
|
||||||
|
|
@ -440,6 +440,7 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
create table CCM_CORE.PARTIES (
|
create table CCM_CORE.PARTIES (
|
||||||
PARTY_ID bigint not null,
|
PARTY_ID bigint not null,
|
||||||
NAME varchar(256) not null,
|
NAME varchar(256) not null,
|
||||||
|
UUID varchar(255) not null,
|
||||||
primary key (PARTY_ID)
|
primary key (PARTY_ID)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -540,11 +541,11 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
SETTING_ID bigint not null,
|
SETTING_ID bigint not null,
|
||||||
CONFIGURATION_CLASS varchar(512) not null,
|
CONFIGURATION_CLASS varchar(512) not null,
|
||||||
NAME varchar(512) not null,
|
NAME varchar(512) not null,
|
||||||
SETTING_VALUE_STRING varchar(1024),
|
|
||||||
SETTING_VALUE_LONG bigint,
|
|
||||||
SETTING_VALUE_BOOLEAN boolean,
|
|
||||||
SETTING_VALUE_DOUBLE double,
|
|
||||||
SETTING_VALUE_BIG_DECIMAL decimal(19,2),
|
SETTING_VALUE_BIG_DECIMAL decimal(19,2),
|
||||||
|
SETTING_VALUE_BOOLEAN boolean,
|
||||||
|
SETTING_VALUE_STRING varchar(1024),
|
||||||
|
SETTING_VALUE_DOUBLE double,
|
||||||
|
SETTING_VALUE_LONG bigint,
|
||||||
primary key (SETTING_ID)
|
primary key (SETTING_ID)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -776,6 +777,9 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
alter table CCM_CORE.INSTALLED_MODULES
|
alter table CCM_CORE.INSTALLED_MODULES
|
||||||
add constraint UK_11imwgfojyi4hpr18uw9g3jvx unique (MODULE_CLASS_NAME);
|
add constraint UK_11imwgfojyi4hpr18uw9g3jvx unique (MODULE_CLASS_NAME);
|
||||||
|
|
||||||
|
alter table CCM_CORE.PARTIES
|
||||||
|
add constraint UK_1hv061qace2mn4loroe3fwdel unique (UUID);
|
||||||
|
|
||||||
alter table CCM_CORE.SETTINGS
|
alter table CCM_CORE.SETTINGS
|
||||||
add constraint UK5whinfxdaepqs09e5ia9y71uk unique (CONFIGURATION_CLASS, NAME);
|
add constraint UK5whinfxdaepqs09e5ia9y71uk unique (CONFIGURATION_CLASS, NAME);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
|
|
||||||
create schema CCM_CORE;
|
create schema CCM_CORE;
|
||||||
|
|
||||||
|
|
||||||
create table CCM_CORE.APPLICATIONS (
|
create table CCM_CORE.APPLICATIONS (
|
||||||
APPLICATION_TYPE varchar(1024) not null,
|
APPLICATION_TYPE varchar(1024) not null,
|
||||||
PRIMARY_URL varchar(1024) not null,
|
PRIMARY_URL varchar(1024) not null,
|
||||||
|
|
@ -441,6 +440,7 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
create table CCM_CORE.PARTIES (
|
create table CCM_CORE.PARTIES (
|
||||||
PARTY_ID int8 not null,
|
PARTY_ID int8 not null,
|
||||||
NAME varchar(256) not null,
|
NAME varchar(256) not null,
|
||||||
|
UUID varchar(255) not null,
|
||||||
primary key (PARTY_ID)
|
primary key (PARTY_ID)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -541,11 +541,11 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
SETTING_ID int8 not null,
|
SETTING_ID int8 not null,
|
||||||
CONFIGURATION_CLASS varchar(512) not null,
|
CONFIGURATION_CLASS varchar(512) not null,
|
||||||
NAME varchar(512) not null,
|
NAME varchar(512) not null,
|
||||||
SETTING_VALUE_STRING varchar(1024),
|
|
||||||
SETTING_VALUE_LONG int8,
|
|
||||||
SETTING_VALUE_BOOLEAN boolean,
|
|
||||||
SETTING_VALUE_DOUBLE float8,
|
|
||||||
SETTING_VALUE_BIG_DECIMAL numeric(19, 2),
|
SETTING_VALUE_BIG_DECIMAL numeric(19, 2),
|
||||||
|
SETTING_VALUE_BOOLEAN boolean,
|
||||||
|
SETTING_VALUE_STRING varchar(1024),
|
||||||
|
SETTING_VALUE_DOUBLE float8,
|
||||||
|
SETTING_VALUE_LONG int8,
|
||||||
primary key (SETTING_ID)
|
primary key (SETTING_ID)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -777,6 +777,9 @@ drop sequence if exists HIBERNATE_SEQUENCE;
|
||||||
alter table CCM_CORE.INSTALLED_MODULES
|
alter table CCM_CORE.INSTALLED_MODULES
|
||||||
add constraint UK_11imwgfojyi4hpr18uw9g3jvx unique (MODULE_CLASS_NAME);
|
add constraint UK_11imwgfojyi4hpr18uw9g3jvx unique (MODULE_CLASS_NAME);
|
||||||
|
|
||||||
|
alter table CCM_CORE.PARTIES
|
||||||
|
add constraint UK_1hv061qace2mn4loroe3fwdel unique (UUID);
|
||||||
|
|
||||||
alter table CCM_CORE.SETTINGS
|
alter table CCM_CORE.SETTINGS
|
||||||
add constraint UK5whinfxdaepqs09e5ia9y71uk unique (CONFIGURATION_CLASS, NAME);
|
add constraint UK5whinfxdaepqs09e5ia9y71uk unique (CONFIGURATION_CLASS, NAME);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -69,10 +69,13 @@ ccm_core.categorizations:
|
||||||
|
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
- party_id: -3000
|
- party_id: -3000
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: public-user
|
name: public-user
|
||||||
- party_id: -3100
|
- party_id: -3100
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: jdoe
|
name: jdoe
|
||||||
- party_id: -3200
|
- party_id: -3200
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: mmuster
|
name: mmuster
|
||||||
|
|
||||||
ccm_core.users:
|
ccm_core.users:
|
||||||
|
|
|
||||||
|
|
@ -56,10 +56,13 @@ ccm_core.category_domains:
|
||||||
|
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
- party_id: -100
|
- party_id: -100
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: public-user
|
name: public-user
|
||||||
- party_id: -200
|
- party_id: -200
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: jdoe
|
name: jdoe
|
||||||
- party_id: -300
|
- party_id: -300
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: mmuster
|
name: mmuster
|
||||||
|
|
||||||
ccm_core.users:
|
ccm_core.users:
|
||||||
|
|
|
||||||
|
|
@ -46,10 +46,13 @@ ccm_core.category_domains:
|
||||||
|
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
- party_id: -100
|
- party_id: -100
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: public-user
|
name: public-user
|
||||||
- party_id: -200
|
- party_id: -200
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: jdoe
|
name: jdoe
|
||||||
- party_id: -300
|
- party_id: -300
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: mmuster
|
name: mmuster
|
||||||
|
|
||||||
ccm_core.users:
|
ccm_core.users:
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,10 @@
|
||||||
version="1.0"/>
|
version="1.0"/>
|
||||||
|
|
||||||
<ccm_core.parties party_id="-10"
|
<ccm_core.parties party_id="-10"
|
||||||
|
uuid="631be113-7e86-453d-9f8b-8cb6cb6df268"
|
||||||
name="jdoe"/>
|
name="jdoe"/>
|
||||||
<ccm_core.parties party_id="-20"
|
<ccm_core.parties party_id="-20"
|
||||||
|
uuid="3a61d302-97a5-4e46-bbc9-8d716f7c54c4"
|
||||||
name="mmuster"/>
|
name="mmuster"/>
|
||||||
|
|
||||||
<ccm_core.users party_id="-10"
|
<ccm_core.users party_id="-10"
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,10 @@
|
||||||
version="1.0"/>
|
version="1.0"/>
|
||||||
|
|
||||||
<ccm_core.parties party_id="-10"
|
<ccm_core.parties party_id="-10"
|
||||||
|
uuid="631be113-7e86-453d-9f8b-8cb6cb6df268"
|
||||||
name="jdoe"/>
|
name="jdoe"/>
|
||||||
<ccm_core.parties party_id="-20"
|
<ccm_core.parties party_id="-20"
|
||||||
|
uuid="3a61d302-97a5-4e46-bbc9-8d716f7c54c4"
|
||||||
name="mmuster"/>
|
name="mmuster"/>
|
||||||
|
|
||||||
<ccm_core.users party_id="-10"
|
<ccm_core.users party_id="-10"
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,10 @@
|
||||||
version="1.0"/>
|
version="1.0"/>
|
||||||
|
|
||||||
<ccm_core.parties party_id="-10"
|
<ccm_core.parties party_id="-10"
|
||||||
|
uuid="631be113-7e86-453d-9f8b-8cb6cb6df268"
|
||||||
name="jdoe"/>
|
name="jdoe"/>
|
||||||
<ccm_core.parties party_id="-20"
|
<ccm_core.parties party_id="-20"
|
||||||
|
uuid="3a61d302-97a5-4e46-bbc9-8d716f7c54c4"
|
||||||
name="mmuster"/>
|
name="mmuster"/>
|
||||||
|
|
||||||
<ccm_core.users party_id="-10"
|
<ccm_core.users party_id="-10"
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,10 @@
|
||||||
version="1.0"/>
|
version="1.0"/>
|
||||||
|
|
||||||
<ccm_core.parties party_id="-10"
|
<ccm_core.parties party_id="-10"
|
||||||
|
uuid="631be113-7e86-453d-9f8b-8cb6cb6df268"
|
||||||
name="jdoe"/>
|
name="jdoe"/>
|
||||||
<ccm_core.parties party_id="-20"
|
<ccm_core.parties party_id="-20"
|
||||||
|
uuid="3a61d302-97a5-4e46-bbc9-8d716f7c54c4"
|
||||||
name="mmuster"/>
|
name="mmuster"/>
|
||||||
|
|
||||||
<ccm_core.users party_id="-10"
|
<ccm_core.users party_id="-10"
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,10 @@
|
||||||
version="1.0"/>
|
version="1.0"/>
|
||||||
|
|
||||||
<ccm_core.parties party_id="-10"
|
<ccm_core.parties party_id="-10"
|
||||||
|
uuid="631be113-7e86-453d-9f8b-8cb6cb6df268"
|
||||||
name="jdoe"/>
|
name="jdoe"/>
|
||||||
<ccm_core.parties party_id="-20"
|
<ccm_core.parties party_id="-20"
|
||||||
|
uuid="3a61d302-97a5-4e46-bbc9-8d716f7c54c4"
|
||||||
name="mmuster"/>
|
name="mmuster"/>
|
||||||
|
|
||||||
<ccm_core.users party_id="-10"
|
<ccm_core.users party_id="-10"
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,10 @@
|
||||||
version="1.0"/>
|
version="1.0"/>
|
||||||
|
|
||||||
<ccm_core.parties party_id="-10"
|
<ccm_core.parties party_id="-10"
|
||||||
|
uuid="631be113-7e86-453d-9f8b-8cb6cb6df268"
|
||||||
name="jdoe"/>
|
name="jdoe"/>
|
||||||
<ccm_core.parties party_id="-20"
|
<ccm_core.parties party_id="-20"
|
||||||
|
uuid="3a61d302-97a5-4e46-bbc9-8d716f7c54c4"
|
||||||
name="mmuster"/>
|
name="mmuster"/>
|
||||||
|
|
||||||
<ccm_core.users party_id="-10"
|
<ccm_core.users party_id="-10"
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,10 @@
|
||||||
version="1.0"/>
|
version="1.0"/>
|
||||||
|
|
||||||
<ccm_core.parties party_id="-10"
|
<ccm_core.parties party_id="-10"
|
||||||
|
uuid="631be113-7e86-453d-9f8b-8cb6cb6df268"
|
||||||
name="jdoe"/>
|
name="jdoe"/>
|
||||||
<ccm_core.parties party_id="-20"
|
<ccm_core.parties party_id="-20"
|
||||||
|
uuid="3a61d302-97a5-4e46-bbc9-8d716f7c54c4"
|
||||||
name="mmuster"/>
|
name="mmuster"/>
|
||||||
|
|
||||||
<ccm_core.users party_id="-10"
|
<ccm_core.users party_id="-10"
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,10 @@
|
||||||
version="1.0"/>
|
version="1.0"/>
|
||||||
|
|
||||||
<ccm_core.parties party_id="-10"
|
<ccm_core.parties party_id="-10"
|
||||||
|
uuid="631be113-7e86-453d-9f8b-8cb6cb6df268"
|
||||||
name="jdoe"/>
|
name="jdoe"/>
|
||||||
<ccm_core.parties party_id="-20"
|
<ccm_core.parties party_id="-20"
|
||||||
|
uuid="3a61d302-97a5-4e46-bbc9-8d716f7c54c4"
|
||||||
name="mmuster"/>
|
name="mmuster"/>
|
||||||
|
|
||||||
<ccm_core.users party_id="-10"
|
<ccm_core.users party_id="-10"
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,10 @@
|
||||||
version="1.0"/>
|
version="1.0"/>
|
||||||
|
|
||||||
<ccm_core.parties party_id="-10"
|
<ccm_core.parties party_id="-10"
|
||||||
|
uuid="631be113-7e86-453d-9f8b-8cb6cb6df268"
|
||||||
name="jdoe"/>
|
name="jdoe"/>
|
||||||
<ccm_core.parties party_id="-20"
|
<ccm_core.parties party_id="-20"
|
||||||
|
uuid="3a61d302-97a5-4e46-bbc9-8d716f7c54c4"
|
||||||
name="mmuster"/>
|
name="mmuster"/>
|
||||||
|
|
||||||
<ccm_core.users party_id="-10"
|
<ccm_core.users party_id="-10"
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,10 @@
|
||||||
version="1.0"/>
|
version="1.0"/>
|
||||||
|
|
||||||
<ccm_core.parties party_id="-10"
|
<ccm_core.parties party_id="-10"
|
||||||
|
uuid="631be113-7e86-453d-9f8b-8cb6cb6df268"
|
||||||
name="jdoe"/>
|
name="jdoe"/>
|
||||||
<ccm_core.parties party_id="-20"
|
<ccm_core.parties party_id="-20"
|
||||||
|
uuid="3a61d302-97a5-4e46-bbc9-8d716f7c54c4"
|
||||||
name="mmuster"/>
|
name="mmuster"/>
|
||||||
|
|
||||||
<ccm_core.users party_id="-10"
|
<ccm_core.users party_id="-10"
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,27 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
# John Doe
|
# John Doe
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: jdoe
|
name: jdoe
|
||||||
# Max Muster
|
# Max Muster
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: mmuster
|
name: mmuster
|
||||||
# Joe Public
|
# Joe Public
|
||||||
- party_id: -30
|
- party_id: -30
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: joe
|
name: joe
|
||||||
# admins
|
# admins
|
||||||
- party_id: -40
|
- party_id: -40
|
||||||
|
uuid: 0fc446b7-a242-4407-9d04-b8ccaaa9dee5
|
||||||
name: admins
|
name: admins
|
||||||
# users
|
# users
|
||||||
- party_id: -50
|
- party_id: -50
|
||||||
|
uuid: 2082d7fc-8268-4195-8cbe-eb826b1afaeb
|
||||||
name: users
|
name: users
|
||||||
# editors
|
# editors
|
||||||
- party_id: -60
|
- party_id: -60
|
||||||
|
uuid: 176bfecc-c0fa-4e76-8935-5d6d0ec60e8c
|
||||||
name: editors
|
name: editors
|
||||||
ccm_core.users:
|
ccm_core.users:
|
||||||
# John Doe
|
# John Doe
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,27 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
# John Doe
|
# John Doe
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: jdoe
|
name: jdoe
|
||||||
# Max Muster
|
# Max Muster
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: mmuster
|
name: mmuster
|
||||||
# Joe Public
|
# Joe Public
|
||||||
- party_id: -30
|
- party_id: -30
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: joe
|
name: joe
|
||||||
# admins
|
# admins
|
||||||
- party_id: -40
|
- party_id: -40
|
||||||
|
uuid: 0fc446b7-a242-4407-9d04-b8ccaaa9dee5
|
||||||
name: admins
|
name: admins
|
||||||
# users
|
# users
|
||||||
- party_id: -50
|
- party_id: -50
|
||||||
|
uuid: 2082d7fc-8268-4195-8cbe-eb826b1afaeb
|
||||||
name: users
|
name: users
|
||||||
# editors
|
# editors
|
||||||
- party_id: -60
|
- party_id: -60
|
||||||
|
uuid: 176bfecc-c0fa-4e76-8935-5d6d0ec60e8c
|
||||||
name: editors
|
name: editors
|
||||||
ccm_core.users:
|
ccm_core.users:
|
||||||
# John Doe
|
# John Doe
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,27 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
# John Doe
|
# John Doe
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: jdoe
|
name: jdoe
|
||||||
# Max Muster
|
# Max Muster
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: mmuster
|
name: mmuster
|
||||||
# Joe Public
|
# Joe Public
|
||||||
- party_id: -30
|
- party_id: -30
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: joe
|
name: joe
|
||||||
# admins
|
# admins
|
||||||
- party_id: -40
|
- party_id: -40
|
||||||
|
uuid: 0fc446b7-a242-4407-9d04-b8ccaaa9dee5
|
||||||
name: admins
|
name: admins
|
||||||
# users
|
# users
|
||||||
- party_id: -50
|
- party_id: -50
|
||||||
|
uuid: 2082d7fc-8268-4195-8cbe-eb826b1afaeb
|
||||||
name: users
|
name: users
|
||||||
# editors
|
# editors
|
||||||
- party_id: -60
|
- party_id: -60
|
||||||
|
uuid: 176bfecc-c0fa-4e76-8935-5d6d0ec60e8c
|
||||||
name: editors
|
name: editors
|
||||||
ccm_core.users:
|
ccm_core.users:
|
||||||
# John Doe
|
# John Doe
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: admins
|
name: admins
|
||||||
- party_id: -30
|
- party_id: -30
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: editors
|
name: editors
|
||||||
ccm_core.groups:
|
ccm_core.groups:
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: admins
|
name: admins
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: users
|
name: users
|
||||||
- party_id: -30
|
- party_id: -30
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: authors
|
name: authors
|
||||||
ccm_core.groups:
|
ccm_core.groups:
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,15 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: admins
|
name: admins
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: users
|
name: users
|
||||||
- party_id: -30
|
- party_id: -30
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: editors
|
name: editors
|
||||||
- party_id: -40
|
- party_id: -40
|
||||||
|
uuid: 0fc446b7-a242-4407-9d04-b8ccaaa9dee5
|
||||||
name: authors
|
name: authors
|
||||||
ccm_core.groups:
|
ccm_core.groups:
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,12 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: admins
|
name: admins
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: users
|
name: users
|
||||||
- party_id: -30
|
- party_id: -30
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: editors
|
name: editors
|
||||||
ccm_core.groups:
|
ccm_core.groups:
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,10 @@
|
||||||
version="1.0"/>
|
version="1.0"/>
|
||||||
|
|
||||||
<ccm_core.parties party_id="-10"
|
<ccm_core.parties party_id="-10"
|
||||||
|
uuid="631be113-7e86-453d-9f8b-8cb6cb6df268"
|
||||||
name="jdoe"/>
|
name="jdoe"/>
|
||||||
<ccm_core.parties party_id="-20"
|
<ccm_core.parties party_id="-20"
|
||||||
|
uuid="3a61d302-97a5-4e46-bbc9-8d716f7c54c4"
|
||||||
name="mmuster"/>
|
name="mmuster"/>
|
||||||
|
|
||||||
<ccm_core.users party_id="-10"
|
<ccm_core.users party_id="-10"
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,10 @@
|
||||||
version="1.0"/>
|
version="1.0"/>
|
||||||
|
|
||||||
<ccm_core.parties party_id="-10"
|
<ccm_core.parties party_id="-10"
|
||||||
|
uuid="631be113-7e86-453d-9f8b-8cb6cb6df268"
|
||||||
name="jdoe"/>
|
name="jdoe"/>
|
||||||
<ccm_core.parties party_id="-20"
|
<ccm_core.parties party_id="-20"
|
||||||
|
uuid="3a61d302-97a5-4e46-bbc9-8d716f7c54c4"
|
||||||
name="mmuster"/>
|
name="mmuster"/>
|
||||||
|
|
||||||
<ccm_core.users party_id="-10"
|
<ccm_core.users party_id="-10"
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,10 @@
|
||||||
version="1.0"/>
|
version="1.0"/>
|
||||||
|
|
||||||
<ccm_core.parties party_id="-10"
|
<ccm_core.parties party_id="-10"
|
||||||
|
uuid="631be113-7e86-453d-9f8b-8cb6cb6df268"
|
||||||
name="jdoe"/>
|
name="jdoe"/>
|
||||||
<ccm_core.parties party_id="-20"
|
<ccm_core.parties party_id="-20"
|
||||||
|
uuid="3a61d302-97a5-4e46-bbc9-8d716f7c54c4"
|
||||||
name="mmuster"/>
|
name="mmuster"/>
|
||||||
|
|
||||||
<ccm_core.users party_id="-10"
|
<ccm_core.users party_id="-10"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: admins
|
name: admins
|
||||||
ccm_core.groups:
|
ccm_core.groups:
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
# John Doe
|
# John Doe
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
name: johndoe
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
|
name: jdoe
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: managers
|
name: managers
|
||||||
ccm_core.groups:
|
ccm_core.groups:
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,16 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
# John Doe
|
# John Doe
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: jdoe
|
name: jdoe
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: admins
|
name: admins
|
||||||
- party_id: -30
|
- party_id: -30
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: mmuster
|
name: mmuster
|
||||||
- party_id: -40
|
- party_id: -40
|
||||||
|
uuid: 0fc446b7-a242-4407-9d04-b8ccaaa9dee5
|
||||||
name: users
|
name: users
|
||||||
ccm_core.groups:
|
ccm_core.groups:
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
# John Doe
|
# John Doe
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: jdoe
|
name: jdoe
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: admins
|
name: admins
|
||||||
ccm_core.groups:
|
ccm_core.groups:
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,27 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
# John Doe
|
# John Doe
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: jdoe
|
name: jdoe
|
||||||
# Max Muster
|
# Max Muster
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: mmuster
|
name: mmuster
|
||||||
# Joe Public
|
# Joe Public
|
||||||
- party_id: -30
|
- party_id: -30
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: joe
|
name: joe
|
||||||
# group1
|
# group1
|
||||||
- party_id: -100
|
- party_id: -100
|
||||||
|
uuid: 0fc446b7-a242-4407-9d04-b8ccaaa9dee5
|
||||||
name: group1
|
name: group1
|
||||||
# group2
|
# group2
|
||||||
- party_id: -200
|
- party_id: -200
|
||||||
|
uuid: 2082d7fc-8268-4195-8cbe-eb826b1afaeb
|
||||||
name: group2
|
name: group2
|
||||||
# group3
|
# group3
|
||||||
- party_id: -300
|
- party_id: -300
|
||||||
|
uuid: 176bfecc-c0fa-4e76-8935-5d6d0ec60e8c
|
||||||
name: group3
|
name: group3
|
||||||
ccm_core.users:
|
ccm_core.users:
|
||||||
# John Doe
|
# John Doe
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,27 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
# John Doe
|
# John Doe
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: jdoe
|
name: jdoe
|
||||||
# Max Muster
|
# Max Muster
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: mmuster
|
name: mmuster
|
||||||
# Joe Public
|
# Joe Public
|
||||||
- party_id: -30
|
- party_id: -30
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: joe
|
name: joe
|
||||||
# group1
|
# group1
|
||||||
- party_id: -100
|
- party_id: -100
|
||||||
|
uuid: 0fc446b7-a242-4407-9d04-b8ccaaa9dee5
|
||||||
name: group1
|
name: group1
|
||||||
# group2
|
# group2
|
||||||
- party_id: -200
|
- party_id: -200
|
||||||
|
uuid: 2082d7fc-8268-4195-8cbe-eb826b1afaeb
|
||||||
name: group2
|
name: group2
|
||||||
# group3
|
# group3
|
||||||
- party_id: -300
|
- party_id: -300
|
||||||
|
uuid: 176bfecc-c0fa-4e76-8935-5d6d0ec60e8c
|
||||||
name: group3
|
name: group3
|
||||||
ccm_core.users:
|
ccm_core.users:
|
||||||
# John Doe
|
# John Doe
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,27 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
# John Doe
|
# John Doe
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: jdoe
|
name: jdoe
|
||||||
# Max Muster
|
# Max Muster
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: mmuster
|
name: mmuster
|
||||||
# Joe Public
|
# Joe Public
|
||||||
- party_id: -30
|
- party_id: -30
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: joe
|
name: joe
|
||||||
# group1
|
# group1
|
||||||
- party_id: -100
|
- party_id: -100
|
||||||
|
uuid: 0fc446b7-a242-4407-9d04-b8ccaaa9dee5
|
||||||
name: group1
|
name: group1
|
||||||
# group2
|
# group2
|
||||||
- party_id: -200
|
- party_id: -200
|
||||||
|
uuid: 2082d7fc-8268-4195-8cbe-eb826b1afaeb
|
||||||
name: group2
|
name: group2
|
||||||
# group3
|
# group3
|
||||||
- party_id: -300
|
- party_id: -300
|
||||||
|
uuid: 176bfecc-c0fa-4e76-8935-5d6d0ec60e8c
|
||||||
name: group3
|
name: group3
|
||||||
ccm_core.users:
|
ccm_core.users:
|
||||||
# John Doe
|
# John Doe
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,27 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
- party_id: -41001
|
- party_id: -41001
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: jdoe
|
name: jdoe
|
||||||
- party_id: -41002
|
- party_id: -41002
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: mmuster
|
name: mmuster
|
||||||
- party_id: -41003
|
- party_id: -41003
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: joe
|
name: joe
|
||||||
- party_id: -41004
|
- party_id: -41004
|
||||||
|
uuid: 0fc446b7-a242-4407-9d04-b8ccaaa9dee5
|
||||||
name: public-user
|
name: public-user
|
||||||
- party_id: -41005
|
- party_id: -41005
|
||||||
|
uuid: 2082d7fc-8268-4195-8cbe-eb826b1afaeb
|
||||||
name: emuster
|
name: emuster
|
||||||
- party_id: -42001
|
- party_id: -42001
|
||||||
|
uuid: 176bfecc-c0fa-4e76-8935-5d6d0ec60e8c
|
||||||
name: group1
|
name: group1
|
||||||
- party_id: -42002
|
- party_id: -42002
|
||||||
|
uuid: 32521349-12f0-4d72-8468-c2bc9e33d4f1
|
||||||
name: group2
|
name: group2
|
||||||
- party_id: -42003
|
- party_id: -42003
|
||||||
|
uuid: 9c7c8689-f248-4f8b-a245-41545999395c
|
||||||
name: group3
|
name: group3
|
||||||
ccm_core.users:
|
ccm_core.users:
|
||||||
# John Doe
|
# John Doe
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,19 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
# John Doe
|
# John Doe
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: jdoe
|
name: jdoe
|
||||||
# mmuster
|
# mmuster
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: mmuster
|
name: mmuster
|
||||||
# Jdoe Public
|
# Jdoe Public
|
||||||
- party_id: -30
|
- party_id: -30
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: joe
|
name: joe
|
||||||
# Jane Doe
|
# Jane Doe
|
||||||
- party_id: -40
|
- party_id: -40
|
||||||
|
uuid: 0fc446b7-a242-4407-9d04-b8ccaaa9dee5
|
||||||
name: jane
|
name: jane
|
||||||
ccm_core.users:
|
ccm_core.users:
|
||||||
# John Doe
|
# John Doe
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,15 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
# John Doe
|
# John Doe
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: jdoe
|
name: jdoe
|
||||||
# mmuster
|
# mmuster
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: mmuster
|
name: mmuster
|
||||||
# Jdoe Public
|
# Jdoe Public
|
||||||
- party_id: -30
|
- party_id: -30
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: joe
|
name: joe
|
||||||
ccm_core.users:
|
ccm_core.users:
|
||||||
# John Doe
|
# John Doe
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,15 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
# John Doe
|
# John Doe
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: jdoe
|
name: jdoe
|
||||||
# JoePublic
|
# Max Muster
|
||||||
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
|
name: mmuster
|
||||||
|
# Joe Public
|
||||||
- party_id: -30
|
- party_id: -30
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: joe
|
name: joe
|
||||||
ccm_core.users:
|
ccm_core.users:
|
||||||
# John Doe
|
# John Doe
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,15 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
# John Doe
|
# John Doe
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: jdoe
|
name: jdoe
|
||||||
# mmuster
|
# Max Muster
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: mmuster
|
name: mmuster
|
||||||
# Jdoe Public
|
# Joe Public
|
||||||
- party_id: -30
|
- party_id: -30
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: joe
|
name: joe
|
||||||
ccm_core.users:
|
ccm_core.users:
|
||||||
# John Doe
|
# John Doe
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,19 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
# John Doe
|
# John Doe
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: jdoe
|
name: jdoe
|
||||||
# mmuster
|
# Max Muster
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: mmuster
|
name: mmuster
|
||||||
# Jdoe Public
|
# Joe Public
|
||||||
- party_id: -30
|
- party_id: -30
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: joe
|
name: joe
|
||||||
# Jane Doe
|
# Jane Doe
|
||||||
- party_id: -40
|
- party_id: -40
|
||||||
|
uuid: 0fc446b7-a242-4407-9d04-b8ccaaa9dee5
|
||||||
name: jane
|
name: jane
|
||||||
ccm_core.users:
|
ccm_core.users:
|
||||||
# John Doe
|
# John Doe
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,15 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
# John Doe
|
# John Doe
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: jdoe
|
name: jdoe
|
||||||
# mmuster
|
# Max Muster
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: mmuster
|
name: mmuster
|
||||||
# Jdoe Public
|
# Joe Public
|
||||||
- party_id: -30
|
- party_id: -30
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: joe
|
name: joe
|
||||||
ccm_core.users:
|
ccm_core.users:
|
||||||
# John Doe
|
# John Doe
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,15 @@
|
||||||
ccm_core.parties:
|
ccm_core.parties:
|
||||||
# John Doe
|
# John Doe
|
||||||
- party_id: -10
|
- party_id: -10
|
||||||
|
uuid: 631be113-7e86-453d-9f8b-8cb6cb6df268
|
||||||
name: jdoe
|
name: jdoe
|
||||||
# Max Muster
|
# Max Muster
|
||||||
- party_id: -20
|
- party_id: -20
|
||||||
|
uuid: 3a61d302-97a5-4e46-bbc9-8d716f7c54c4
|
||||||
name: mmuster
|
name: mmuster
|
||||||
# Joe Public
|
# Joe Public
|
||||||
- party_id: -30
|
- party_id: -30
|
||||||
|
uuid: 7d5ad4a7-c2bd-4e49-8716-0bfb40413c75
|
||||||
name: joe
|
name: joe
|
||||||
ccm_core.users:
|
ccm_core.users:
|
||||||
# John Doe
|
# John Doe
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue