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 fileSenin, 16 Mei 2022
Error tidak bisa upload file livewire 2.0 dan laravel 8.0 pada mode https
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 :
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
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
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...
Kamis, 16 September 2021
Menggabungkan 2 Database Dalam satu view dan controller di laravel 8
Konsep microservices yang lagi booming akhir-akhir ini membuat paradigma baru dalam dunia desain sistem informasi. Konsep aplikasi monolite yaitu membangangun satu aplikasi yang besar dan terintegrasi dari awal hingga akhir yaitu proses akuntansi rupanya mulai mengalami penurunan dalam penggunaannya. Berikut kekurangan dalam arsitektur monolite
a. Sulit memahami kode pemrograman saat maintenance.
b. Perubahan aplikasi sangat riskan, karena bila terjadi error aplikasi akan berhenti semuanya.
c. Penambahan teknologi terbaru akan lebih rumit karena seluruh aplikasi harus di rewrite
d. Sulit mengidentifikasi bagian mana yang membuat aplikasi berat.
Dan masih banyak lagi kelemahan dalam aplikasi monolite.
Akan tetapi konsep microservices zaman ini yang dalam menghubungkan antar aplikasi menggunakan API maupun Message Broker tentunya akan membuat lebih panjang waktu dalam development aplikasi. Tentunya hal ini membuat seorang fullstack developer kewalahan apabila konsep API maupun Message Broker di lakukan.
Dalam mengatasi masalah-malah ini menurut saya laravel lah jawabannya. Karena dalam laravel bisa menggabungkan 2 Database dengan lokasi berbeda sekalipun. Pada laravel sebelumnya, yaitu laravel 7 menggabungkan Database harus dalam lokasi yang sama. Akan tetapi pada laravel 8 hal tersebut bisa di lakukan.
Pada kasus kali ini saya akan mencoba untuk menjelaskan cara membuat sebuah view yang dimana database user dan database post terpisah.
Untuk setting nya mari kita membuat settingan pada file config->database.php
'mysql_USER' => [
'driver' => env('DB_CONNECTION_USER'),
'host' => env('DB_HOST_USER', '127.0.0.1'),
'port' => env('DB_PORT_USER', '3306'),
'database' => env('DB_DATABASE_USER', 'forge'),
'username' => env('DB_USERNAME_USER', 'forge'),
'password' => env('DB_PASSWORD_USER', ''),
'unix_socket' => '',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => [
\PDO::ATTR_EMULATE_PREPARES => true
]
],
'mysql_POST' => [
'driver' => env('DB_CONNECTION_POST'),
'host' => env('DB_HOST_POST', '127.0.0.1'),
'port' => env('DB_PORT_POST', '3306'),
'database' => env('DB_DATABASE_POST', 'forge'),
'username' => env('DB_USERNAME_POST', 'forge'),
'password' => env('DB_PASSWORD_POST', ''),
'unix_socket' => '',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'prefix_indexes' => true,
'strict' => true,
'engine' => null,
'options' => [
\PDO::ATTR_EMULATE_PREPARES => true
]
],
Dalam settingan di atas kita mendefinisikan database user dan database post.
Kemudian kita setting pada env file kita menambahkan seperti ini
DB_CONNECTION_USER=mysql
DB_HOST_USER=192.168.2.12
DB_PORT_USER=3306
DB_DATABASE_USER=db_user
DB_USERNAME_USER=user_app
DB_PASSWORD_USER=xxxxxxx
DB_CONNECTION_POST=mysql
DB_HOST_POST=192.168.2.14
DB_PORT_POST=3306
DB_DATABASE_POST=db_post
DB_USERNAME_POST=post_user
DB_PASSWORD_POST=xxxx
Terlihat ke dua settingan tersebut berada pada lokasi berbeda dan ini bisa dilakukan.
Sekarang tambahkan settinga connection pada model user code " protected $connection = 'mysql_USER'; " seperti dibawah ini
class User extends Authenticatable
{
use HasFactory, Notifiable, HasRoles;
protected $connection = 'mysql_USER';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name',
'image',
'email',
'password',
'lokasi_id',
'efaktur_area_id',
];
}
Begitu juga pada model post kita setting koneksinya "protected $connection = 'mysql_POST';"
use App\Models\User;
class Post extends Model
{
protected $guarded = [];
protected $connection = 'mysql_POST';
public function user()
{
return $this->belongsTo(User::class);
}
Sehingga dalam controller kita bisa menampilkan data misal seperti ini
$p = Post::find(1);
dd($p->user->name);
Jika berhasi maka var dump dari nama user dalam tabel post tersebut.
Yes ternyata tabel POST bisa berelasi dengan Tabel User walaupun berbeda lokasi database. Dengan seperti ini kita bisa membuat aplikasi kecil-kecil tetapi user mendaftarkan satu akun dan tersimpan pada database user.
Kelebihan konsep ini adalah aplikasi dengan terpisah-pisah bisa kita masukkan ke dalam Docker Container sehinggal kita bisa memantau trafficnya. Dan bila ada salah satu aplikasi bikin lemot maka aplikasi yang lain tidak tergangu.
