UserRoleVerification modification
This commit is contained in:
parent
4594540d40
commit
5366a7d79b
6 changed files with 89 additions and 105 deletions
|
|
@ -5,8 +5,6 @@ import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.context.annotation.Scope;
|
import org.springframework.context.annotation.Scope;
|
||||||
import ru.spcex.clearing.company.util.RequestHelper;
|
import ru.spcex.clearing.company.util.RequestHelper;
|
||||||
import ru.spcex.clearing.util.security.UserRoleVerification;
|
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
|
||||||
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
import ru.spcex.platform.utils.enumeration.IMessageResolver;
|
||||||
import ru.spcex.platform.utils.enumeration.SimpleMessageResolver;
|
import ru.spcex.platform.utils.enumeration.SimpleMessageResolver;
|
||||||
|
|
||||||
|
|
@ -17,11 +15,6 @@ public class BeanConfiguration {
|
||||||
return new SimpleMessageResolver();
|
return new SimpleMessageResolver();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Bean
|
|
||||||
UserRoleVerification userRoleVerification(ImdgProvider imdg) {
|
|
||||||
return new UserRoleVerification(imdg);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
|
||||||
public RequestHelper requestHelper(IMessageResolver messageResolver) {
|
public RequestHelper requestHelper(IMessageResolver messageResolver) {
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@ import ru.spcex.clearing.validation.common.ValidationHelper;
|
||||||
import ru.spcex.platform.enumeration.UserRole;
|
import ru.spcex.platform.enumeration.UserRole;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import ru.spcex.platform.utils.error.ValidationException;
|
|
||||||
import ru.spcex.platform.utils.validation.IValidator;
|
import ru.spcex.platform.utils.validation.IValidator;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
|
|
@ -43,14 +42,13 @@ public class CompanyInfoService extends QueueConsumer implements InitializingBea
|
||||||
public CompanyInfoService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
public CompanyInfoService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
||||||
ImdgProvider imdgProvider, CompanyService companyService,
|
ImdgProvider imdgProvider, CompanyService companyService,
|
||||||
RequestHelper requestHelper, ValidationHelper validationHelper,
|
RequestHelper requestHelper, ValidationHelper validationHelper,
|
||||||
UserRoleVerification userRoleVerification,
|
|
||||||
@Qualifier("CompanyInfoUpdateRequestValidator")
|
@Qualifier("CompanyInfoUpdateRequestValidator")
|
||||||
Function<CompanyInfoUpdateRequest, IValidator> companyInfoUpdateRequestValidator) {
|
Function<CompanyInfoUpdateRequest, IValidator> companyInfoUpdateRequestValidator) {
|
||||||
super(kafkaQueue, kafkaProducer);
|
super(kafkaQueue, kafkaProducer);
|
||||||
this.companyService = companyService;
|
this.companyService = companyService;
|
||||||
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
this.companyMap = imdgProvider.getImdg(IMDGDistributedNames.Map_Company, Company.class);
|
||||||
this.validationHelper = validationHelper;
|
this.validationHelper = validationHelper;
|
||||||
this.userRoleVerification = userRoleVerification;
|
this.userRoleVerification = new UserRoleVerification(imdgProvider, UserRole.Admin, CompanyErrors.UserVerifyDenial);
|
||||||
this.companyInfoUpdateRequestValidator = companyInfoUpdateRequestValidator;
|
this.companyInfoUpdateRequestValidator = companyInfoUpdateRequestValidator;
|
||||||
this.requestHelper = requestHelper.setLogger(log);
|
this.requestHelper = requestHelper.setLogger(log);
|
||||||
}
|
}
|
||||||
|
|
@ -67,28 +65,15 @@ public class CompanyInfoService extends QueueConsumer implements InitializingBea
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected void validateRole(BaseRequest<?> req) throws ValidationException {
|
|
||||||
Long requestor = req.getUserId();
|
|
||||||
if (requestor != null && !userRoleVerification.userHasRole(requestor, UserRole.Admin)) {
|
|
||||||
log.trace("User {} has no role to allow this action", requestor);
|
|
||||||
throw new ValidationException(CompanyErrors.UserVerifyDenial);
|
|
||||||
} else {
|
|
||||||
log.trace("Request without userId");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public RequestInfoUpdate companyInfoUpdate(BaseRequest<CompanyInfoUpdateRequest> companyInfoReq) {
|
public RequestInfoUpdate companyInfoUpdate(BaseRequest<CompanyInfoUpdateRequest> companyInfoReq) {
|
||||||
CompanyInfoUpdateRequest req = companyInfoReq.getRequestPayload();
|
CompanyInfoUpdateRequest req = companyInfoReq.getRequestPayload();
|
||||||
log.debug("{} received", req.getClass().getSimpleName());
|
log.debug("{} received", req.getClass().getSimpleName());
|
||||||
{ // Валидация, ValidationException
|
{ // Валидация, ValidationException
|
||||||
try {
|
RequestInfoUpdate requestInfoUpdate = userRoleVerification.validateRoleAndGetResult(companyInfoReq);
|
||||||
validateRole(companyInfoReq);
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
} catch (ValidationException e) {
|
|
||||||
return requestHelper.makeErrorResponse(companyInfoReq, e.getEnumMsg());
|
requestInfoUpdate = validationHelper.validateTillFirstError(companyInfoReq, companyInfoUpdateRequestValidator);
|
||||||
}
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(companyInfoReq, companyInfoUpdateRequestValidator);
|
|
||||||
if (requestInfoUpdate != null)
|
|
||||||
return requestInfoUpdate;
|
|
||||||
}
|
}
|
||||||
synchronized (companyService) {
|
synchronized (companyService) {
|
||||||
Company company = companyMap.getSingleObjectByID(req.getId());
|
Company company = companyMap.getSingleObjectByID(req.getId());
|
||||||
|
|
|
||||||
|
|
@ -48,17 +48,15 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing
|
||||||
public CompanyRoleSetService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
public CompanyRoleSetService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
||||||
ImdgProvider imdgProvider,
|
ImdgProvider imdgProvider,
|
||||||
RequestHelper requestHelper,
|
RequestHelper requestHelper,
|
||||||
UserRoleVerification userRoleVerification,
|
|
||||||
ValidationHelper validationHelper
|
ValidationHelper validationHelper
|
||||||
// @Qualifier("CompanyRoleSetRequestValidator")
|
// @Qualifier("CompanyRoleSetRequestValidator")
|
||||||
// Function<CompanyRoleSetNewRequest, IValidator> companyNewRequestValidator,
|
// Function<CompanyRoleSetNewRequest, IValidator> companyNewRequestValidator,
|
||||||
) {
|
) {
|
||||||
super(kafkaQueue, kafkaProducer);
|
super(kafkaQueue, kafkaProducer);
|
||||||
this.imdgProvider = imdgProvider;
|
this.imdgProvider = imdgProvider;
|
||||||
this.messageResolver = messageResolver;
|
|
||||||
this.companyRoleSetMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class);
|
this.companyRoleSetMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class);
|
||||||
this.idSequence = imdgProvider.getImdgIdGenerator();
|
this.idSequence = imdgProvider.getImdgIdGenerator();
|
||||||
this.userRoleVerification = userRoleVerification;
|
this.userRoleVerification = new UserRoleVerification(imdgProvider, UserRole.Admin, CompanyErrors.UserVerifyDenial);
|
||||||
this.validationHelper = validationHelper;
|
this.validationHelper = validationHelper;
|
||||||
// this.companyDeleteRequestValidator = companyDeleteRequestValidator;
|
// this.companyDeleteRequestValidator = companyDeleteRequestValidator;
|
||||||
this.requestHelper = requestHelper.setLogger(log);
|
this.requestHelper = requestHelper.setLogger(log);
|
||||||
|
|
@ -79,22 +77,11 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void validateRole(BaseRequest<?> req) throws ValidationException {
|
|
||||||
Long requestor = req.getUserId();
|
|
||||||
if (requestor != null && !userRoleVerification.userHasRole(requestor, UserRole.Admin)) {
|
|
||||||
log.trace("User {} has no role to allow this action", requestor);
|
|
||||||
throw new ValidationException(CompanyErrors.UserVerifyDenial);
|
|
||||||
} else {
|
|
||||||
log.trace("Request without userId");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private RequestInfoUpdate createCompanyRoleSet(BaseRequest<CompanyRoleSetNewRequest> companyRoleNewRequestBaseRequest) throws ValidationException {
|
private RequestInfoUpdate createCompanyRoleSet(BaseRequest<CompanyRoleSetNewRequest> companyRoleNewRequestBaseRequest) throws ValidationException {
|
||||||
CompanyRoleSetNewRequest req = companyRoleNewRequestBaseRequest.getRequestPayload();
|
CompanyRoleSetNewRequest req = companyRoleNewRequestBaseRequest.getRequestPayload();
|
||||||
log.debug("companyroleset-new request received, BaseRequest.id = {}", companyRoleNewRequestBaseRequest.getId());
|
log.debug("companyroleset-new request received, BaseRequest.id = {}", companyRoleNewRequestBaseRequest.getId());
|
||||||
{ // Валидация, ValidationException
|
{ // Валидация, ValidationException
|
||||||
validateRole(companyRoleNewRequestBaseRequest);
|
userRoleVerification.validateRoleAndThrow(companyRoleNewRequestBaseRequest);
|
||||||
// RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(companyRoleNewRequestBaseRequest, companyNewRequestValidator);
|
// RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(companyRoleNewRequestBaseRequest, companyNewRequestValidator);
|
||||||
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
// if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
}
|
}
|
||||||
|
|
@ -130,7 +117,7 @@ public class CompanyRoleSetService extends QueueConsumer implements Initializing
|
||||||
CommonDeleteRequest request = companyRoleSetDeleteRequest.getRequestPayload();
|
CommonDeleteRequest request = companyRoleSetDeleteRequest.getRequestPayload();
|
||||||
log.debug("companyRoleSetDeleteRequest received id = {}", request.getId());
|
log.debug("companyRoleSetDeleteRequest received id = {}", request.getId());
|
||||||
{ // Валидация, ValidationException
|
{ // Валидация, ValidationException
|
||||||
validateRole(companyRoleSetDeleteRequest);
|
userRoleVerification.validateRoleAndThrow(companyRoleSetDeleteRequest);
|
||||||
if (request.getId() == null) {
|
if (request.getId() == null) {
|
||||||
return requestHelper.makeErrorResponse(companyRoleSetDeleteRequest, CompanyErrors.RequiredFieldEmpty, "id");
|
return requestHelper.makeErrorResponse(companyRoleSetDeleteRequest, CompanyErrors.RequiredFieldEmpty, "id");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,6 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
||||||
public CompanyService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
public CompanyService(Consumer<String, Object> kafkaQueue, Producer<String, Object> kafkaProducer,
|
||||||
ImdgProvider imdgProvider,
|
ImdgProvider imdgProvider,
|
||||||
RequestHelper requestHelper,
|
RequestHelper requestHelper,
|
||||||
UserRoleVerification userRoleVerification,
|
|
||||||
ValidationHelper validationHelper,
|
ValidationHelper validationHelper,
|
||||||
@Qualifier("companyNewRequestValidator")
|
@Qualifier("companyNewRequestValidator")
|
||||||
Function<CompanyNewRequest, IValidator> companyNewRequestValidator,
|
Function<CompanyNewRequest, IValidator> companyNewRequestValidator,
|
||||||
|
|
@ -80,7 +79,7 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
||||||
|
|
||||||
this.companySymbolsMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
this.companySymbolsMap = imdgProvider.getImdg(IMDGDistributedNames.Map_CompanySymbols, CompanySymbols.class);
|
||||||
this.idSequence = imdgProvider.getImdgIdGenerator();
|
this.idSequence = imdgProvider.getImdgIdGenerator();
|
||||||
this.userRoleVerification = userRoleVerification;
|
this.userRoleVerification = new UserRoleVerification(imdgProvider, UserRole.Admin, CompanyErrors.UserVerifyDenial);
|
||||||
this.validationHelper = validationHelper;
|
this.validationHelper = validationHelper;
|
||||||
this.companyNewRequestValidator = companyNewRequestValidator;
|
this.companyNewRequestValidator = companyNewRequestValidator;
|
||||||
this.companyUpdateRequestValidator = companyUpdateRequestValidator;
|
this.companyUpdateRequestValidator = companyUpdateRequestValidator;
|
||||||
|
|
@ -104,22 +103,11 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void validateRole(BaseRequest<?> req) throws ValidationException {
|
|
||||||
Long requestor = req.getUserId();
|
|
||||||
if (requestor != null && !userRoleVerification.userHasRole(requestor, UserRole.Admin)) {
|
|
||||||
log.trace("User {} has no role to allow this action", requestor);
|
|
||||||
throw new ValidationException(CompanyErrors.UserVerifyDenial);
|
|
||||||
} else {
|
|
||||||
log.trace("Request without userId");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private synchronized RequestInfoUpdate createCompany(BaseRequest<CompanyNewRequest> companyNewRequestBaseRequest) throws ValidationException {
|
private synchronized RequestInfoUpdate createCompany(BaseRequest<CompanyNewRequest> companyNewRequestBaseRequest) throws ValidationException {
|
||||||
CompanyNewRequest req = companyNewRequestBaseRequest.getRequestPayload();
|
CompanyNewRequest req = companyNewRequestBaseRequest.getRequestPayload();
|
||||||
log.debug("company-new request received, BaseRequest.id = {}", companyNewRequestBaseRequest.getId());
|
log.debug("company-new request received, BaseRequest.id = {}", companyNewRequestBaseRequest.getId());
|
||||||
{ // Валидация, ValidationException
|
{ // Валидация, ValidationException
|
||||||
validateRole(companyNewRequestBaseRequest);
|
userRoleVerification.validateRoleAndThrow(companyNewRequestBaseRequest);
|
||||||
RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(companyNewRequestBaseRequest, companyNewRequestValidator);
|
RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(companyNewRequestBaseRequest, companyNewRequestValidator);
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
}
|
}
|
||||||
|
|
@ -165,7 +153,7 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
||||||
private synchronized RequestInfoUpdate updateCompany(BaseRequest<CompanyNewRequest> companyUpdateRequestBaseRequest) throws ValidationException {
|
private synchronized RequestInfoUpdate updateCompany(BaseRequest<CompanyNewRequest> companyUpdateRequestBaseRequest) throws ValidationException {
|
||||||
CompanyNewRequest updateRequest = companyUpdateRequestBaseRequest.getRequestPayload();
|
CompanyNewRequest updateRequest = companyUpdateRequestBaseRequest.getRequestPayload();
|
||||||
{ // Валидация, ValidationException
|
{ // Валидация, ValidationException
|
||||||
validateRole(companyUpdateRequestBaseRequest);
|
userRoleVerification.validateRoleAndThrow(companyUpdateRequestBaseRequest);
|
||||||
RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(companyUpdateRequestBaseRequest, companyUpdateRequestValidator);
|
RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(companyUpdateRequestBaseRequest, companyUpdateRequestValidator);
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
}
|
}
|
||||||
|
|
@ -246,7 +234,7 @@ public class CompanyService extends QueueConsumer implements InitializingBean {
|
||||||
CommonDeleteRequest request = companyBlockRequestBaseRequest.getRequestPayload();
|
CommonDeleteRequest request = companyBlockRequestBaseRequest.getRequestPayload();
|
||||||
log.debug("CommonDeleteRequest (block request) received id = {}", request.getId());
|
log.debug("CommonDeleteRequest (block request) received id = {}", request.getId());
|
||||||
{ // Валидация, ValidationException
|
{ // Валидация, ValidationException
|
||||||
validateRole(companyBlockRequestBaseRequest);
|
userRoleVerification.validateRoleAndThrow(companyBlockRequestBaseRequest);
|
||||||
RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(companyBlockRequestBaseRequest, companyDeleteRequestValidator);
|
RequestInfoUpdate requestInfoUpdate = validationHelper.validateTillFirstError(companyBlockRequestBaseRequest, companyDeleteRequestValidator);
|
||||||
if (requestInfoUpdate != null) return requestInfoUpdate;
|
if (requestInfoUpdate != null) return requestInfoUpdate;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -83,5 +83,9 @@
|
||||||
<artifactId>assertj-core</artifactId>
|
<artifactId>assertj-core</artifactId>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>ru.spcex.platform</groupId>
|
||||||
|
<artifactId>platform-messaging</artifactId>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
|
@ -2,17 +2,17 @@ package ru.spcex.clearing.util.security;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
import ru.clearing.classes.objects.BusinessObject;
|
|
||||||
import ru.clearing.classes.statics.data.company.CompanyRoleSet;
|
|
||||||
import ru.clearing.classes.statics.data.user.User;
|
|
||||||
import ru.clearing.classes.statics.data.user.UserRoleSession;
|
import ru.clearing.classes.statics.data.user.UserRoleSession;
|
||||||
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
import ru.spcex.clearing.imdg.IMDGDistributedNames;
|
||||||
|
import ru.spcex.clearing.platform.messaging.domain.BaseRequest;
|
||||||
|
import ru.spcex.clearing.platform.messaging.service.RequestInfoUpdate;
|
||||||
import ru.spcex.platform.enumeration.Status;
|
import ru.spcex.platform.enumeration.Status;
|
||||||
|
import ru.spcex.platform.enumeration.UserRole;
|
||||||
import ru.spcex.platform.imdg.api.Imdg;
|
import ru.spcex.platform.imdg.api.Imdg;
|
||||||
import ru.spcex.platform.imdg.api.ImdgProvider;
|
import ru.spcex.platform.imdg.api.ImdgProvider;
|
||||||
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
import ru.spcex.platform.utils.enumeration.IEnumKey;
|
||||||
|
import ru.spcex.platform.utils.enumeration.IErrorEnumId;
|
||||||
|
import ru.spcex.platform.utils.error.ValidationException;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
|
|
@ -21,66 +21,93 @@ import java.util.Collection;
|
||||||
* <p>
|
* <p>
|
||||||
* Основная проверка прав осуществляется на frontend-api, и использовать этот компонент дополнительно не требуется.
|
* Основная проверка прав осуществляется на frontend-api, и использовать этот компонент дополнительно не требуется.
|
||||||
*/
|
*/
|
||||||
@Service
|
|
||||||
public class UserRoleVerification {
|
public class UserRoleVerification {
|
||||||
protected Logger log = LoggerFactory.getLogger(getClass());
|
protected Logger log = LoggerFactory.getLogger(getClass());
|
||||||
|
|
||||||
protected Imdg<User> users;
|
|
||||||
protected Imdg<UserRoleSession> userRoleSessions;
|
protected Imdg<UserRoleSession> userRoleSessions;
|
||||||
protected Imdg<CompanyRoleSet> companyRoleSet;
|
protected UserRole roleForVerification;
|
||||||
|
protected IErrorEnumId roleVerificationError;
|
||||||
|
|
||||||
@Autowired
|
public UserRoleVerification(ImdgProvider imdg, UserRole roleForVerification, IErrorEnumId roleVerificationError) {
|
||||||
public UserRoleVerification(ImdgProvider imdg) {
|
|
||||||
userRoleSessions = imdg.getImdg(IMDGDistributedNames.Map_UserRoleSession, UserRoleSession.class);
|
userRoleSessions = imdg.getImdg(IMDGDistributedNames.Map_UserRoleSession, UserRoleSession.class);
|
||||||
companyRoleSet = imdg.getImdg(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class);
|
this.roleForVerification = roleForVerification;
|
||||||
|
this.roleVerificationError = roleVerificationError;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean userHasRole(Long userId, String userRole) {
|
protected boolean userHasRole(Long userId, IEnumKey role) {
|
||||||
|
return userHasRole(userId, role == null ? null : role.getKey());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean userHasRole(Long userId, String userRole) {
|
||||||
String query = String.format("userId=%s and userRole=%s and status=%s",
|
String query = String.format("userId=%s and userRole=%s and status=%s",
|
||||||
userId, userRole, Status.Active.getKey());
|
userId, userRole, Status.Active.getKey());
|
||||||
Collection<Long> roles = userRoleSessions.getCollectionIdsBySQL(query);
|
Collection<Long> roles = userRoleSessions.getCollectionIdsBySQL(query);
|
||||||
log.trace("userHasRole: found {} roles by query: {}", roles.size(), query);
|
log.trace("userHasRole: found {} roles by query: {}", roles.size(), query);
|
||||||
if (roles.isEmpty())
|
return !roles.isEmpty();
|
||||||
return false;
|
|
||||||
//todo impl, use userRoleSessions
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean userHasRole(Long userId, Long companyId, String userRole) {
|
|
||||||
String query = String.format("userId=%s and companyId=%s and userRole=%s and status=%s",
|
|
||||||
userId, companyId, userRole, Status.Active.getKey());
|
|
||||||
Collection<Long> roles = userRoleSessions.getCollectionIdsBySQL(query);
|
|
||||||
log.trace("userHasRole: found {} roles by query: {}", roles.size(), query);
|
|
||||||
if (roles.isEmpty())
|
|
||||||
return false;
|
|
||||||
//todo impl, use userRoleSessions
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public boolean userHasRole(Long userId, IEnumKey role) {
|
public void validateRoleAndThrow(BaseRequest<?> req) throws ValidationException {
|
||||||
return userHasRole(userId, role == null ? null : role.getKey());
|
Long requesterId = req.getUserId();
|
||||||
|
if (requesterId != null && !userHasRole(requesterId, roleForVerification)) {
|
||||||
|
log.trace("User {} has no role to allow this action", requesterId);
|
||||||
|
throw new ValidationException(roleVerificationError);
|
||||||
|
} else {
|
||||||
|
log.trace("Request without userId");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean userHasRole(Long userId, Long companyId, IEnumKey role) {
|
public RequestInfoUpdate validateRoleAndGetResult(BaseRequest<?> req) {
|
||||||
return userHasRole(userId, companyId, role == null ? null : role.getKey());
|
Long requesterId = req.getUserId();
|
||||||
|
if (requesterId != null && !userHasRole(requesterId, roleForVerification)) {
|
||||||
|
log.trace("User {} has no role to allow this action", requesterId);
|
||||||
|
return new RequestInfoUpdate()
|
||||||
|
.setId(req.getId())
|
||||||
|
.setStatus(ru.spcex.clearing.platform.messaging.service.Status.Error)
|
||||||
|
.setMessage("User (id %d) has no role to allow this action".formatted(requesterId));
|
||||||
|
} else {
|
||||||
|
log.trace("Request without userId");
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean userHasRoleOnObject(Long userId, BusinessObject /*todo WithUserId / WithCompany */ bObject) {
|
// public UserRoleVerification(ImdgProvider imdg, UserRole roleForVerification, IErrorEnumId roleVerificationError) {
|
||||||
//todo impl
|
// userRoleSessions = imdg.getImdg(IMDGDistributedNames.Map_UserRoleSession, UserRoleSession.class);
|
||||||
return true;
|
// companyRoleSet = imdg.getImdg(IMDGDistributedNames.Map_CompanyRoleSet, CompanyRoleSet.class);
|
||||||
}
|
// this.roleForVerification = roleForVerification;
|
||||||
|
// this.roleVerificationError = roleVerificationError;
|
||||||
|
// }
|
||||||
|
// protected Imdg<CompanyRoleSet> companyRoleSet;
|
||||||
|
// protected Imdg<User> users;
|
||||||
|
//
|
||||||
|
// public boolean userHasRole(Long userId, Long companyId, String userRole) {
|
||||||
|
// String query = String.format("userId=%s and companyId=%s and userRole=%s and status=%s",
|
||||||
|
// userId, companyId, userRole, Status.Active.getKey());
|
||||||
|
// Collection<Long> roles = userRoleSessions.getCollectionIdsBySQL(query);
|
||||||
|
// log.trace("userHasRole: found {} roles by query: {}", roles.size(), query);
|
||||||
|
// return !roles.isEmpty();
|
||||||
|
// }
|
||||||
|
|
||||||
|
// userIsEnabled & exist - frontend-api validation
|
||||||
|
|
||||||
|
|
||||||
public boolean companyHasRole(Long companyId, String companyRole) {
|
// public boolean userHasRole(Long userId, Long companyId, IEnumKey role) {
|
||||||
String query = String.format("companyId=%s and companyRole=%s and workflowStatus=%s",
|
// return userHasRole(userId, companyId, role == null ? null : role.getKey());
|
||||||
companyId, companyRole, Status.Active.getKey());
|
// }
|
||||||
Collection<Long> roles = companyRoleSet.getCollectionIdsBySQL(query);
|
|
||||||
log.trace("companyHasRole: found {} roles by query: {}", roles.size(), query);
|
// public boolean userHasRoleOnObject(Long userId, BusinessObject /*todo WithUserId / WithCompany */ bObject) {
|
||||||
|
// todo impl
|
||||||
|
// return true;
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
// public boolean companyHasRole(Long companyId, String companyRole) {
|
||||||
|
// String query = String.format("companyId=%s and companyRole=%s and workflowStatus=%s",
|
||||||
|
// companyId, companyRole, Status.Active.getKey());
|
||||||
|
// Collection<Long> roles = companyRoleSet.getCollectionIdsBySQL(query);
|
||||||
|
// log.trace("companyHasRole: found {} roles by query: {}", roles.size(), query);
|
||||||
// if (roles.isEmpty()) return false;
|
// if (roles.isEmpty()) return false;
|
||||||
//todo impl
|
//todo impl
|
||||||
return true;
|
// return true;
|
||||||
}
|
// }
|
||||||
|
|
||||||
// userIsEnabled & exist - frontendapi validation
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue