Rabu, 02 November 2022

Cara Membaca QR Code dari gambar yg di upload ke server Laravel dengan OS Ubuntu

 Berhubung menggunakan PHP Laravel Barcode Qr Code Reader punya dynamo soft berbayar,, maka untuk cari yg gratisan saya menggunakan PHPZxingDecoder.

Karena PHPZxingDecoder menggunakan java jadi kita install dulu java-nya ...

sudo apt-get update

Kemudian install java-nya

sudo apt install default-jdk

Kemudian cek apakah javanya sudah diinstall

java -version

Untuk cek path javanya

update-alternatives --config java

Kemudian edit file environment

sudo nano /etc/environment

Tambahkan pathnya seperti ini

JAVA_HOME="/lib/jvm/java-11-openjdk-amd64/bin/java"

Kemudian reload java-nya

source /etc/environment

Cek path java environmentnya nya apakah sudah sesuai

echo $JAVA_HOME
/lib/jvm/java-11-openjdk-amd64/bin/java

Kemudian cek path javanya agar bisa di config kan ke phpzxingnya.

which java

Dan dibawahnya dari command diatas akan muncul pathnya utk di config di phpzxing jika tidak sesuai.

----------------------------------------------------------------------------------------------------------------------

Okkay instalasi java sudah selesai, setelah itu kita tambahkan pada laravel untuk js PHPZxing nya melalui composer

composer require dsiddharth2/php-zxing


Selasa, 24 Mei 2022

Cara Copy dan Cut File Linux Ubuntu

Untuk copy file misal semua di dalam folde var/www/testing akan dipindah ke dalam folder var/www/coba, dimana folder coba masih belum di buat maka caranya adalah :

cp -a /var/www/testing/ /var/www/coba/
maka di dalam folder var/www yang sebelumnya tidak ada folder coba akan otomatis terbuat folder coba.

Note -a jika yg dicopy beserta foldernya

Sedangkan untuk cut file misal di dalam cut semua file dan folder didalamnya yang folder var/www/testing/coba/ akan dipindahkan ke folder var/www/testing/ maka caranya adalah :

masuk kedalam folder var/www/testing/coba dg cara

cd /var/www/testing/coba

kemudian utk cut-nya adalah :

 mv * /var/www/testing/

tapi sayangnya apabila dalam folder var/www/testing/coba terdapat file yg diawali dengan tanda titik (.) misal .htaccess maka file tersebut tidak di pindahkan. So pindahkan manual ya...
Mungkin bila ada cara file tersebut juga ikut di pindahkan tolong comment di bawah ya..

Terima Kasih.

Senin, 16 Mei 2022

Error tidak bisa upload file livewire 2.0 dan laravel 8.0 pada mode https

Pada livewire laravel saat upload pada mode http tidak ada masalah, tapi saat menggunakan https ada masalah dan setelah saya console log muncul seperti ini :

Untuk mengatasinya buka file 
vendor/livewire/livewire/src/Controllers/FileUploadHandler.php

di function handle uncomment atau hapus baris berikut :
abort_unless(request()->hasValidSignature(), 401)



Kemudian Simpan dan coba lagi

Sabtu, 19 Februari 2022

Cara agar user non aktif tidak bisa login ke Laravel UI 8

 Menggunakan Laravel UI tentunya telah dibuatkan yang istilahnya scafolding nya, yaitu dibuatkan route, model, controller views dan database-nya, Sekarang gimana ya cara kita bisa memodifikasi scafolding tersebut biar misal user tersebut non aktif dan tidak bisa login..

Caranya buka trait AuthenticatesUsers yg lokasi nya di :

    vendor/laravel/ui/auth-backend/AuthenticatesUsers.php

Atau dengan kalau di visual studi code anda diinstall plugin laravel tinggal ctrl klik aja AuthenticatesUsers di login controller terus langsung deh menuju lokasi file -nya

Dia asumsikan dalam database ditambahi field "is_active" maka kita cukup tambahkan script berikut

         $user = User::where('email', $request->email)->first();

        if ($user && $user->is_active == 0) {

            abort(403, 'Your account has been disabled by an administrator.');

        }

