#145 [Rights-Module] documented the role system and some renaming
This commit is contained in:
@ -3,94 +3,144 @@ package org.hostsharing.hsadminng.service.accessfilter;
|
||||
|
||||
import static com.google.common.base.Verify.verify;
|
||||
|
||||
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 java.lang.reflect.Field;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* These enum values are on the one hand used to define the minimum role required to grant access to resources,
|
||||
* but on the other hand also for the roles users can be assigned to.
|
||||
* These enum values are used to specify the minimum role required to grant access to resources,
|
||||
* see usages of {@link AccessFor}.
|
||||
* also they can be assigned to users via {@link UserRoleAssignment}.
|
||||
* Some of the concrete values make only sense in one of these contexts.
|
||||
* <p>
|
||||
* Further, there are two kinds of roles: independent and dependent.
|
||||
* Independent roles like {@link #HOSTMASTER} are absolute roles which means unrelated to any concrete entity.
|
||||
* Dependent roles like {@link #CUSTOMER_CONTRACTUAL_CONTACT} are relative to a specific entity,
|
||||
* in this case to a specific {@link Customer}.
|
||||
* <p>
|
||||
*/
|
||||
/*
|
||||
* TODO: Maybe splitting it up into UserRole and RequiredRole would make it more clear?
|
||||
* And maybe instead of a level, we could then add the comprised roles in the constructor?
|
||||
* This could also be a better way to express that the financial contact has no rights to
|
||||
* other users resources (see also ACTUAL_CUSTOMER_USEr vs. ANY_CUSTOMER_USER).
|
||||
* other users resources (see also ACTUAL_CUSTOMER_USER vs. ANY_CUSTOMER_USER).
|
||||
*/
|
||||
public enum Role {
|
||||
/**
|
||||
* Default for access rights requirement. You can read it as: 'Nobody is allowed to ...'.
|
||||
* This is usually used for fields which are managed by hsadminNg itself.
|
||||
* <p>
|
||||
* This role cannot be assigned to a user.
|
||||
* </p>
|
||||
*/
|
||||
NOBODY(0),
|
||||
|
||||
/**
|
||||
* Hostmasters are initialize/update/read and field which, except where NOBODY is allowed to.
|
||||
* <p>
|
||||
* This role can be assigned to a user via {@link User#setAuthorities}.
|
||||
* </p>
|
||||
*/
|
||||
HOSTMASTER(1, AuthoritiesConstants.HOSTMASTER),
|
||||
|
||||
/**
|
||||
* This role is for administrators, e.g. to create memberships and book shared and assets.
|
||||
* <p>
|
||||
* This role can be assigned to a user via {@link User#setAuthorities}.
|
||||
* </p>
|
||||
*/
|
||||
ADMIN(2, AuthoritiesConstants.ADMIN),
|
||||
|
||||
/**
|
||||
* This role is for members of the support team.
|
||||
* <p>
|
||||
* This role can be assigned to a user via {@link User#setAuthorities}.
|
||||
* </p>
|
||||
*/
|
||||
SUPPORTER(3, AuthoritiesConstants.SUPPORTER),
|
||||
|
||||
/**
|
||||
* This role is for contractual contacts of a customer, like a director of the company.
|
||||
* <p>
|
||||
* Who has this role, has the broadest access to all resources which belong to this customer.
|
||||
* Everything which relates to the contract with the customer, needs this role.
|
||||
* <p>
|
||||
* This role can be assigned to a user via {@link UserRoleAssignment}.
|
||||
* </p>
|
||||
*/
|
||||
CONTRACTUAL_CONTACT(20),
|
||||
CUSTOMER_CONTRACTUAL_CONTACT(20),
|
||||
|
||||
/**
|
||||
* This role is for financial contacts of a customer, e.g. for accessing billing data.
|
||||
* <p>
|
||||
* The financial contact only covers {@link Role#CUSTOMER_FINANCIAL_CONTACT}, {@link Role#ANY_CUSTOMER_CONTACT} and
|
||||
* {@link Role#ANYBODY}, but not other <em>normal</em> user roles.
|
||||
* </p>
|
||||
* <p>
|
||||
* This role can be assigned to a user via {@link UserRoleAssignment}.
|
||||
* </p>
|
||||
*/
|
||||
FINANCIAL_CONTACT(22) {
|
||||
CUSTOMER_FINANCIAL_CONTACT(22) {
|
||||
|
||||
@Override
|
||||
public boolean covers(final Role role) {
|
||||
if (role == ACTUAL_CUSTOMER_USER) {
|
||||
return false;
|
||||
}
|
||||
return super.covers(role);
|
||||
return role == CUSTOMER_FINANCIAL_CONTACT || role == ANY_CUSTOMER_CONTACT || role == ANYBODY;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* This role is for technical contacts of a customer.
|
||||
* <p>
|
||||
* This role can be assigned to a user via {@link UserRoleAssignment}.
|
||||
* </p>
|
||||
*/
|
||||
TECHNICAL_CONTACT(22),
|
||||
CUSTOMER_TECHNICAL_CONTACT(22),
|
||||
|
||||
/**
|
||||
* This meta-role is to specify that any kind of customer contact can get access to the resource.
|
||||
* <p>
|
||||
* It's only used to specify the required role and cannot be assigned to a user.
|
||||
* </p>
|
||||
*/
|
||||
ANY_CUSTOMER_CONTACT(29),
|
||||
|
||||
/**
|
||||
* Any user which belongs to a customer has at least this role.
|
||||
* Some user belonging to a customer without a more precise role.
|
||||
*/
|
||||
ACTUAL_CUSTOMER_USER(30),
|
||||
// TODO: It's mostly a placeholder for more precise future roles like a "webspace admin".
|
||||
// This also shows that it's a bit ugly that we need the roles of all modules in this enum
|
||||
// because types for attributes of annotations are quite limited in Java.
|
||||
ACTUAL_CUSTOMER_USER(80),
|
||||
|
||||
/**
|
||||
* Use this to grant rights to any user, also special function users who have no
|
||||
* rights on other users resources.
|
||||
* <p>
|
||||
* It's only used to specify the required role and cannot be assigned to a user.
|
||||
* </p>
|
||||
*/
|
||||
ANY_CUSTOMER_USER(89),
|
||||
|
||||
/**
|
||||
* This role is meant to specify that a resources can be accessed by anybody, even without login.
|
||||
* It's currently only used for technical purposes.
|
||||
* <p>
|
||||
* It can be used to specify the required role and is the implicit role for un-authenticated users.
|
||||
* </p>
|
||||
*/
|
||||
ANYBODY(99, AuthoritiesConstants.ANONYMOUS),
|
||||
|
||||
/**
|
||||
* Pseudo-role to mark init/update access as ignored because the field is display-only.
|
||||
* <p>
|
||||
* This allows REST clients to send the whole response back as a new update request.
|
||||
* This role is not covered by any and covers itself no role.
|
||||
* <p>
|
||||
* It's only used to specify the required role and cannot be assigned to a user.
|
||||
* </p>
|
||||
*/
|
||||
IGNORED;
|
||||
|
||||
@ -127,7 +177,6 @@ public enum Role {
|
||||
|
||||
/**
|
||||
* @return the independent authority related 1:1 to this Role or empty if no independent authority is related 1:1
|
||||
*
|
||||
* @see AuthoritiesConstants
|
||||
*/
|
||||
public Optional<String> getAuthority() {
|
||||
@ -179,7 +228,7 @@ public enum Role {
|
||||
* Where 'this' means the Java instance itself as a role of a system user.
|
||||
* <p>
|
||||
* {@code
|
||||
* Role.HOSTMASTER.coversAny(Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT) == true
|
||||
* Role.HOSTMASTER.coversAny(Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT) == true
|
||||
* }
|
||||
*
|
||||
* @param roles The alternatively required roles for a resource. Must be at least one.
|
||||
|
@ -26,23 +26,23 @@ import javax.validation.constraints.Size;
|
||||
public class AssetDTO implements Serializable, AccessMappings {
|
||||
|
||||
@SelfId(resolver = AssetService.class)
|
||||
@AccessFor(read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private Long id;
|
||||
|
||||
@NotNull
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private LocalDate documentDate;
|
||||
|
||||
@NotNull
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private LocalDate valueDate;
|
||||
|
||||
@NotNull
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private AssetAction action;
|
||||
|
||||
@NotNull
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private BigDecimal amount;
|
||||
|
||||
@Size(max = 160)
|
||||
@ -50,10 +50,10 @@ public class AssetDTO implements Serializable, AccessMappings {
|
||||
private String remark;
|
||||
|
||||
@ParentId(resolver = MembershipService.class)
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private Long membershipId;
|
||||
|
||||
@AccessFor(update = Role.IGNORED, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(update = Role.IGNORED, read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private String membershipDisplayLabel;
|
||||
|
||||
public Long getId() {
|
||||
|
@ -23,78 +23,99 @@ import javax.validation.constraints.*;
|
||||
public class CustomerDTO implements AccessMappings, FluentBuilder<CustomerDTO> {
|
||||
|
||||
@SelfId(resolver = CustomerService.class)
|
||||
@AccessFor(read = Role.ACTUAL_CUSTOMER_USER)
|
||||
@AccessFor(read = Role.ANY_CUSTOMER_USER)
|
||||
private Long id;
|
||||
|
||||
@NotNull
|
||||
@Min(value = 10000)
|
||||
@Max(value = 99999)
|
||||
@AccessFor(init = Role.ADMIN, read = Role.ACTUAL_CUSTOMER_USER)
|
||||
@AccessFor(init = Role.ADMIN, read = Role.ANY_CUSTOMER_USER)
|
||||
private Integer reference;
|
||||
|
||||
@NotNull
|
||||
@Size(max = 3)
|
||||
@Pattern(regexp = "[a-z][a-z0-9]+")
|
||||
@AccessFor(init = Role.ADMIN, read = Role.ACTUAL_CUSTOMER_USER)
|
||||
@AccessFor(init = Role.ADMIN, read = Role.ANY_CUSTOMER_USER)
|
||||
private String prefix;
|
||||
|
||||
@NotNull
|
||||
@Size(max = 80)
|
||||
@AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = Role.ACTUAL_CUSTOMER_USER)
|
||||
@AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = Role.ANY_CUSTOMER_USER)
|
||||
private String name;
|
||||
|
||||
@NotNull
|
||||
@AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = Role.CONTRACTUAL_CONTACT)
|
||||
@AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = Role.CUSTOMER_CONTRACTUAL_CONTACT)
|
||||
private CustomerKind kind;
|
||||
|
||||
@AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(
|
||||
init = Role.ADMIN,
|
||||
update = Role.ADMIN,
|
||||
read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private LocalDate birthDate;
|
||||
|
||||
@Size(max = 80)
|
||||
@AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(
|
||||
init = Role.ADMIN,
|
||||
update = Role.ADMIN,
|
||||
read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private String birthPlace;
|
||||
|
||||
@Size(max = 80)
|
||||
@AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(
|
||||
init = Role.ADMIN,
|
||||
update = Role.ADMIN,
|
||||
read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private String registrationCourt;
|
||||
|
||||
@Size(max = 80)
|
||||
@AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(
|
||||
init = Role.ADMIN,
|
||||
update = Role.ADMIN,
|
||||
read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private String registrationNumber;
|
||||
|
||||
@NotNull
|
||||
@AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(
|
||||
init = Role.ADMIN,
|
||||
update = Role.ADMIN,
|
||||
read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private VatRegion vatRegion;
|
||||
|
||||
@Size(max = 40)
|
||||
@AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(
|
||||
init = Role.ADMIN,
|
||||
update = Role.ADMIN,
|
||||
read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private String vatNumber;
|
||||
|
||||
@Size(max = 80)
|
||||
@AccessFor(init = Role.ADMIN, update = Role.CONTRACTUAL_CONTACT, read = Role.CONTRACTUAL_CONTACT)
|
||||
@AccessFor(init = Role.ADMIN, update = Role.CUSTOMER_CONTRACTUAL_CONTACT, read = Role.CUSTOMER_CONTRACTUAL_CONTACT)
|
||||
private String contractualSalutation;
|
||||
|
||||
@NotNull
|
||||
@Size(max = 400)
|
||||
@AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = Role.CONTRACTUAL_CONTACT)
|
||||
@AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = Role.CUSTOMER_CONTRACTUAL_CONTACT)
|
||||
private String contractualAddress;
|
||||
|
||||
@Size(max = 80)
|
||||
@AccessFor(
|
||||
init = Role.ADMIN,
|
||||
update = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT },
|
||||
read = Role.CONTRACTUAL_CONTACT)
|
||||
update = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT },
|
||||
read = Role.CUSTOMER_CONTRACTUAL_CONTACT)
|
||||
private String billingSalutation;
|
||||
|
||||
@Size(max = 400)
|
||||
@AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(
|
||||
init = Role.ADMIN,
|
||||
update = Role.ADMIN,
|
||||
read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private String billingAddress;
|
||||
|
||||
@Size(max = 160)
|
||||
@AccessFor(init = Role.ADMIN, update = Role.SUPPORTER, read = Role.SUPPORTER)
|
||||
private String remark;
|
||||
|
||||
@AccessFor(init = Role.ANYBODY, update = Role.ANYBODY, read = Role.ACTUAL_CUSTOMER_USER)
|
||||
@AccessFor(init = Role.ANYBODY, update = Role.ANYBODY, read = Role.ANY_CUSTOMER_USER)
|
||||
private String displayLabel;
|
||||
|
||||
public Long getId() {
|
||||
|
@ -23,21 +23,27 @@ import javax.validation.constraints.Size;
|
||||
public class MembershipDTO implements AccessMappings, FluentBuilder<MembershipDTO> {
|
||||
|
||||
@SelfId(resolver = MembershipService.class)
|
||||
@AccessFor(read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private Long id;
|
||||
|
||||
@NotNull
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private LocalDate admissionDocumentDate;
|
||||
|
||||
@AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(
|
||||
init = Role.ADMIN,
|
||||
update = Role.ADMIN,
|
||||
read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private LocalDate cancellationDocumentDate;
|
||||
|
||||
@NotNull
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private LocalDate memberFromDate;
|
||||
|
||||
@AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(
|
||||
init = Role.ADMIN,
|
||||
update = Role.ADMIN,
|
||||
read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private LocalDate memberUntilDate;
|
||||
|
||||
@Size(max = 160)
|
||||
@ -45,16 +51,16 @@ public class MembershipDTO implements AccessMappings, FluentBuilder<MembershipDT
|
||||
private String remark;
|
||||
|
||||
@ParentId(resolver = CustomerService.class)
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private Long customerId;
|
||||
|
||||
@AccessFor(update = Role.IGNORED, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(update = Role.IGNORED, read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private String customerPrefix;
|
||||
|
||||
@AccessFor(update = Role.IGNORED, read = Role.FINANCIAL_CONTACT)
|
||||
@AccessFor(update = Role.IGNORED, read = Role.CUSTOMER_FINANCIAL_CONTACT)
|
||||
private String customerDisplayLabel;
|
||||
|
||||
@AccessFor(update = Role.IGNORED, read = Role.FINANCIAL_CONTACT)
|
||||
@AccessFor(update = Role.IGNORED, read = Role.CUSTOMER_FINANCIAL_CONTACT)
|
||||
private String displayLabel;
|
||||
|
||||
public Long getId() {
|
||||
|
@ -23,53 +23,56 @@ import javax.validation.constraints.Size;
|
||||
public class SepaMandateDTO implements AccessMappings, FluentBuilder<SepaMandateDTO> {
|
||||
|
||||
@SelfId(resolver = SepaMandateService.class)
|
||||
@AccessFor(read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private Long id;
|
||||
|
||||
@NotNull
|
||||
@Size(max = 40)
|
||||
@AccessFor(
|
||||
init = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT },
|
||||
read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
init = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT },
|
||||
read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private String reference;
|
||||
|
||||
@Size(max = 34)
|
||||
@AccessFor(
|
||||
init = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT },
|
||||
read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
init = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT },
|
||||
read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private String iban;
|
||||
|
||||
@Size(max = 11)
|
||||
@AccessFor(
|
||||
init = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT },
|
||||
read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
init = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT },
|
||||
read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private String bic;
|
||||
|
||||
@NotNull
|
||||
@AccessFor(
|
||||
init = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT },
|
||||
read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
init = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT },
|
||||
read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private LocalDate grantingDocumentDate;
|
||||
|
||||
@AccessFor(
|
||||
init = Role.ADMIN,
|
||||
update = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT },
|
||||
read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
update = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT },
|
||||
read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private LocalDate revokationDocumentDate;
|
||||
|
||||
@NotNull
|
||||
@AccessFor(
|
||||
init = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT },
|
||||
read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
init = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT },
|
||||
read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private LocalDate validFromDate;
|
||||
|
||||
@AccessFor(
|
||||
init = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT },
|
||||
update = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT },
|
||||
read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
init = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT },
|
||||
update = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT },
|
||||
read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private LocalDate validUntilDate;
|
||||
|
||||
@AccessFor(init = Role.ADMIN, update = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(
|
||||
init = Role.ADMIN,
|
||||
update = Role.ADMIN,
|
||||
read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private LocalDate lastUsedDate;
|
||||
|
||||
@Size(max = 160)
|
||||
@ -78,11 +81,11 @@ public class SepaMandateDTO implements AccessMappings, FluentBuilder<SepaMandate
|
||||
|
||||
@ParentId(resolver = CustomerService.class)
|
||||
@AccessFor(
|
||||
init = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT },
|
||||
read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
init = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT },
|
||||
read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private Long customerId;
|
||||
|
||||
@AccessFor(update = Role.IGNORED, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(update = Role.IGNORED, read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private String customerDisplayLabel;
|
||||
|
||||
public Long getId() {
|
||||
|
@ -25,23 +25,23 @@ import javax.validation.constraints.Size;
|
||||
public class ShareDTO implements Serializable, AccessMappings {
|
||||
|
||||
@SelfId(resolver = ShareService.class)
|
||||
@AccessFor(read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private Long id;
|
||||
|
||||
@NotNull
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private LocalDate documentDate;
|
||||
|
||||
@NotNull
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private LocalDate valueDate;
|
||||
|
||||
@NotNull
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private ShareAction action;
|
||||
|
||||
@NotNull
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private Integer quantity;
|
||||
|
||||
@Size(max = 160)
|
||||
@ -49,10 +49,10 @@ public class ShareDTO implements Serializable, AccessMappings {
|
||||
private String remark;
|
||||
|
||||
@ParentId(resolver = MembershipService.class)
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(init = Role.ADMIN, read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private Long membershipId;
|
||||
|
||||
@AccessFor(update = Role.IGNORED, read = { Role.CONTRACTUAL_CONTACT, Role.FINANCIAL_CONTACT })
|
||||
@AccessFor(update = Role.IGNORED, read = { Role.CUSTOMER_CONTRACTUAL_CONTACT, Role.CUSTOMER_FINANCIAL_CONTACT })
|
||||
private String membershipDisplayLabel;
|
||||
|
||||
public Long getId() {
|
||||
|
@ -43,9 +43,9 @@
|
||||
<label class="form-control-label" jhiTranslate="hsadminNgApp.userRoleAssignment.assignedRole" for="field_assignedRole">Assigned Role</label>
|
||||
<select class="form-control" name="assignedRole" [(ngModel)]="userRoleAssignment.assignedRole" id="field_assignedRole" required>
|
||||
<!-- only list entity-dependent roles here -->
|
||||
<option value="CONTRACTUAL_CONTACT">{{'hsadminNgApp.UserRole.CONTRACTUAL_CONTACT' | translate}}</option>
|
||||
<option value="FINANCIAL_CONTACT">{{'hsadminNgApp.UserRole.FINANCIAL_CONTACT' | translate}}</option>
|
||||
<option value="TECHNICAL_CONTACT">{{'hsadminNgApp.UserRole.TECHNICAL_CONTACT' | translate}}</option>
|
||||
<option value="CONTRACTUAL_CONTACT">{{'hsadminNgApp.UserRole.CUSTOMER_CONTRACTUAL_CONTACT' | translate}}</option>
|
||||
<option value="FINANCIAL_CONTACT">{{'hsadminNgApp.UserRole.CUSTOMER_FINANCIAL_CONTACT' | translate}}</option>
|
||||
<option value="TECHNICAL_CONTACT">{{'hsadminNgApp.UserRole.CUSTOMER_TECHNICAL_CONTACT' | translate}}</option>
|
||||
<option value="CUSTOMER_USER">{{'hsadminNgApp.UserRole.CUSTOMER_USER' | translate}}</option>
|
||||
</select>
|
||||
<div [hidden]="!(editForm.controls.assignedRole?.dirty && editForm.controls.assignedRole?.invalid)">
|
||||
|
@ -33,9 +33,9 @@
|
||||
<option value="HOSTMASTER" jhiTranslate="{{'hsadminNgApp.UserRole.HOSTMASTER'}}">HOSTMASTER</option>
|
||||
<option value="ADMIN" jhiTranslate="{{'hsadminNgApp.UserRole.ADMIN'}}">ADMIN</option>
|
||||
<option value="SUPPORTER" jhiTranslate="{{'hsadminNgApp.UserRole.SUPPORTER'}}">SUPPORTER</option>
|
||||
<option value="CONTRACTUAL_CONTACT" jhiTranslate="{{'hsadminNgApp.UserRole.CONTRACTUAL_CONTACT'}}">CONTRACTUAL_CONTACT</option>
|
||||
<option value="FINANCIAL_CONTACT" jhiTranslate="{{'hsadminNgApp.UserRole.FINANCIAL_CONTACT'}}">FINANCIAL_CONTACT</option>
|
||||
<option value="TECHNICAL_CONTACT" jhiTranslate="{{'hsadminNgApp.UserRole.TECHNICAL_CONTACT'}}">TECHNICAL_CONTACT</option>
|
||||
<option value="CONTRACTUAL_CONTACT" jhiTranslate="{{'hsadminNgApp.UserRole.CUSTOMER_CONTRACTUAL_CONTACT'}}">CONTRACTUAL_CONTACT</option>
|
||||
<option value="FINANCIAL_CONTACT" jhiTranslate="{{'hsadminNgApp.UserRole.CUSTOMER_FINANCIAL_CONTACT'}}">FINANCIAL_CONTACT</option>
|
||||
<option value="TECHNICAL_CONTACT" jhiTranslate="{{'hsadminNgApp.UserRole.CUSTOMER_TECHNICAL_CONTACT'}}">TECHNICAL_CONTACT</option>
|
||||
<option value="CUSTOMER_USER" jhiTranslate="{{'hsadminNgApp.UserRole.CUSTOMER_USER'}}">CUSTOMER_USER</option>
|
||||
</select>
|
||||
</th>
|
||||
|
Reference in New Issue
Block a user