Aprenda a Criar um Blog Usando Parse.js: Acesso Dos Usuários
Portuguese (Português) translation by Erick Patrick (you can also view the original English article)



No artigo anterior, você aprendeu a adicionar dados no Parse.com e a apresentar esses dados no seu site. Você se familiarizou ao conceito de objetos, coleções e visões, além de criar sua primeira classe. Deste artigo em diante, você aprenderá a criar o painel administrativo do sistema de blog.
E tudo começa com a criação da classe User
e habilitando o login.
1. Classe User
Passo 1: Adicione a Classe User
O Parse.com tornou extremamente simples a adição de uma nova classe User
. Apenas clique em "Add Class" e escolha "User" para criá-la.



Adicione um novo registro para você mesmo:



Passo 2: Adicione Controles de Acesso a Nível de Classe
Agora que você tem um usuário, podemos tornar a aplicação mais segura, configurando algumas permissões de acesso a nível de classe.
Vá até a tabela dos artigos do blog e clique em "Security":



Altere "Add Fields" de público para apenas você mesmo:



Isso prevenirá os outros de adicionar novos campos à tabela.
Similarmente, vá até a tabela User e limite o "Add Fields" para somente você também.
Você pode configurar o resto das permissões a nível de classe de acordo com suas necessidades, mas deixaremos assim, por hora.
2. Prepare uma Página de Administração
Passo 1: Limpe a Navegação
Primeiro, limpemos uma pouco a barra de navegação do modelo HTML, para dar espaço para a nova página administrativa. Altere o elemento <nav>
de forma que tenha somente dois links: Home
e Admin
:
1 |
<nav class="blog-nav"> |
2 |
<a class="blog-nav-item active" href="index.html">Home</a> |
3 |
<a class="blog-nav-item" href="admin.html">Admin</a> |
4 |
</nav>
|
Passo 2: Prepare o Arquivo admin.html
e Seu CSS
Agora, duplique o arquivo index.html
e o renomeie para admin.html
, e também duplique o arquivo blog.js
e o renomeie para admin.js
(Para aqueles familiarizados ao conceito de roteamento e odeiam código duplicado, por favor, continue seguindo o artigo. Prometo que aprenderemos a criar e usar um roteador e limpar um pouco as coisas!).
No arquivo admin.html
, aplique a classe .active
à aba correta:
1 |
<nav class="blog-nav"> |
2 |
<a class="blog-nav-item" href="index.html">Home</a> |
3 |
<a class="blog-nav-item active" href="admin.html">Admin</a> |
4 |
</nav>
|
E chame o arquivo admin.js
ao invés do blog.js
:
1 |
<script src="js/admin.js"></script> |
Garanta que tudo ainda esteja funcionando normalmente para que possamos continuar e criar a página de Login.
Mesma coisa de antes, vá até http://getbootstrap.com/examples/signin, e copie o HTML de .form-signin
para dentro de .main-container
.
1 |
<div class="main-container"> |
2 |
<form class="form-signin" role="form"> |
3 |
<h2 class="form-signin-heading">Por favor, faça seu login</h2> |
4 |
<input type="email" class="form-control" placeholder="Email address" required="" autofocus=""> |
5 |
<input type="password" class="form-control" placeholder="Senha" required=""> |
6 |
<div class="checkbox"> |
7 |
<label>
|
8 |
<input type="checkbox" value="remember-me"> Manter-me conectado |
9 |
</label>
|
10 |
</div>
|
11 |
<button class="btn btn-lg btn-primary btn-block" type="submit">Acessar</button> |
12 |
</form>
|
13 |
</div>
|
Pegue os estilos no arquivo signin.css
e copie-o para seu arquivo blog.css
, exceto os estilos relacionados ao elemento body
:
1 |
.form-signin { |
2 |
max-width: 330px; |
3 |
padding: 15px; |
4 |
margin: 0 auto; |
5 |
}
|
6 |
.form-signin .form-signin-heading, |
7 |
.form-signin .checkbox { |
8 |
margin-bottom: 10px; |
9 |
}
|
10 |
.form-signin .checkbox { |
11 |
font-weight: normal; |
12 |
}
|
13 |
.form-signin .form-control { |
14 |
position: relative; |
15 |
height: auto; |
16 |
-webkit-box-sizing: border-box; |
17 |
-moz-box-sizing: border-box; |
18 |
box-sizing: border-box; |
19 |
padding: 10px; |
20 |
font-size: 16px; |
21 |
}
|
22 |
.form-signin .form-control:focus { |
23 |
z-index: 2; |
24 |
}
|
25 |
.form-signin input[type="email"] { |
26 |
margin-bottom: -1px; |
27 |
border-bottom-right-radius: 0; |
28 |
border-bottom-left-radius: 0; |
29 |
}
|
30 |
.form-signin input[type="password"] { |
31 |
margin-bottom: 10px; |
32 |
border-top-left-radius: 0; |
33 |
border-top-right-radius: 0; |
34 |
}
|
Passo 4: Limpe o Arquivo admin.js
Finalmente, limpe tudo que estiver abaixo de Parse.initialize()
no arquivo admin.js
:
1 |
$(function() { |
2 |
|
3 |
Parse.$ = jQuery; |
4 |
|
5 |
// Substitua essa linha pela que aparece na página Quickstart Guide
|
6 |
Parse.initialize("HC87tn6aA7c3sYx9X0vwwLVXeqHDRMYYmrUBK5zv", "3piNGGnRMhvWo8u9pKD9TDc1MJlWhlvK78Vr3fHo"); |
7 |
|
8 |
});
|
Agora, atualize a página:



