بِسْمِ اللَّهِ Mudah-mudahan tutorial Codeigniter 4 – Myth:Auth Bagian 2 Manajemen User (Tambah User) ini bermanfaat
Library Myth:Auth menyediakan layanan user diantaranya registrasi, aktivasi, reset password, grup berikut pengaturan role, dan lain-lain. Dimana layanan ini semua sudah disediakan secara interaktif tanpa harus ada campur tangan administrator website/aplikasi. Tapi dengan library ini memungkinkan untuk layanan tersebut dilakukan secara manual dalam hal ini administrator.
Untuk tambah user sebenarnya sudah disediakan registrasi, tapi tidak menutup kemungkinan ini kita otak-atik sedimikian rupa sehingga bisa menjadi fungsi tambah user. Saya disini hanya memanfaatkan coding yang sudah ada, yaitu mengambil dari fungsi register() dan attemptRegister(). Dengan sedikit perubahan tentunya.
Persiapan Codeigniter 4 – Myth:Auth Bagian 2 Manajemen User (Tambah User)
Untuk bisa melanjutkan pastikan sudah ada ini:
Editor yang digunakan adalah Visual Studio Code
Project Codeigniter dengan library Myth:Auth didalamnya, tutorialnya bisa dilihat Codeigniter 4 Login multiuser dengan library Myth:Auth
Bagi yang sudah Codeigniter 4 – Merubah tampilan Myth:Auth
Sudah mengerjakan Codeigniter 4 – Myth:Auth Bagian 1 groups dan permissions
Pertama
Buka controller Users (\app\Controllers\Users.php) kemudian tambahkan entity User, GroupModel dan config Auth pada awal script setelah namespace. Scriptnya sebagai berikut:
use \Myth\Auth\Entities\User;
use \Myth\Auth\Authorization\GroupModel;
use \Myth\Auth\Config\Auth as AuthConfig;
Kemudian kenalkan (dengan cara membuat fungsi __construct) script diatas agar bisa digunakan/dipanggil untuk coding
protected $auth;
protected $config;
public function __construct()
{
$this->config = config('Auth');
$this->auth = service('authentication');
}
Selanjutnya buat fungsi add() untuk memanggil form/view add. Scriptnya sebagai berikut:
public function add()
{
$data = [
'title' => 'Add Users',
'config' => $this->config,
];
return view('users/add', $data);
}
Kemudian buat juga fungsi save() untuk menyimpan data. Scriptnya sebagai berikut:
public function save()
{
$users = model(UserModel::class);
$rules = [
'username' => 'required|alpha_numeric_space|min_length[3]|max_length[30]|is_unique[users.username]',
'email' => 'required|valid_email|is_unique[users.email]',
];
if (! $this->validate($rules))
{
return redirect()->back()->withInput()->with('errors', $this->validator->getErrors());
}
$rules = [
'password' => 'required|strong_password',
'pass_confirm' => 'required|matches[password]',
];
if (! $this->validate($rules))
{
return redirect()->back()->withInput()->with('errors', $this->validator->getErrors());
}
// Save the user
$allowedPostFields = array_merge(['password'], $this->config->validFields, $this->config->personalFields);
$user = new User($this->request->getPost($allowedPostFields));
$this->config->requireActivation === null ? $user->activate() : $user->generateActivateHash();
// Ensure default group gets assigned if set
if (! empty($this->config->defaultUserGroup)) {
$users = $users->withGroup($this->config->defaultUserGroup);
}
if (! $users->save($user))
{
return redirect()->back()->withInput()->with('errors', $users->errors());
}
if ($this->config->requireActivation !== null)
{
$activator = service('activator');
$sent = $activator->send($user);
if (! $sent)
{
return redirect()->back()->withInput()->with('error', $activator->error() ?? lang('Auth.unknownError'));
}
// Success!
return redirect()->to(base_url('/users/index'));
}
// Success!
return redirect()->to(base_url('/users/index'));
}
Kedua
Tambahkan view add (\app\Views\users\add.php) dan scriptnya sebagai berikut:
<?= $this->extend('template/index') ?>
<?= $this->section('page-content') ?>
<div class="text-center">
<h1 class="h4 text-gray-900 mb-4"><?= $title ?></h1>
</div>
<?= view('\Myth\Auth\Views\_message_block') ?>
<form action="<?= base_url(); ?>/users/save" class="user" method="post">
<?= csrf_field() ?>
<div class="form-group row">
<div class="col-sm-12">
<input type="email" class="form-control form-control-user <?php if(session('errors.email')) : ?>is-invalid<?php endif ?>"
name="email" aria-describedby="emailHelp" placeholder="<?=lang('Auth.email')?>" value="<?= old('email') ?>">
</div>
</div>
<div class="form-group row">
<div class="col-sm-12">
<input type="text" class="form-control form-control-user <?php if(session('errors.username')) : ?>is-invalid<?php endif ?>" name="username" placeholder="<?=lang('Auth.username')?>" value="<?= old('username') ?>">
</div>
</div>
<div class="form-group row">
<div class="col-sm-6 mb-3 mb-sm-0">
<input type="password" name="password" class="form-control form-control-user <?php if(session('errors.password')) : ?>is-invalid<?php endif ?>" placeholder="<?=lang('Auth.password')?>" autocomplete="off">
</div>
<div class="col-sm-6">
<input type="password" name="pass_confirm" class="form-control form-control-user <?php if(session('errors.pass_confirm')) : ?>is-invalid<?php endif ?>" placeholder="<?=lang('Auth.repeatPassword')?>" autocomplete="off">
</div>
</div>
<br>
<button type="submit" class="btn btn-primary btn-user btn-block">Simpan</button>
</form>
<?= $this->endSection() ?>
Tampilan form add seperti ini:
Untuk memanggil atau menampilkan form add, bisa ditambahkan link tambah setelah link Daftar/List pada template (\app\Views\template\index.php). Scriptnya sebagai berikut:
<a class="collapse-item" href="<?= base_url() ?>/users/add">Tambah</a>
Tampilan link Tambah-nya akan seperti ini
Ketiga
Yang terakhir sebagai contoh yang sudah saya kerjakan silakan buka alamat https://demo.belajardisiniaja.com/users untuk login silakan gunakan user dengan role adminstrator berikut:
Username : user01
Password : AEHqfe3F4z@Zwes
Tampilan Daftar/List Users sebagai berikut:
Kemudian klik link Tambah (Users)
Demikian tutorial Codeigniter 4 – Myth:Auth Bagian 2 Manajemen User (Tambah User). Silakan dilanjutkan dan dikembangkan lagi.
Mudah-mudahan tutorial ini bermanfaat.
Keren bang, tapi saya masih bigung dengan penjelasannya. bikin vidionya dong
Maaf.. Belum sempat…
You ought to take part in a contest for one of the best websites on the net. I am going to highly recommend this website!
Bang kalo semisal passwordnya mau dibikin default 123, jadi nanti usernya bakal ubah password nya sendiri. Gimana bang?
Caranya paling gampang hardcode saja di isian password dan confirm, trus disabled isian tersebut. xixixixi… Maaf.. Saya sudah cari di myth-auth nya belum ketemu.
untuk tutorial menampilkan list data usernya mana ya kak, soalnya kan ini data usernya mengambil dari table myth/auth
Coba liat disini, pada bagian Kedua. Pada controller Users disana ada function index untuk menampilkan list user. Silakan dicoba. Semoga bisa membantu..