Senin, 07 Desember 2020

ngrok

 Download ngrok di sini

ekstrak ngrok.zip

./ngrok authtoken 1lMUILIPXIg1YTdiUJPoCh1xfpU_5eiwWw1uGatsmGcpjdsRm
./ngrok help
./ngrok http 8000
 

Laravel 8 Jwt-Auth

  • laravel new jwt
  • cd jwt
  • composer require tymon/jwt-auth
  • php artisan vendor:publish
  • pilih yang = Tymon\JWTAuth\Providers\LaravelServiceProvider
  • php artisan jwt:secret
  •  
  • edit file app/models/user.php
  • <?php

    namespace App\Models;

    use Illuminate\Contracts\Auth\MustVerifyEmail;
    use Illuminate\Database\Eloquent\Factories\HasFactory;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    use Illuminate\Notifications\Notifiable;

    class User extends Authenticatable
    {
    use HasFactory, Notifiable;

    protected $fillable = [
    'name',
    'email',
    'password',
    ];

    protected $hidden = [
    'password',
    'remember_token',
    ];

    protected $casts = [
    'email_verified_at' => 'datetime',
    ];
    }


     menjadi
  • <?php

    namespace App\Models;

    use Illuminate\Contracts\Auth\MustVerifyEmail;
    use Illuminate\Database\Eloquent\Factories\HasFactory;
    use Illuminate\Foundation\Auth\User as Authenticatable;
    use Illuminate\Notifications\Notifiable;

    use Tymon\JWTAuth\Contracts\JWTSubject;
    class User extends Authenticatable implements JWTSubject
    {
    use HasFactory, Notifiable;

    protected $fillable = [
    'name',
    'email',
    'password',
    ];

    protected $hidden = [
    'password',
    'remember_token',
    ];

    protected $casts = [
    'email_verified_at' => 'datetime',
    ];

    public function getJWTIdentifier()
    {
    return $this->getKey();
    }

    public function getJWTCustomClaims()
    {
    return [];
    }
    }


     
  • php artisan make:controller  Api/Auth/LoginController -i
  •  ubah file app/Http/Controllers/Api/Auth/LoginController.php
  • <?php

    namespace App\Http\Controllers\Auth;

    use App\Http\Controllers\Controller;
    use Illuminate\Http\Request;

    class LoginController extends Controller
    {
    /**
    * Handle the incoming request.
    *
    * @param \Illuminate\Http\Request $request
    * @return \Illuminate\Http\Response
    */
    public function __invoke(Request $request)
    {
    //
    }
    }


     menjadi
  •  
    <?php

    namespace App\Http\Controllers\Auth;

    use App\Http\Controllers\Controller;
    use Illuminate\Http\Request;

    class LoginController extends Controller
    {
    public function __invoke(Request $request)
    {
    $request->validate([
    'email' => 'required',
    'password' => 'required'
    ]);
    $credentials = request(['email', 'password']);
    if (!$token = auth('api')->attempt($credentials)) {
    return response()->json([
    'status' => '0',
    'data' => 'login',
    'result' => [
    'message' => 'Phone atau Password Salah',
    ]
    ], 401);
    }
    $data = [
    'status' => '1',
    'data' => 'login',
    'result' => [
    'token' => $token
    ]
    ];
    return response()->json($data,200);
    }
    }


 

tambah route di api.php


Route::post('login','Api/Auth/LoginController');

 mengedit app/config/auth.php

'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],

'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
],

 menjadi

'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],

'api' => [
'driver' => 'jwt',
'provider' => 'users',
'hash' => false,
],
],

cek postman

localhost:8000/api/Login

localhost:8000/api/users

 

Selasa, 01 Desember 2020

DATA TABLES YAJRA

 https://fahmidasclassroom.com/laravel-7-crud-using-datatables/


1. Install yajra datatables

$ composer require yajra/laravel-datatables-oracle:"~9.0"

2. Daftarkan provider dan facade pada file "config/app.php"

'providers'    =>    [
 ....,
 Yajra\DataTables\DataTablesServiceProvider::class,
]
'aliases'        =>    [
'DataTables'    =>    Yajra\DataTables\Facades\DataTables::class,
]

3. Publish Vendor

$ php artisan vendor:publish --provider="Yajra\DataTables\DataTablesServiceProvider" 

4. Buat Model & Migration

$ php artisan make:model Product -m 

 edit file "app\database\migrations\2020_12_24_204248_create_banners_table.php"

    Schema::create('banners', function (Blueprint $table) {
        $table->id();
       //addcode
        $table->string('title');
        $table->text('img');
        $table->boolean('status');
        //encode
        $table->timestamps();
    });

edit file "app\Models\Product.php

    <?php
    namespace App\Models;
    use Illuminate\Database\Eloquent\Factories\HasFactory;
    use Illuminate\Database\Eloquent\Model;

    class Banner extends Model
    {
    use HasFactory;
    protected $fillable = [
    'title',
    'img',
    'status'
    ];
    }

4. Buat Controller

$ php artisan make:controller UserController -r 

5. Buka UserController di folder "app/Http/Controllers" edit code menjadi seperti di bawah.

    

    <?php
    namespace App\Http\Controllers;
    use Illuminate\Http\Request;
    //addcode
    use App\Models\User;
    use DataTables;
    use Redirect,Response;
    //endcode
    class UserController extends Controller
    {
    public function index()
    {
            //addcode
if ($request->ajax()) {
$data = User::latest()->get();
return Datatables::of($data)
->addIndexColumn()
->addColumn('action', function($row){
$action =
            '<a class="btn btn-info" id="show-user" data-toggle="modal" data-id='.$row->id.'>Show</a>
<a class="btn btn-success" id="edit-user" data-toggle="modal" data-id='.$row->id.'>Edit </a>
<meta name="csrf-token" content="{{ csrf_token() }}">
<a id="delete-user" data-id='.$row->id.' class="btn btn-danger delete-user">Delete</a>';
return $action;
})
->rawColumns(['action'])
->make(true);
}
return view('users');
            //endcode  
    }

    public function create()
    {
            //addcode
     return view('menu.banner.create');
            //endcode
    }

     public function store(Request $request)
    {
    //addcode
    $request->validate([
    'title' => 'required',
    'img' => 'required'
    ]);
            $imgName = $request->title.time()."_".$request->file('img')->GetClientOriginalName();
Banner::create([
    'img' => $imgName,
    'title' => $request->title,
    'status' => $request->status
    ]);
    $msg = 'Data Berhasil Di Tambahkan';
    return redirect()->route('banner.index')->with('success',$msg);
    }


public function show($id)
{
//
}

public function edit($id)
{
//
}

public function update(Request $request, $id)
{
//
}

public function destroy($id)
{
//
}
}

 

flutter firebase notification