ToDoVel [Parte 22] Registrando Usuários

Observação: Este tutorial refere-se ao Laravel-4-BETA, estando totalmente DESATUALIZADO para a versão atual. Muita coisa mudou no framework…

Já que o nosso sistema é multi-usuário vamos fazer uma página ROCHEDA de cadastro de novos usuários.
Eu chega tô sem graça.
As coisas são tão fáceis com Laravel que eu fico escrevendo abobrinha nos posts para eles ficarem maiores.
Se você está acompanhando essa série de posts desde o começo aposto que já tem na cabeça como vai fazer esse cadastro de usuário.
Simbora?

Rotas

/*    cadastro de novos usuários    */
Route::get('cadastro', 'UserController@form');
Route::post('cadastro',  ['before' => 'csrf', 'uses' => 'UserController@cadastro']);

Controller

Vamos criar o arquivo UserController.php com os métodos form e cadastro.

<?php

class UserController extends BaseController {
   public function form() {
      return View::make('cadastro/form');
   }
   
   
   public function cadastro() {
      $regras = ['email' => 'required|email|unique:users,email',
                 'senha' => 'required',
                 'confirmacao' => 'required|same:senha'];
      
      $validacao = Validator::make(Input::all(), $regras);
      
      if ($validacao->fails())
         return Redirect::to('cadastro')->withErrors($validacao);
      
      //cadastrando um novo usuário
      $usuario = new User;
      $usuario->email = Input::get('email');
      $usuario->password = Hash::make( Input::get('senha') );
      $usuario->save();
      
      return View::make('cadastro/sucesso');
   }
}

OPA!
COM CALMA!!!!

Utilizei duas regras bem legais no método cadastro.
A regra unique verifica se existe na tabela.
No caso, não podemos ter emails repetidos.
A regra same verifica se dois campos do formulário são iguais.
No caso, queremos ter certeza que a senha e a confirmação da senha são iguais.

Falando sério, papo de amigo: é fácil pra caralho caramba ou não?
Você já está programando com um sorriso no rosto?

View

Se vocês derem uma reparada no controller vão ver que nas chamadas para as views utilizei um cadastro/ antes do nome da view.
Isso quer dizer que a view encontra-se dentro dessa pasta.
Então, criei a pasta cadastro e coloquei dentro dela os arquivos.
form.blade.php

@extends('template')

@section('conteudo')

    <div class="row-fluid marketing">
        <div class="span6">
            @if ( count($errors) > 0)
                Erros encontrados:<br />
                <ul>
                    @foreach ($errors->all() as $e)
                        <li>{{ $e }}</li>
                    @endforeach
                </ul>
            @endif
            
            <form method="post" action="{{ URL::to('cadastro') }}">
                <label>
                    Email:
                    <input type="text" name="email">
                </label>
                
                <label>
                    Senha:
                    <input type="password" name="senha">
                </label>
                
                <label>
                    Confirmação da senha:
                    <input type="password" name="confirmacao">
                </label>
                
                <input type="hidden" name="_token" value="{{ csrf_token() }}" />
                <input type="submit" value="Login">
            </form>
            
        </div>
    </div>
@stop

sucesso.blade.php

@extends('template')

@section('conteudo')

    <div class="row-fluid marketing">
        <div class="span6">
            Usuário Cadastrado com Sucesso.<br />
            <a href="{{ URL::to('login') }}">Clique aqui para logar</a>
        </div>
    </div>
@stop

Considerações

Tudo muito fácil.
Não tenho mais nada a declarar 😀

No fim das contas eu gostaria de deixar aqui uma observação: eu não conferi se o usuário está logado.
Então, qualquer usuário, logado ou não, pode tentar criar um cadastro no aplicativo.
Isso é errado?
No meu ponto de vista sim, o usuário deveria fazer logout para poder se cadastrar.
Fiz essa validação, mas não coloquei o código aqui.
É muito simples e acredito que qualquer pessoa que esteja acompanhando essa série de artigos pode fazê-lo sem dificuldade (dica: é um filtro que já vem pronto).
Mesmo assim, pode-se copiar o código lá no GiHub:
https://github.com/frenetic/todovel

3 thoughts on “ToDoVel [Parte 22] Registrando Usuários

  1. Uma boa dica: Traducao das msgs
    Baixa esta pasta para dentro do seu projeto: https://github.com/mapb1990/laravel-pt_PT

    a pasta pt deve esta dentro da sua lang, e ele ira mostrar as msgs todas em PT

    Outra coisa legal que achei, é forma como vc pode mostrar as msgs: coloque isso debaixo do seu input: {{ $errors->first(‘confirmacao’,’:message’) }}

Deixe um comentário

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