WebMatrix - Criando a área de administração do site - 8


Na  setima parte deste artigo implementamos o processo de encerramento das compras ou  checkout e neste artigo vamos iniciar a criação da área de administração do site.

Obs: Enquanto eu escrevia esta série de artigos foi liberada a versão 2 do WebMatrix e a área de administração vai ser criada usando esta versão.

Atenção!! - Se houver erros na abertura do banco de dados nas páginas que usam o comando Database.Open, inclua a declaração @using WebMatrix.Data; no início da página para resolver o problema.

Para baixar a nova versão clique no link: http://www.microsoft.com/web/webmatrix/

Definindo os objetivos

A área de administração do site é uma área restrita onde o usuário com perfil de administrador poderá realizar o gerenciamentos dos produtos , usuários e pedidos do site.

Os processos administrativos que iremos definir em nosso site incluem:

Além disso vamos também implementar as seguintes funcionalidades:

Criando a área de administração do site

Precisamos criar um área no site que permita o acesso somente a usuários com perfil de administrador para gerenciar o site.

Vamos fazer isso criando uma pasta chamada Admin a qual irá conter todas as páginas da área de administração. Esta pasta será segura e terá acesso restrito somente aos membros com o perfil 'Admin'.  Vamos começar criando o perfil Admin; para isso vamos abrir o nosso projeto TecnoSite no WebMatrix.

Após abrir o projeto abra o workspace Databases (Banco de dados) no IDE WebMatrix e no painel de navegação abra a tabela webpages_Roles no banco de dados TecnoSite.sdf;

A seguir inclua um novo registro na tabela inserindo o valor 'Admin' para o campo RoleName. O campo RoleId é um campo que será automaticamente preenchido pelo banco de dados por isso não vamos informar valor para esta coluna:

A seguir , se você ainda não tiver um usuário registrado no banco de dados, execute o projeto e crie uma conta usando a página \Contas\Registro.cshtml.

Uma vez que o usuário esteja registrado retorne para o IDE WebMatrix e no workspace DataBases(Banco de dados) abra a tabela UserProfile e e anote o valor do campo UserId para o usuário cadastrado.

Abra então a tabela webpages_UsersInRoles e crie um novo registro incluindo o valor do UserId obtido anteriormente e o valor para o RoleId conforme mostra a figura abaixo:

Nesta tabela ambas as colunas são chaves estrangeiras de forma que elas não são geradas pelo banco de dados e você deverá informar o valor para as duas colunas.

Estamos realizando estes procedimentos apenas esta vez, visto que temos que definir pelo menos um usuário com perfil de administrador para acessar a área restrita; Mais adiante vamos criar uma interface que permitirá aos administradores realizarem esta tarefa usando as páginas do site.

Criando e Restringindo o acesso a pasta Admin

Todas a páginas da administração do site estarão armazenadas dentro da pasta Admin e nós vamos permitir o acesso a esta pasta somente aos membros do perfil Admin que acabamos de criar anteriormente.

Clique no workspace Arquivos,  a seguir clique com o botão direito do  mouse no projeto TecnoSite e a seguir selecione a opção Nova Pasta e crie uma nova pasta na raiz do site chamada Admin;

A seguir clique com o botão direito do mouse sobre a pasta Admin e selecione a opção Novo Arquivo;

A seguir selecione o template CSHTML e informe o nome  _PageStart.cshtml e clique no botão OK;

A seguir inclua o código abaixo nesta página removendo o código criado por padrão:

Este código verifica se o usuário atual é membro do perfil Admin e então o redireciona para a página de Login presente na pasta /Contas caso ele não tenha esse perfil.

Por convenção o arquivo _PageStart.chtml será executado antes de qualquer outra página existente na pasta Admin ou em suas subpastas dessa forma garantindo a segurança de nossas páginas de administração existente.

Criando a página de administração do site

Vamos criar a página inicial da administração do site que será a página que definirá o leiaute padrão a partir da qual todas as outras páginas irão se basear para dessa forma termos uma aparência padrão para as páginas da área de administração.

Clique com o botão direito sobre a Layouts contida na pasta Shared e a seguir clique em Novo Arquivo;

Selecione o template CSHTML e informe o nome _AdminLayout.cshtml e clique no botão OK;

 A página  _AdminLayout.cshtml será muito parecida com a página _Layout.cshtml usada para o nosso site, mas irá apresentar um menu no lado esquerdo que irá facilitar a navegação para as páginas de administração do site.

