laravel login y logout

Route::group(['middleware' => ['guest']], function () {
Route::get('/', 'Auth\LoginController@showLoginForm');
Route::match(['get','post'],'/login', 'Auth\LoginController@login')->name('login');
});

Route::match(['get','post'],'/logout','Auth\LoginController@logout')->name('logout')->middleware('auth');

Route::match(['get','post'],'/ se uso en vez de post
para evitar la exception MethodNotAllowedHttpException que dispara cuando, estando logueado, se tipea en la url /login

laravel maneja "automaticamente" a traves del middleware RedirectIfAuthenticated que cuando se esta logueado y se tipee en la url
la barra "/" o "/login" te redireccione a la ruta que hayas denominado como "home"


aunque el logout se puede  manejar para evitar ataques Cross se va a manejar a traves del method POST, entonces en la vista

<div class="dropdown-menu dropdown-menu-right">
                    <div class="dropdown-header text-center">
                        <strong>Cuenta</strong>
                    </div>
                    <a class="dropdown-item" href="#"><i class="fa fa-user"></i> Perfil</a>
                    <a class="dropdown-item" href="#" onclick="event.preventDefault(); document.getElementById('frm-logout').submit();"><i class="fa fa-lock"></i> Cerrar sesión</a>
                </div>
                <form id="frm-logout" action="{{ route('logout') }}" method="POST" style="display: none;">
                  {{ csrf_field() }}
                </form>

y en el controller:

 public function logout(Request $request)
    {
        if ($request->isMethod('post')) {
             Auth::logout();
             $request->session()->invalidate();
             return redirect('/');
        }
        return back();
     
    }




laravel crear data de prueba

por ejemplo para crear usuarios

1) creamos una clase seeder
php artisan make:seeder UsersTableSeeder

(la cual se creara dentro de database/seeds)

2) editamos el cuerpo de la clase USersTableSeeder
para indicar que modelo usaremos para crear registros y la cantidad de registros a crear

use Illuminate\Database\Seeder;
use App\User;

class UsersTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        //
        factory(User::class, 5)->create();
    }
}

3) ahora debemos crear la clase factory que se encuentra en database/factories
use Faker\Generator as Faker;

$factory->define(App\User::class, function (Faker $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
        'remember_token' => str_random(10),
    ];
});

4) EN la clase DatabaseSeeder, indicamos las llamadas a los seeders que se invocaran con una llamada general

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
         $this->call(UsersTableSeeder::class);

    }
}

5)
para llamar al run de databaseSeeder
php artisan db:seed
para llamar al run del seeder en particular

php artisan db:seed --class=UsersTableSeeder

laravel localization language


modificar

config/app.php

'locale' => 'es'

debe existir, sino hay que crearla, la carpeta

resources/lang/es

si usamos en un controller por ejemplo la siguiente
return back()->withErrors(['usuario'=>trans('auth.failed')]);
     
quiere decir que existe el archivo auth.php en resources/lang/es
con la sgt estructura:

<?php

return [
    'failed' => 'Los datos ingresados no coinciden con nuestros registros.',
];

no olvidar limpiar la cache de la config:

php artisan config:cache


se puede descargar la carpeta es desde este repositorio
https://github.com/hosmelq/lang-spanish

react native 0.57 crear y ejecutar una primer aplicacion

1)
desde la consola

react-native init MiAplicacion

2) ir a la carpeta creada de la aplicacion y desde ahi:

npm add @babel/runtime

3) ir a android Studio

file->open

ir hasta la carpeta del proyecto y click en el archivo "android"

4) abrir AVD Manager

del listado de Your Virtual Devices click en el boton verde de play para lanzar ese emulador

5) desde la consola y dentro de la carpeta de la aplicacion creada:

react-native run-android


6) Si todo esta ok deberia aparecer en la pantalla del emulador el siguiente texto de prueba:

   Welcome to React Native!
   To get started, edit App.js
   Double tap R on your keyboard to reload,
   Shake or press menu button for dev menu


el cual se encuentra en App.js en la raiz del proyecto

react native 0.57 seteos iniciales

informacion obtenida de
https://facebook.github.io/react-native/docs/getting-started.html


1) instalar chocolatey, un administrador de paquetes para windows:

desde la consola

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"


2) instalar dependencias necesarias

choco install -y nodejs.install python2 jdk8

3) instalar el react cli (command line interface)

npm install -g react-native-cli

4) instalar android studio

5) al instalar android studio se instalara el ultimo sAndroid dk disponible pero para esta version de react native vamos a necesitar la

Android 8.0 (Oreo)

entonces vamos al SDK Manager
click en la pestana de SDK Platforms

(click en el checkbox inferior-derecha de "show package details")

check en Android 8.0 desplegar y verificar que esten tambien marcadas las opciones

  • Android SDK Platform 26 
  • Google APIs Intel x86 Atom_64 System Image


click en "Apply".

6)setear en las variables de entorno android_home con el valor del sdk de android

ANDROID_HOME
usalmente se encuentra en esta direccion:

c:\Users\YOUR_USERNAME\AppData\Local\Android\Sdk

7) crear un nuevo AVD android virtual device

click en el icono de AVD MAnager

click en +new Virtual Device

seleccionar el tab de Phone y click en Next

luego Select the "x86 Images" tab, then look for the Oreo API Level 26, x86_64 ABI image with a Android 8.0 (Google APIs) target.

listo
habra tambien que Install HAXM que seguramente te pedira al momento de hacerle clik en el boton triangular vede de play





ubuntu error cuando ejecutamos php.exe PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/php_mbstring.dll

PHP Startup: Unable to load dynamic library '/usr/lib/php/20160303/php_mbstring.dll



editar el php.ini

comentar con un punto-y-coma al inicio, la siguiente linea

extension=php_mbstring.dll
;extension=php_mbstring.dll ; commented out

para saber donde se encuentra este archivo:

php -i | grep -i "Loaded Configuration File"

a veces si no se tiene permisos de escritura hay que modificarlo asi

sudo chmod 755 /etc/php/7.1/cli/php.ini

sublime3 psr2 plugin

1) Ctrl+shift+p

y buscamos "instALL PACKAGE"

2) luego buscamos "codeFormatter" le damos enter para que se instale

3) vamos a

preferences->package settings->Codeformatter->Settings default

y editar la variable

  "php_path": "",

con la ruta donde se tiene instalado el php.exe

esto se puede averiguar tipeando en consola

whereis php

en mi caso es /usr/bin/php7.1

quedaria 

  "php_path": "/usr/bin/php7.1",

listo!

4) como usarlo?  

abrir el archivo que quieras formatear 

ctrl+shift+p

tipear "format code" y enter 


(para archivos php esta por default seteado para que lo formatee en psr-2)

linux ubuntu mint actualizar chrome

 desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable