2016-12-24 57 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

我需要的是獲得一個存款列表(屬於登錄用戶)的存款。 –

回答

1

使用訪問像上面時,可以獲取當前用戶...

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

您可以根據喜歡的角色決定......

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

角色默認情況下,以ROLE_前綴,這將基於名爲YOUR_ROLE的角色進行限制

+0

我可以使用這些標籤來過濾內容,但是如何將它們用作查找器的參數:Empresa.findAllByDeposito(loggedUser.deposito,[sort:'nombreDeEmpresa'])'?這是我的主要問題。 –