Skip to content

PT BR 04.02.02. Programaticamente

Rafael Dipold edited this page Dec 21, 2013 · 1 revision

É possível a configuração/uso do plugin sem anotações, o que permite maior controle/dinamismo em seu projeto. Segue um exemplo simplificado:

public class SecuredClass {
	@Inject private Subject currentUser;

	public void requerAutenticacao() { if (currentUser.isAuthenticated()) {...} }

	public void requerPapelGerente() { if (currentUser.hasRole("Manager")) {...} }
	public void requerPapelAdmin() { if (currentUser.hasRole("Admin")) {...} }
	public void requerPapelGerenteEAdmin() { if (currentUser.hasRoles(Arrays.AsList("Manager", "Admin"))) {...} }

	//Irá gerar uma exceção
	public void requerPapelGerente() { currentUser.checkRole("Manager")); }
	public void requerPapelAdmin() { currentUser.checkRole("Admin")); }
	public void requerPapelGerenteEAdmin() { currentUser.checkRoles(Arrays.AsList("Manager", "Admin"))); }

	public void requiresPermissionReadDoc() { if (currentUser.isPermitted("doc:read")) {...} }
	public void requiresPermissionWriteDoc() { if (currentUser.isPermitted("doc:write")) {...} }
	public void requiresPermissionReadWriteDoc() { if (currentUser.isPermittedAll(Arrays.AsList("doc:read", "doc:write"))) {...} }

	//Irá gerar uma exceção
	public void requiresPermissionReadDoc() { currentUser.checkPermission("doc:read")); }
	public void requiresPermissionWriteDoc() { currentUser.checkPermission("doc:write")); }
	public void requiresPermissionReadWriteDoc() { currentUser.checkPermissions(Arrays.AsList("doc:read", "doc:write"))); }
}

Próximo Passo: JSP TagLib