Tudo certo!
Passo 5: Ajustando o Formulário de Login
Alguns ajustes finais à página: usaremos o nome de usuário para acessar a página administrativa, então, altere o campo de e-mail para um campo de texto e adicione o atributo name
em ambos os campos:
1 |
<input type="text" name="username" class="form-control" placeholder="Nome de Usuário" required="" autofocus=""> |
2 |
<input type="password" name="password" class="form-control" placeholder="Senha" required=""> |
Também altere o seletor CSS de email
para text
:
1 |
.form-signin input[type="text"] { |
2 |
margin-bottom: -1px; |
3 |
border-bottom-right-radius: 0; |
4 |
border-bottom-left-radius: 0; |
5 |
}
|
E remova o campo de seleção "Manter-me conectado", porque não traremos disso nesse tutorial.
3. Habilite o Login
Agora, finalmente somos capazes de acessar o painel administrativo. Criemos uma função JavaScript básica para permitir os usuários acessarem ao clicar no botão Enviar in admin.js
:
1 |
$('.form-signin').on('submit', function(e) { |
2 |
|
3 |
// Previne o envio padrão do formulário
|
4 |
e.preventDefault(); |
5 |
|
6 |
// Obtém os dados do formulário e os coloca em variáveis
|
7 |
var data = $(this).serializeArray(), |
8 |
username = data[0].value, |
9 |
password = data[1].value; |
10 |
|
11 |
// Invoca a função Login do Parse.com com as variáveis acima
|
12 |
Parse.User.logIn(username, password, { |
13 |
// Se o nome de usuário e senha existirem
|
14 |
success: function(user) { |
15 |
alert('Welcome!'); |
16 |
},
|
17 |
// Se houver algum erro
|
18 |
error: function(user, error) { |
19 |
console.log(error); |
20 |
}
|
21 |
});
|
22 |
|
23 |
});
|
É hora de tentarmos...



Simples assim: você acessou a página administrativa!
4. Visão de Login e Visão de Boas-Vindas
Após realizar login, com certeza, você não quer ver apenas uma mensagem de alerta e permanecer na mesma página login. Precisamos criar uma tela de boas-vindas para os usuários logados.
Para fazer do melhor jeito, criaremos tanto a página de login quanto a de boas-vindas, usando Views
e servi-las através do Parse.js.
Passo 1: Crie os Modelos
Assim como fizemos com os modelos para o blog, removamos tudo de .main-container
e criemos modelos para a página de login e para a página de boas-vindas:
1 |
<script id="login-tpl" type="text/x-handlebars-template"> |
2 |
<form class="form-signin" role="form"> |
3 |
<h2 class="form-signin-heading">Por favor, faça seu login</h2> |
4 |
<input type="text" name="username" class="form-control" placeholder="Nome de Usuário" required="" autofocus=""> |
5 |
<input type="password" name="password" class="form-control" placeholder="Senha" required=""> |
6 |
<button class="btn btn-lg btn-primary btn-block" type="submit">Acessar</button> |
7 |
</form> |
8 |
</script>
|
9 |
|
10 |
<script id="welcome-tpl" type="text/x-handlebars-template"> |
11 |
<h2>Bem-vindo, {{username}}!</h2> |
12 |
</script>
|
Podemos manter a tela de boas-vindas bem simples, por hora. Ela pegará o objeto que contém o usuário logado e mostrará seu nome, apenas.
Passo 2: Definindo as Visões
Definamos as visões no arquivo admin.js
. Uma vez que a LoginView
não precisa mostrar qualquer objeto, a função render
apenas joga o modelo HTML direto no DOM.
1 |
var LoginView = Parse.View.extend({ |
2 |
template: Handlebars.compile($('#login-tpl').html()), |
3 |
render: function(){ |
4 |
this.$el.html(this.template()); |
5 |
}
|
6 |
}),
|
7 |
WelcomeView = Parse.View.extend({ |
8 |
template: Handlebars.compile($('#welcome-tpl').html()), |
9 |
render: function(){ |
10 |
var attributes = this.model.toJSON(); |
11 |
this.$el.html(this.template(attributes)); |
12 |
}
|
13 |
});
|
Passo 3: Adicione o Evento de Login à Visão
Lembra-se da simples função de Login que temos? Agora, podemos torná-la em um evento dentro da LoginView
:
1 |
var LoginView = Parse.View.extend({ |
2 |
template: Handlebars.compile($('#login-tpl').html()), |
3 |
events: { |
4 |
'submit .form-signin': 'login' |
5 |
},
|
6 |
login: function(e) { |
7 |
|
8 |
// Previne o envio padrão do formulário
|
9 |
e.preventDefault(); |
10 |
|
11 |
// Obtém os dados do formulário e os coloca em variáveis
|
12 |
var data = $(e.target).serializeArray(), |
13 |
username = data[0].value, |
14 |
password = data[1].value; |
15 |
|
16 |
// Invoca a função Login do Parse.com com as variáveis acima
|
17 |
Parse.User.logIn(username, password, { |
18 |
// Se o nome de usuário e senha existirem
|
19 |
success: function(user) { |
20 |
alert('Welcome!'); |
21 |
},
|
22 |
// Se houver algum erro
|
23 |
error: function(user, error) { |
24 |
console.log(error); |
25 |
}
|
26 |
});
|
27 |
},
|
28 |
render: function(){ |
29 |
this.$el.html(this.template()); |
30 |
}
|
31 |
})
|
Perceba que alteramos o $(this).serializeArray()
para $(e.target).serializeArray()
. Isso se dá porque, nesse contexto, o this
apontará para a LoginView
.
Passo 4: Mostre a LoginView
na Página
Antes de seguirmos para visão de boas-vindas, primeiro mostraremos a LoginView
na página atual e ver se ela funciona:
1 |
var loginView = new LoginView(); |
2 |
loginView.render(); |
3 |
$('.main-container').html(loginView.el); |
Execute novamente e funcionará como antes.
Passo 5: Mostre a Tela de Boas Vindas Através da Callback de Sucesso
Agora, alteremos a função callback de sucesso da função login()
para renderizar a tela de boas-vindas usando o objeto user
retornado.
1 |
success: function(user) { |
2 |
var welcomeView = new WelcomeView({ model: user }); |
3 |
welcomeView.render(); |
4 |
$('.main-container').html(welcomeView.el); |
5 |
}
|
Teste outra vez:



E sim, funciona de verdade!
Conclusão
Neste artigo, você criou sua segunda classe: a classe User
. você também criou duas visões importantes as LoginView
e WelcomeView
. Você também habilitou o login de usuários em seu site, e agora você pode enviar uma mensagem personalizada para seus usuários.
Esse é só o começo da construção do painel administrativo do blog. Fique ligado que, no próximo artigo, criaremos uma nova visão e habilitaremos a função de "Adicionar novo artigo".
Seja o primeiro a saber sobre novas traduções–siga @tutsplus_pt no Twitter!