1
0

#145 [Rights-Module] preparation for module specific roles / static init

This commit is contained in:
Michael Hoennig
2019-07-03 21:54:03 +02:00
parent 7db2c23de1
commit f79c4bd7a1
31 changed files with 230 additions and 150 deletions

View File

@ -3,6 +3,7 @@ package org.hostsharing.hsadminng;
import org.hostsharing.hsadminng.config.ApplicationProperties;
import org.hostsharing.hsadminng.config.DefaultProfileUtil;
import org.hostsharing.hsadminng.service.accessfilter.Role;
import io.github.jhipster.config.JHipsterConstants;
@ -32,6 +33,9 @@ public class HsadminNgApp {
public HsadminNgApp(Environment env) {
this.env = env;
// TODO mhoennig rather use @PostConstruct or something more decentral
Role.init();
}
/**

View File

@ -1,25 +1,28 @@
// Licensed under Apache-2.0
package org.hostsharing.hsadminng.domain;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.TreeNode;
import static org.hostsharing.hsadminng.service.util.ReflectionUtil.of;
import org.hostsharing.hsadminng.repository.UserRepository;
import org.hostsharing.hsadminng.service.UserRoleAssignmentService;
import org.hostsharing.hsadminng.service.accessfilter.*;
import org.hostsharing.hsadminng.service.accessfilter.Role.Admin;
import org.hostsharing.hsadminng.service.accessfilter.Role.Supporter;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.TreeNode;
import org.springframework.boot.jackson.JsonComponent;
import org.springframework.context.ApplicationContext;
import java.lang.reflect.Field;
import java.util.Objects;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.lang.reflect.Field;
import java.util.Objects;
import static org.hostsharing.hsadminng.service.util.ReflectionUtil.of;
/**
* A UserRoleAssignment.

View File

@ -1,12 +1,18 @@
// Licensed under Apache-2.0
package org.hostsharing.hsadminng.service.accessfilter;
import static com.google.common.base.Verify.verify;
import static com.google.common.collect.Sets.union;
import static java.util.Collections.EMPTY_SET;
import static java.util.Collections.emptySet;
import org.hostsharing.hsadminng.security.SecurityUtils;
import org.hostsharing.hsadminng.service.IdToDtoResolver;
import org.hostsharing.hsadminng.service.UserRoleAssignmentService;
import org.hostsharing.hsadminng.service.dto.MembershipDTO;
import org.hostsharing.hsadminng.service.util.ReflectionUtil;
import org.hostsharing.hsadminng.web.rest.errors.BadRequestAlertException;
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.security.core.Authentication;
@ -18,11 +24,6 @@ import java.lang.reflect.Field;
import java.util.Set;
import java.util.stream.Collectors;
import static com.google.common.base.Verify.verify;
import static com.google.common.collect.Sets.union;
import static java.util.Collections.EMPTY_SET;
import static java.util.Collections.emptySet;
abstract class JSonAccessFilter<T extends AccessMappings> {
private final ApplicationContext ctx;

View File

@ -1,6 +1,13 @@
// Licensed under Apache-2.0
package org.hostsharing.hsadminng.service.accessfilter;
import static com.google.common.base.Verify.verify;
import static org.hostsharing.hsadminng.service.util.ReflectionUtil.unchecked;
import org.hostsharing.hsadminng.service.UserRoleAssignmentService;
import org.hostsharing.hsadminng.service.util.ReflectionUtil;
import org.hostsharing.hsadminng.web.rest.errors.BadRequestAlertException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.TreeNode;
import com.fasterxml.jackson.databind.DeserializationContext;
@ -8,11 +15,9 @@ import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.*;
import com.google.common.base.Joiner;
import org.apache.commons.lang3.NotImplementedException;
import org.apache.commons.lang3.ObjectUtils;
import org.hostsharing.hsadminng.service.UserRoleAssignmentService;
import org.hostsharing.hsadminng.service.util.ReflectionUtil;
import org.hostsharing.hsadminng.web.rest.errors.BadRequestAlertException;
import org.springframework.context.ApplicationContext;
import java.lang.reflect.Field;
@ -21,9 +26,6 @@ import java.time.LocalDate;
import java.util.HashSet;
import java.util.Set;
import static com.google.common.base.Verify.verify;
import static org.hostsharing.hsadminng.service.util.ReflectionUtil.unchecked;
public abstract class JsonDeserializerWithAccessFilter<T extends AccessMappings> extends JsonDeserializer<T> {
private final ApplicationContext ctx;

View File

@ -1,12 +1,14 @@
// Licensed under Apache-2.0
package org.hostsharing.hsadminng.service.accessfilter;
import org.hostsharing.hsadminng.service.UserRoleAssignmentService;
import org.hostsharing.hsadminng.service.util.ReflectionUtil;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.apache.commons.lang3.NotImplementedException;
import org.hostsharing.hsadminng.service.UserRoleAssignmentService;
import org.hostsharing.hsadminng.service.util.ReflectionUtil;
import org.springframework.context.ApplicationContext;
import java.io.IOException;

View File

@ -1,20 +1,23 @@
// Licensed under Apache-2.0
package org.hostsharing.hsadminng.service.accessfilter;
import org.apache.commons.lang3.ArrayUtils;
import static com.google.common.base.Verify.verify;
import static org.hostsharing.hsadminng.service.util.ReflectionUtil.initialize;
import org.hostsharing.hsadminng.domain.Customer;
import org.hostsharing.hsadminng.domain.User;
import org.hostsharing.hsadminng.domain.UserRoleAssignment;
import org.hostsharing.hsadminng.security.AuthoritiesConstants;
import org.hostsharing.hsadminng.service.util.ReflectionUtil;
import org.apache.commons.lang3.ArrayUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
import static com.google.common.base.Verify.verify;
import static org.hostsharing.hsadminng.service.util.ReflectionUtil.initialize;
/**
* These enum values are used to specify the minimum role required to grant access to resources,
* see usages of {@link AccessFor}.
@ -33,6 +36,8 @@ import static org.hostsharing.hsadminng.service.util.ReflectionUtil.initialize;
*/
public abstract class Role {
private static final Logger log = LoggerFactory.getLogger(Role.class);
// TODO mhoennig: We need to make sure that the classes are loaded
// and thus the static initializers were called
// before these maps are used in production code.
@ -85,10 +90,26 @@ public abstract class Role {
T newRole = (T) ReflectionUtil.newInstance(initializedRoleClass);
rolesByClass.put(initializedRoleClass, newRole);
rolesByName.put(newRole.name(), newRole);
log.info("Role registered: {} as {}", initializedRoleClass, newRole.name());
return newRole;
}
}
public static void init() {
Role.of(Anybody.class);
Role.of(Hostmaster.class);
Role.of(Admin.class);
Role.of(Supporter.class);
Role.of(AnyCustomerContact.class);
Role.of(CustomerContractualContact.class);
Role.of(CustomerTechnicalContact.class);
Role.of(CustomerFinancialContact.class);
Role.of(AnyCustomerUser.class);
Role.of(ActualCustomerUser.class);
Role.of(Ignored.class);
Role.of(Nobody.class);
}
@Override
public String toString() {
return getClass().getName() + "(" + name() + ")";
@ -224,12 +245,12 @@ public abstract class Role {
}
}
public static class AnyCustomerUser extends DependentRole {
public static class AnyCustomerUser extends IndependentRole {
public static final Role ROLE = Role.of(AnyCustomerUser.class);
AnyCustomerUser() {
super(Anybody.class);
super(AuthoritiesConstants.USER, Anybody.class);
}
}

View File

@ -8,16 +8,18 @@ import org.hostsharing.hsadminng.service.MembershipService;
import org.hostsharing.hsadminng.service.UserRoleAssignmentService;
import org.hostsharing.hsadminng.service.accessfilter.*;
import org.hostsharing.hsadminng.service.accessfilter.Role.*;
import org.springframework.boot.jackson.JsonComponent;
import org.springframework.context.ApplicationContext;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.Objects;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
/**
* A DTO for the Asset entity.
*/

View File

@ -1,20 +1,22 @@
// Licensed under Apache-2.0
package org.hostsharing.hsadminng.service.dto;
import static org.hostsharing.hsadminng.service.accessfilter.Role.*;
import org.hostsharing.hsadminng.domain.Customer;
import org.hostsharing.hsadminng.domain.enumeration.CustomerKind;
import org.hostsharing.hsadminng.domain.enumeration.VatRegion;
import org.hostsharing.hsadminng.service.CustomerService;
import org.hostsharing.hsadminng.service.UserRoleAssignmentService;
import org.hostsharing.hsadminng.service.accessfilter.*;
import org.springframework.boot.jackson.JsonComponent;
import org.springframework.context.ApplicationContext;
import javax.validation.constraints.*;
import java.time.LocalDate;
import java.util.Objects;
import static org.hostsharing.hsadminng.service.accessfilter.Role.*;
import javax.validation.constraints.*;
/**
* A DTO for the Customer entity.

View File

@ -7,14 +7,16 @@ import org.hostsharing.hsadminng.service.MembershipService;
import org.hostsharing.hsadminng.service.UserRoleAssignmentService;
import org.hostsharing.hsadminng.service.accessfilter.*;
import org.hostsharing.hsadminng.service.accessfilter.Role.*;
import org.springframework.boot.jackson.JsonComponent;
import org.springframework.context.ApplicationContext;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDate;
import java.util.Objects;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
/**
* A DTO for the Membership entity.
*/

View File

@ -7,14 +7,16 @@ import org.hostsharing.hsadminng.service.SepaMandateService;
import org.hostsharing.hsadminng.service.UserRoleAssignmentService;
import org.hostsharing.hsadminng.service.accessfilter.*;
import org.hostsharing.hsadminng.service.accessfilter.Role.*;
import org.springframework.boot.jackson.JsonComponent;
import org.springframework.context.ApplicationContext;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDate;
import java.util.Objects;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
/**
* A DTO for the SepaMandate entity.
*/

View File

@ -8,15 +8,17 @@ import org.hostsharing.hsadminng.service.ShareService;
import org.hostsharing.hsadminng.service.UserRoleAssignmentService;
import org.hostsharing.hsadminng.service.accessfilter.*;
import org.hostsharing.hsadminng.service.accessfilter.Role.*;
import org.springframework.boot.jackson.JsonComponent;
import org.springframework.context.ApplicationContext;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.time.LocalDate;
import java.util.Objects;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
/**
* A DTO for the Share entity.
*/