yang saya letakkan disini :

 public function login(Request $request)
    {

        $this->validateLogin($request);

        // If the class is using the ThrottlesLogins trait, we can automatically throttle
        // the login attempts for this application. We'll key this by the username and
        // the IP address of the client making these requests into this application.
        if (
            method_exists($this, 'hasTooManyLoginAttempts') &&
            $this->hasTooManyLoginAttempts($request)
        ) {
            $this->fireLockoutEvent($request);

            return $this->sendLockoutResponse($request);
        }

        // Check if user is active
        $user = User::where('email', $request->email)->first();
        if ($user && $user->is_active == 0) {
            abort(403, 'Your account has been disabled by an administrator.');
        }

        if ($this->attemptLogin($request)) {
            if ($request->hasSession()) {
                $request->session()->put('auth.password_confirmed_at', time());
            }

            return $this->sendLoginResponse($request);
        }

        // If the login attempt was unsuccessful we will increment the number of attempts
        // to login and redirect the user back to the login form. Of course, when this
        // user surpasses their maximum number of attempts they will get locked out.
        $this->incrementLoginAttempts($request);

        return $this->sendFailedLoginResponse($request);
    }

And jangan lupa import model User supaya jika database user ada di database lain bisa konek,, tapi kalau cuman ada 1 database sih gk perlu import model user...

Rabu, 02 Februari 2022

Mengubah nama tabel default spatie di laravel 8

 Jadi ceritanya gini, awalnya aku sudah buat aplikasi di kantor menggunakan laravel, dan manajemen user role & permissionya menggunakan spatie. Di awal emang untuk usernya menggunakan email & password. Kemudian setelah sekian lama terbentuk database karyawan, sehingga perlu merubah yang awalnya usernya menggunakan email, kemudian dirubah menjadi password, sedangkan sudah banyak permisson & role yang sudah aku buat. Jadi yang perlu dirubah adalah cuman tabel user, model_has_role, dan model_has_permission. Pertanyaanya dimana ya cara merubah nama tabelnya ?

Untuk tabel user mudah sekali ditemukan kita cukup pergi ke model user kemudian tambahkan protected tabelnya

class User extends Authenticatable
{
    use HasFactory, Notifiable, HasRoles, HasPermissions;
    protected $table = 'user2s';
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name',
        'image',
        'email',
        'password',

Contoh di atas misal nama tabel yg sebelumnya adalah user, saya rubah menjadi user2s

Kemudian untuk settingan yang 2 tabel lainnya ada di folder config->permission

  'permissions' => 'permissions',

        /*
         * When using the "HasPermissions" trait from this package, we need to know which
         * table should be used to retrieve your models permissions. We have chosen a
         * basic default value but you may easily change it to any table you like.
         */

        'model_has_permissions' => 'model_has_permission2s',

        /*
         * When using the "HasRoles" trait from this package, we need to know which
         * table should be used to retrieve your models roles. We have chosen a
         * basic default value but you may easily change it to any table you like.
         */

        'model_has_roles' => 'model_has_role2s',

        /*
         * When using the "HasRoles" trait from this package, we need to know which
         * table should be used to retrieve your roles permissions. We have chosen a
         * basic default value but you may easily change it to any table you like.
         */

        'role_has_permissions' => 'role_has_permissions',

terlihat aku hanya merubah nama tabel model_has_permission dan model_has_role,, jadi ak gak perlu repot-repot setting role dan permission baru.

Setting Time Zone Mysql di PHP myadmin untuk Indonesia

 Sebenernya banyak cara untuk setting time zone mysql, supaya saat tanggal di set current date time itu bisa sesuai dengan jam di indonesia.

Cara pertama menggunakan konfigurasi my.cnf

setting seperti ini

[client-server]


# Import all .cnf files from configuration directory

!includedir /etc/mysql/conf.d/

!includedir /etc/mysql/mariadb.conf.d/

default-time-zone = "+07:00"


Cara ke dua menggunakan variabel session

Dan cara yang menurut saya paling cepat yaitu menggunakan script sql, berikut ini caranya :

SET GLOBAL time_zone = '+07:00';
SET GLOBAL time_zone = 'Asia/Jakarta';
SET @@global.time_zone='+07:00';


Selasa, 18 Januari 2022

Cara backup database otomatis mysql docker

 Karena judulnya docker so pertama kita install dulu mysql di docker

1. Ambil image msql docker

    docker pull mariadb

2. Ambil image phpmyadmin docker

