Proteger exibições da biblioteca de documento da lista SharePoint parece (tipo de) Possível com jQuery

Este é outro post em meu série em curso sobre como usar jQuery com o SharePoint.
Se você quer aprender mais sobre jQuery, Eu recomendo: jQuery em ação por Bibeault de urso e Yehuda Katz.

Uma das primeiras coisas que pensei, Depois que eu comecei a jogar ao redor com jQuery, era se poderia usá-lo para garantir um modo de exibição do SharePoint. A resposta é "não" (ou pelo menos, Não estou a dizer que é possível). No entanto, é certamente possível tornar difícil para as pessoas verem uma visão particular.

Eu comecei com meu ambiente sandbox quando trabalhando nisso. Eu escrevi sobre esse ambiente aqui: Rápido e fácil: Crie seu próprio jQuery Sandbox para SharePoint.

Para "fixar" uma visão, Siga estes passos:

  1. Criar uma exibição que você deseja proteger. Eu fiz isso e chamou-lhe "Garantiu View".

    Isto é o que parece quando ele não é "seguro":

    image

  2. Adicionar uma web part do editor de conteúdo para a página do modo de exibição usando o truque descrito no artigo da caixa de areia (ou seja. Adicionar "PageView = Shared&ToolPaneView = 2 "para a URL).
  3. Descobrir seu SharePoint _spUserId seguindo estas etapas loucas, Acredite ou não:
    1. Entrar no ambiente do SharePoint.
    2. No campo de endereço do navegador da web, tipo: "javascript:alerta(_spUserId").
    3. Gravar o resultado (é "13", no meu caso).

      image

  4. Adicionar o seguinte javascript para seu CEWP na visualização de código:

    <script type ="text/javascript"
        src ="../../jQuery Library/jQuery-1.3.2.min.js">
    </script>
    
    <script type ="text/javascript">
      $(função() {
    
        alerta(_spUserId);
    
        var theSecuredView = $(' iframe[FilterLink FilterLink * = 20View % garantido]');
    
        se ((theSecuredView.length > 0) && (_spUserId = = 13))
          $(' iframe[FilterLink FilterLink * = 20View % garantido]').pai().pai().pai().HTML("<TR bgcolor = vermelho><TD>Sem vista para você!</TD></TR>");
      });
    
    </script>
    

Eu incluí o alerta(_spUserId) linha lá para demonstrar como isso não é realmente um "protegendo" uma visão, Mas simplesmente tornando mais difícil de ver. Mais sobre isso em um momento.

Basicamente, jQuery está à procura de um iFrame na página que tem um atributo que contém "Secured % 20View" em seu valor. Uma vez que ela encontra-lo, Podemos verificar se o usuário atual é "13". Se é, caminhamos até o DOM de uma <TR> Tag (que eu descobri, exibindo a fonte e rastreá-lo) e então, substituindo aquela marca TR com minha mensagem. Não sei mesmo como robusto é (Eu sou muito suspeito, Na verdade), Mas funcionou na minha caixa de areia. Se eu encontrar uma maneira melhor, I'll blog sobre isso. Este é o resultado:

image

Eu clico no botão OK e os dados são substituídos com uma grande mensagem vermelha:

image

Como você pode dizer, do jeito que eu ter que implementar essa solução de "segurança" é permitir que a web part para processar-se. Depois que termina, Eu substituir seu conteúdo com meu "sem vista para você!"mensagem.

Apesar do fato de que não é realmente um "seguro" "vista, é potencialmente útil e com um trabalho inteligente, pode eventualmente ser protegido em um sentido mais formal. A questão fundamental é que o cliente vai receber todos os dados e então, Só depois que obtém os dados, -apagar. Se o cliente está recebendo os dados, um usuário esperto pode impedir a execução de todo de jQuery e vê o que quer ver.

Há outros inconvenientes. Esta abordagem de "segurança" é baseada fora de um _spUserId. Queremos realmente seguro com base no modelo de segurança do SharePoint completo, ou pelo menos por nome de usuário. Isso torna-se progressivamente mais difíceis, Mas vejo algumas coisas boas sobre este assunto, Então eu estou esperançoso de que há uma boa resposta para esse problema.

A lista de pontos de vista se deve ser aparada., se possível. Não tentei descobrir isso. Eu suponho que é possível, Mas realmente não resolve o problema de segurança fundamentais porque alguém poderia ainda apenas digite a URL do modo de exibição que eles querem (Se soubessem que). No entanto, aparar faz sentido. É uma característica de boa usabilidade e ajuda a ofuscar as coisas. Se um usuário final não sabe que o evento de exibição existe, Eles provavelmente não vão tentar usá-lo. Às vezes, Isso é bom o suficiente.

Com sorte, Eu vou ter mais para escrever sobre este assunto ao longo do tempo.

</fim>

Subscreva ao meu blog.

Siga-me no Twitter em http://www.twitter.com/pagalvin

Deixar uma resposta

seu endereço de e-mail não será publicado. Campos obrigatórios são marcados *