2016-12-24 20 views
0

Я разрабатываю приложение, которое требует ограничения данных для определенных пользователей. Я использую Spring Security Core для управления пользователями. Мне нужно получить ссылку на зарегистрированного пользователя, чтобы выполнить некоторые операции фильтрации. Рассмотрим этот код:Grails - Получить ссылку на зарегистрированного пользователя в представлениях

class Cliente { 
     Deposito deposito 

     String ci 
     String nombre 
     String telefono 
     String celular 

     static constraints = { 
     ... 
     } 
    } 

class Empresa { 
    Deposito deposito 

    String tipoDeEmpresa 
    String nombreDeEmpresa 
    String departamento 
    String provincia 
    String municipio  

    static constraints = { 
     ... 
    } 
} 

class SecUser implements Serializable { 

    private static final long serialVersionUID = 1 

    Deposito deposito 

    String nombre 
    String username 
    String password 
    boolean enabled = true 
    boolean accountExpired 
    boolean accountLocked 
    boolean passwordExpired 

    ... 
} 

мне нужна помощь с этим фрагментом GSP (генерируется form.gsp вида) Код:

<div class="fieldcontain ${hasErrors(bean: clienteInstance, field: 'empresa', 'error')} required"> 
    <label for="empresa"> 
     <g:message code="cliente.empresa.label" default="Empresa"/> 
     <span class="required-indicator">*</span> 
    </label>  
    <g:select id="empresa" name="empresa.id" from="${org.socymet.proveedor.Empresa.findAllByDeposito(loggedUser.deposito,[sort: 'nombreDeEmpresa'])}" optionKey="id" required="" value="${clienteInstance?.empresa?.id}" class="many-to-one"/> 
</div> 

В строке, где Empresa.findAllByDeposito(loggedUser.deposito,[sort: 'nombreDeEmpresa']) искатель называется мне нужно заменить loggedUser с эффективный и правильный код для получения ссылки на текущего зарегистрированного пользователя.

Я пытался реализовать метод в классе домена Cliente, но я думаю, что это не очень хорошая практика.

Заранее спасибо.

+0

Мне нужно получить список Empresas с учетом депозита (которому принадлежит зарегистрированный пользователь). –

ответ

1

Вы можете получить текущий пользователь, используя ...

<sec:ifLoggedIn> 
    <sec:username /> 
</sec:ifLoggedIn> 

Вы можете принимать решения, основанные на ролях, как ...

<sec:ifAnyGranted roles="ROLE_YOUR_ROLE"> 
    // do stuff 
</sec:ifAnyGranted> 

Роли начинаются по умолчанию с ROLE_ при доступе, как и выше , это будет ограничивать на основе роли с именем YOUR_ROLE

+0

Я могу использовать эти теги для фильтрации содержимого, но как вы можете использовать их в качестве параметра с помощью finder 'Empresa.findAllByDeposito (loggedUser.deposito, [sort: 'nombreDeEmpresa'])'? Это моя главная проблема. –

 Смежные вопросы

  • Нет связанных вопросов^_^