Смена datasource в зависимости от роли


(Алексей Клевко) #1

Необходимо в зависимости от принадлежности пользователя к какой-либо роли показывать определенные записи или скрывать их.
В 6.10.7 работала такая смена ds, в 7.0.0 не работает.

Код requestServicesDs

select e from ekomerp$RequestService e
where e.createdBy = :session$userLogin
order by e.number desc

Код requestServicesAdminDs

select e from ekomerp$RequestService e
order by e.number desc

Код контролера
  public void init(Map<String, Object> params) {
        if(isUserSupport()){
              requestServicesTable.setDatasource(requestServicesAdminDs);
              filter.setDatasource(requestServicesAdminDs);
        }else {
            requestServicesTable.setDatasource(requestServicesDs);
            filter.setDatasource(requestServicesDs);
        }
        super.init(params);
    }
    public boolean isUserSupport(){
        Collection<UserRole> userRoles = userSession.getCurrentOrSubstitutedUser().getUserRoles();
        boolean isSupport = false;
        for (UserRole userRole:userRoles){
            if(userRole.getRole().getName().equals("Support")){
                isSupport = true;
                break;
            }
        }
        return isSupport;
    }

(Kirill Khoroshilov) #3

Привет!

А что мешает использовать группы доступа? Они ведь как раз для ограничения доступа к записям.