Observação: Este tutorial refere-se ao Laravel-4-BETA, estando totalmente DESATUALIZADO para a versão atual. Muita coisa mudou no framework…
Nossa app já está do balacobaco.
Porém, ela só serve se apenas um usuário for utilizá-la, e em localhost.
Se um dia fossemos colocar essa app no ar, ou se fossemos dividí-la com um colega do trabalho, seria legal termos essa app multi-usuário.
Para isso, vamos criar um sistema de autenticação e vamos associar as listas a usuários.
Antes de começar a ficar nervoso lembre-se: estamos utilizando Laravel.
Migrations
Para começar vamos utilizar nossa velha amiga Migration.
Vamos criar uma Migration que crie a tabela de usuários e que associe os usuários as listas.
php artisan migrate:make create_user_table
No nosso novo arquivo, vamos criar os métodos de UP e DOWN:
<?php use Illuminate\Database\Migrations\Migration; class CreateUserTable extends Migration { public function up() { Schema::create('users', function($table) { $table->increments('id'); $table->string('email')->unique(); $table->string('password'); $table->timestamps(); }); Schema::table('listas', function($table) { $table->integer('user_id')->unsigned()->nullable(); $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade'); }); } public function down() { Schema::table('listas', function($table){ $table->dropForeign('user_id'); $table->dropColumn('user_id'); }); Schema::dropIfExists('users'); } }
E ai é só salvar no banco de dados.
php artisan migrate
Seeder
Agora que criamos a tabela de usuários seria legal termos um usuário cadastrado no banco de dados para podermos testar a vontade.
Porém, inserir esse usuário manualmente vai ser dor de cabeça.
O campo password da tabela deve estar criptografado, e eu acredito que ninguém vai querer ter muita dor de cabeça para criptografar 1 usuário de teste.
Para casos como esse o Laravel possui um Seeder.
O Seeder é uma facilidade para automatizar cadastros em bancos de dados.
Imagine que você tem uma aplicação nova que precisa saber qual é a cidade do usuário.
Ao invés de cadastrar as cidades no banco de dados, você cria um Seeder que faz isso para você.
Assim, se você for colocar sua aplicação em outro servidor, não irá precisar ficar inserindo dados manualmente, e nem executando comandos SQL feito um doido, basta executar o seeder que você criou.
Para utilizar o Seeder precisamos ir no arquivo app/database/seeds/DatabaseSeeder.php:
<?php class DatabaseSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { Eloquent::unguard(); $this->call('UserTableSeeder'); } }
E ai, dentro da pasta app/database/seeds/ a gente cria o arquivo UserTableSeeder.php:
<?php class UserTableSeeder extends Seeder { public function run() { DB::table('users')->delete(); User::create(array( 'email' => 'teste@teste.com', 'password' => Hash::make('teste') )); } }
E ai a gente executa o seguinte comando:
php artisan seed:seed
Chave de Criptografia
No seed fiz uso da facilidade Hash::make(‘string’);.
Ele pega a string e cria um hash.
OOOOOOOOOHHHHHHHHHHHHHHHHHHHHH
No começo do projeto, indiquei que fosse configurado o arquivo app/config/app.php.
Esse arquivo possui a diretiva KEY, que é a chave de criptografia do seu site.
Faça dela uma string longa, bem louca e única!
E nunca fale dela para ninguém!!!
Se faltar criatividade, você pode usar o salt do WordPress: https://api.wordpress.org/secret-key/1.1/salt/.
Dica de leitura: Laravel 4 Uber-Quick-Start (With auth!) Guide
O comando acho que não deveria ser “php artisan seed:seed” e sim “php artisan bd:seed”
Aqui tentei assim e funcionou.
No mais, parabéns.
Oi Filipe.
Pode ser que o comando tenha mudado da versão Laravel Beta4 para a versão oficial.
No beta era assim que funcionava.
Pra mim funcionou com ‘php artisan db:seed’.
Uma boa dica para gerar o key é usar o próprio artisan:
php artisan key:generate
Se vc nao tiver mexido na configuração o proprio artisan ja configura o arquivo, caso contrario é so copiar a saida do terminal e colocar no script
Boa!
Esqueci de comentar sobre essa facilidade.
Felipe quase isso kkk, vc trocou as letras o certo é: php artisan db:seed
qual comando se usa quando houver alteração na tabela? Tipo, eu crio a tabela, depois eu coloco mais um campo, como faz para a tabela ser recriada no banco? Mas so a tabela modificada. Quando altero e rodo o camando $ php artisan migrate. Aparece o erro “Nothing to migrate.”
Você deve criar um novo script de migração, análogo ao que fizemos aqui, e nesse script de migração você define a inserção desta sua nova coluna.
Então, você executa o comando para realizar a migração.
Vide a documentação: http://laravel.com/docs/migrations
Olá,
Você saberia me informar como fazer uma autenticação sendo que a senha no banco de dados não usa encriptografia?
Exemplo:
Password = 123456
Senha limpa
A forma mais simples é não utilizar a palavra chave password.
Se você utilizar como senha, funciona sem criptografia, pois o Laravel vai casar duas colunas sem criptografar nenhuma delas.
A forma mais complicada é você criar seu próprio sistema de autenticação.
Por fim, vou ser chato: CRIPTOGRAFE AS SUAS SENHAS!
essa linha de comando
php artisan seed:seed
estava dando esse erro
[InvalidArgumentException]
There are no commands defined in the “seed” namespace.
ai fui na documentação de deu certo com
php artisan db:seed