Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.jleaf.common.bo.ou;
- import java.math.BigInteger;
- import javax.persistence.Query;
- import org.jleaf.common.CommonExceptionConstants;
- import org.jleaf.common.dao.PolicyOUDao;
- import org.jleaf.common.entity.PolicyOU;
- import org.jleaf.common.entity.UserRole;
- import org.jleaf.core.AbstractBusinessFunction;
- import org.jleaf.core.BusinessFunction;
- import org.jleaf.core.CoreException;
- import org.jleaf.core.Dto;
- import org.jleaf.core.annotation.ErrorList;
- import org.jleaf.core.annotation.Info;
- import org.jleaf.core.annotation.InfoIn;
- import org.jleaf.core.annotation.InfoOut;
- import org.jleaf.core.dao.QueryBuilder;
- import org.jleaf.util.ValidationUtil;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- //@formatter:off
- @Service
- @InfoIn(value = {@Info(name = "userLoginId", description = "user login id", type = Long.class),
- @Info(name = "roleLoginId", description = "role login id", type = Long.class),
- @Info(name = "ouId", description = "ou id", type = Long.class),
- @Info(name = "varName", description = "variable name", type = String.class)})
- @InfoOut(value = {})
- @ErrorList(errorKeys={CommonExceptionConstants.POLICY_OU_AUTHORIZATION_FAILED})
- //@formatter:on
- public class ValAuthorizedPolicyOU extends AbstractBusinessFunction implements BusinessFunction {
- @Autowired
- PolicyOUDao policyOUDao;
- @Override
- public Dto execute(Dto inputDto) throws Exception {
- ValidationUtil.valDtoContainsKey(inputDto, "userLoginId");
- ValidationUtil.valDtoContainsKey(inputDto, "roleLoginId");
- ValidationUtil.valDtoContainsKey(inputDto, "ouId");
- ValidationUtil.valDtoContainsKey(inputDto, "varName");
- Long userLoginId = inputDto.getLong("userLoginId");
- Long roleLoginId = inputDto.getLong("roleLoginId");
- Long ouId = inputDto.getLong("ouId");
- String varName = inputDto.getString("varName");
- QueryBuilder builder = new QueryBuilder();
- builder.add("SELECT COUNT(*) FROM ")
- .add(PolicyOU.TABLE_NAME)
- .add(" a INNER JOIN ")
- .add(UserRole.TABLE_NAME)
- .add(" b ON a.policy_id = b.policy_id ")
- .add("WHERE b.user_id = :userLoginId AND b.role_id = :roleLoginId ")
- .add("AND a.ou_id = :ouId ");
- Query query = policyOUDao.createNativeQuery(builder.toString());
- query.setParameter("userLoginId", userLoginId);
- query.setParameter("roleLoginId", roleLoginId);
- query.setParameter("ouId", ouId);
- BigInteger count = (BigInteger) query.getSingleResult();
- if (count.longValue() == 0) {
- throw new CoreException(CommonExceptionConstants.POLICY_OU_AUTHORIZATION_FAILED, varName);
- }
- return null;
- }
- @Override
- public String getDescription() {
- return "Validation user and role is authorized for specified ou";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement