Advertisement
  1. Code
  2. Web Development

Aprenda a Criar um Blog Usando Parse.js: Acesso Dos Usuários

Scroll to top
Read Time: 7 min
This post is part of a series called Building Your Blog with Parse.js.
Get Started Building Your Blog with Parse.js: Working with Data
Get Started Building Your Blog With Parse.js: Add a New Blog

Portuguese (Português) translation by Erick Patrick (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

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.

Add a User classAdd a User classAdd a User class

Adicione um novo registro para você mesmo:

Add a new userAdd a new userAdd a new user

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":

Blog securityBlog securityBlog security

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

Set permissionSet permissionSet permission

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:

Login pageLogin pageLogin page

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...

Login successLogin successLogin success

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:

Welcome screenWelcome screenWelcome screen

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!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.