Remova o código criado por padrão e digite o código abaixo no arquivo _AdminLayout.cshtml :

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>TechieTogs - @Page.Title</title>
  <link href="@Href("~/CSS/Style.css")" rel="stylesheet" />
  <link href="@Href("~/CSS/AdminStyle.css")" rel="stylesheet" />
  @RenderSection("head", required: false)

</head>
<body>
<div id="page">
   <div id="header">
      <p class="logo"><a href="@Href("~/")">TecnoSite</a></p>
        <div id="headerRight">
           <div id="accountSummary">@MembershipHelpers.ResumoConta()</div>
        </div>
   </div>
   <div id="content">
     <div id="adminMenu">
         @RenderPage("~/Shared/Partials/_AdminMenu.cshtml")
     </div>
     <div id="main">
         @RenderBody()
     </div>
   </div>
   <div id="footer">
      &copy;@DateTime.Now.Year TecnoSite. Todos os direitor reservados.
   </div>
</div>
</body>
</html>

No código acima existem dois arquivos que iremos criar a seguir :

A seguir vamos criar esses dois arquivos.

Definindo o menu da área de administração

O menu da área de administração é uma página partial que fornece a navegação para as demais páginas da área de administração do site.

Vamos criar uma nova página no interior da pasta Layouts/Partials chamada _AdminMenu.cshtml (já mostramos como criar uma página em uma pasta);

A seguir inclua o seguinte código nesta página:

Note que as páginas de administração são armazenadas em subpastas contidas na pasta Admin relacionadas com sua função. Vamos criar essas subpastas e as páginas mais adiante.

Definindo o estilo da área de administração

Vamos definir um arquivo de estilo separado que será usada apenas para área de administração.

Clique com o botão direito do mouse sobre a pasta CSS e selecione Novo Arquivo;

 A seguir selecione o template CSS e informe o nome AdminStyle.css e clique no botão OK;

A seguir defina o seguinte código neste arquivo de estilo:

/* Estilo Geral
---------------------------------*/

h2 {
width: 30%;
border-bottom: 1px dashed #cdcdcd;
margin: 25px 0px 20px 0px;
}
textarea {
font-family: Verdana, Helvetica, Sans-Serif;
}
/* Menu
---------------------------------*/

#adminMenu {
float:left;
width:150px;
}
#adminMenu ul {
border-bottom: 1px solid #cdcdcd;
margin-bottom: 20px;
}
#adminMenu ul li {
list-style: none;
border-top: 1px solid #cdcdcd;
margin: 0;
padding: 10px;
}
#adminMenu ul li:hover {
background-color: #ddd;
}
#adminMenu .title {
margin-bottom: 20px;
text-align:center;
font-size: 12px;
font-weight: bold;
}
/* Grid
---------------------------------*/

.grid {
margin-top: 20px;
border-collapse: collapse;
width: 100%;
}
.grid td {
padding: 5px;
}
.gridHeader {
background-color: #fff;
font-weight: bold;
text-align: left;
border-bottom: 1px solid #cdcdcd;
}
.gridAlt {
background-color: #f7f7f7;
}
.gridFooter {
border-top: 1px solid #cdcdcd;
}
.grid tr #mainColumn {
width: 100%;
}
/* Forms
---------------------------------*/

#shippedForm, #deleteForm {
margin-top: 15px;
}
#produtoForm
{
float: left;
width: 350px;
}
#produtoFormImagem
{
float: left;
  width: 330px;
}
#produtoForm label {
  font-weight: bold;
}
#produtoForm p {
  padding: 5px 0px 5px 0px;

Definindo a página principal da área de administração

A página principal da área de administração será baseada na página de leiaute _AdminLayout.cshtml. A princípio seu conteúdo será bem simples.

Crie uma arquivo chamado Default.cshtml na pasta Admin e digite o seguinte código nesta página:

@{
Layout = "~/Shared/Layouts/_AdminLayout.cshtml";
Page.Title = "Administração";
}
<h1>Administração do Site TecnoSite</h1>
<p>Selecione uma tarefa de administração a partir do menu.</p>

 

Após isso execute o projeto e efetue o login como usuário com perfil de administrador e navegue para a página /Admin/Default.chstml.

Se o usuário com perfil de administrador ja estiver logado será aberta a página de administração.

Você irá ver a página principal da área de administração exibindo o menu conforme mostra a figura abaixo:

Se o usuário não estiver logado com o perfil de administrador será apresentado a tela de login conforme abaixo:

Após o login com sucesso a tela você verá página principal da área de administração.

Aguarde a segunda parte da área de administração: WebMatrix - Gerenciando Usuários, Pedidos e Categorias - 9

Referências:


José Carlos Macoratti