#145 [Rights-Module] preparation for module specific roles / static init
This commit is contained in:
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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.
|
||||
*/
|
||||
|
Reference in New Issue
Block a user