    docker pull phpmyadmin/phpmyadmin

3. Buat container untuk database

    Format :

    docker run --name=[container_name] -e MYSQL_ROOT_PASSWORD=[yourpassword] -e MYSQL_DATABASE=[database_name] -p 3306:3306 -d mariadb

    Contoh :

    docker run --name=dbpenjualan -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=penjualan -p 3306:3306 -d mariadb

4. Buat container untuk phpmyadmin

    Format :

    docker run --name [container_name]-d --link [mariadb_container_name]:db -p 8080:80 phpmyadmin/phpmyadmin

    Contoh :

    docker run --name phpMypenjualan -d --link dbpenjualan:db -p 8080:80 -e UPLOAD_LIMIT=300M phpmyadmin/phpmyadmin


    Tapi jika container database dan container phpmyadmin berbeda host maka perlu ditambahkan seperti ini :

    
    docker run --name phpmyxxxx -d -e PMA_HOST=192.168.x.x -p 60000:80 -e UPLOAD_LIMIT=900M phpmyadmin/phpmyadmin

    Contoh diatas dengan asumsi default port databasenya 3306 dan untuk phpmyadminnya di akses dengan port 60000

5. Testing phpmyadminnya dengan ip local:8080

    Kalau berhasil Alhamdulillah..

6. Buat Shell untuk backup-nya

    nano backup.sh

    kemudian isikan :

    
user=root pass=123456 host=192.168.2.10 dir=/home/ubuntu/backupdb backup(){ date=$(date +%Y%m%d-%H%M) tanggal=$(date +%d) bulan=$(date +%m) tahun=$(date +%Y) if [ ! -d "$dir/$tahun/$bulan/$tanggal/" ]; then mkdir --parents $dir/$tahun/$bulan/$tanggal; fi mysqldump -h -u$user -p$pass pembelian -h$host --routines | gzip > $dir/$tahun/$bulan/$tanggal/pembelian-$date.sql.gzip # gzip -f $dir/$tahun/$bulan/$tanggal/$dbs-$date.sql } backup exit 0

    Kemudian simpan

7. Tambahkan akses eksekusi ke file tersebut

    chmod +x backup.sh

8. test backup tersebut dg

    ./backup.sh

9. Kalau berhasil kita bikin schedul dengan crontab dengan install         crontab nya  

    sudo apt-get install cron

    
    Melihat aktifitas crontab     sudo crontab -l

10. Membuat schedule  

    sudo crontab -e

    Isikan dengan format ini

# |---------------- menit ke  (0 - 59)

# |  .------------- jam ke    (0 - 23)

# |  |  .---------- tanggal   (1 - 31)

# |  |  |  .------- bulan     (1 - 12)

# |  |  |  |  .---- hari ke, dalam pekan (0 - 6) (Minggu=0 or 7)

# |  |  |  |  |

# *  *  *  *  *  command.sh

    
Contoh, saya ingin menjalankan auto backup tiap jam 01.01 malam, maka saya akan mengisikan sebagai berikut

    
1 1 * * * /home/backup/backup.sh


Selesai....

Minggu, 09 Januari 2022

Cara Port Forwarding di Windows

 Kasusnya kali ini adalah, port mysql kadang di block oleh provider,, sehingga port 3306 harus di alihkan ke port lain. 

Masalahnya pada database tersebut terdapat beberapa aplikasi,, sehingga di mysql harus tetap 3306 sedangkan yg masalah hanya 1 aplikasi saja yg di akses dari luar kantor. 

Sebenernya simple sih di mikortik tinggal forward aja dari port misal 1111 ke port 3306, mslahnya kalau di dalam kantor kan gak ngelewati mikrotik. Jadi harus forward portnya di komputer database itu sendiri..

Okkay berikut caranya pertama bukan comman terminal menggunakan admin

Untuk membuat port forwarding :

netsh interface portproxy add v4tov4 listenport=1111 listenaddress=0.0.0.0 connectport=3306 connectaddress=192.168.x.x

Untuk menampilkan semua port forwarding yang sudah dibuat :

netsh interface portproxy show all


Untuk menghapus semua port forwarding yg sudah dibuat :

netsh interface portproxy reset


Untuk penghapus salah satu port forwarding :

netsh interface portproxy delete v4tov4 listenport=1111 listenaddress=192.168.x.x


Okkay sekian tulisan saya...