Source Code Autentikasi Lengkap
Untuk membuat sebuah sistem informasi baik di java PHP atau bahasa pemograman yang lain perlu memiliki autentikasi yang baik dan memiliki banyak kondisi. Sebelum membuat autentikasi ada baiknya kita ketahui terlebih dahulu apa itu Autentikasi. Autentikasi adalah suatu langkah untuk menentukan atau mengonfirmasi bahwa seseorang atau user adalah autentik atau asli hal ini berguna agar sistem yang dibangun memiliki keamanan yang cukup baik.
Baiklah disini source code autentikasi yang akan di bagi menggunakan framework Phalcon yang terdapat didalam sistem informasi untuk tugas IMK yang saya buat sendiri. disini terdapat lumayan banyak kondsi yang saya buat. source code yang akan dibagikan yaitu controller dan view nya. bagi kalian yang menggunakan framework lain bisa menggunakan source code ini sebagai referensi kemudian dirubah sesuai standar framework yang digunakan.
Berikut source code yang akan dibuat :
1. Login View
<?php
/**
* Created by PhpStorm.
* User: SarliZona
* Date: 9/27/2018
* Time: 14:37
*/?>
<div class="account-pages"></div>
<div class="clearfix"></div>
<div class="wrapper-page">
<div class="m-t-40 card-box">
<div class="text-center">
<a href="<?= $this->url->get('') ?>" methods="post" class="logo"><span>Audit Mutu Internal<span> </span></span></a>
<h5 class="text-muted m-t-0 font-600">UIN SUSKA RIAU</h5>
</div>
<div class="text-center">
<h4 class="text font-bold m-b-0">Assalamu'alaikum Wr Wb</h4>
<h4><?php $this->flashSession->output() ?></h4>
</div>
<div class="p-10">
<form class="form-horizontal m-t-20" action="<?= $this->url->get('auth/loginproses') ?>" method="post">
<div class="form-group">
<div class="col-xs-12">
<input class="form-control" type="text" placeholder="Username" name="uid">
</div>
</div>
<div class="form-group">
<div class="col-xs-12">
<input class="form-control" type="password" placeholder="Password" name="password">
</div>
</div>
<div class="form-group text-center m-t-30">
<div class="col-xs-12">
<button class="btn btn-custom btn-bordred btn-block waves-effect waves-light" type="submit">Masuk</button>
</div>
</div>
<div class="form-group m-t-30 m-b-0">
<div class="col-sm-12">
<a href="<?= $this->url->get('lupa')?>" class="text-primary"><i class="fa fa-lock m-r-5"></i> Lupa Password?</a>
</div>
</div>
</form>
</div>
<div style="font-size: 11px; color: #727b84;">
© <?= date('Y') ?> USR by Mahasiswa Teknik Informatika 2015 <br> Sarli Zona
</div>
</div>
<!-- end card-box-->
<div class="row">
<div class="col-sm-12 text-center">
<p style="color:black">Belum Punya Akun? <a href="<?= $this->url->get('daftar') ?>"
class="text-primary m-l-5"><b>Daftar</b></a></p>
</div>
</div>
</div>
</div>
<!-- end wrapper page -->
/**
* Created by PhpStorm.
* User: SarliZona
* Date: 9/27/2018
* Time: 14:37
*/?>
<div class="account-pages"></div>
<div class="clearfix"></div>
<div class="wrapper-page">
<div class="m-t-40 card-box">
<div class="text-center">
<a href="<?= $this->url->get('') ?>" methods="post" class="logo"><span>Audit Mutu Internal<span> </span></span></a>
<h5 class="text-muted m-t-0 font-600">UIN SUSKA RIAU</h5>
</div>
<div class="text-center">
<h4 class="text font-bold m-b-0">Assalamu'alaikum Wr Wb</h4>
<h4><?php $this->flashSession->output() ?></h4>
</div>
<div class="p-10">
<form class="form-horizontal m-t-20" action="<?= $this->url->get('auth/loginproses') ?>" method="post">
<div class="form-group">
<div class="col-xs-12">
<input class="form-control" type="text" placeholder="Username" name="uid">
</div>
</div>
<div class="form-group">
<div class="col-xs-12">
<input class="form-control" type="password" placeholder="Password" name="password">
</div>
</div>
<div class="form-group text-center m-t-30">
<div class="col-xs-12">
<button class="btn btn-custom btn-bordred btn-block waves-effect waves-light" type="submit">Masuk</button>
</div>
</div>
<div class="form-group m-t-30 m-b-0">
<div class="col-sm-12">
<a href="<?= $this->url->get('lupa')?>" class="text-primary"><i class="fa fa-lock m-r-5"></i> Lupa Password?</a>
</div>
</div>
</form>
</div>
<div style="font-size: 11px; color: #727b84;">
© <?= date('Y') ?> USR by Mahasiswa Teknik Informatika 2015 <br> Sarli Zona
</div>
</div>
<!-- end card-box-->
<div class="row">
<div class="col-sm-12 text-center">
<p style="color:black">Belum Punya Akun? <a href="<?= $this->url->get('daftar') ?>"
class="text-primary m-l-5"><b>Daftar</b></a></p>
</div>
</div>
</div>
</div>
<!-- end wrapper page -->
2. Lupa Password View
<?php
/**
* Created by PhpStorm.
* User: SarliZona
* Date: 10/11/2018
* Time: 22:36
*/
?>
<div class="account-pages"></div>
<div class="clearfix"></div>
<div class="wrapper-page">
<div class="m-t-40 card-box">
<div class="text-center">
<h5 class="text-muted m-t-0 font-600">UIN SUSKA RIAU</h5>
</div>
<div class="text-center">
<h4 class="text font-bold m-b-0">Lupa Password</h4>
<p><?php $this->flashSession->output() ?></p>
</div>
<div class="panel-body">
<form class="form-horizontal m-t-20" action="" method="post">
<div class="form-group">
<div class="col-xs-12">
<input class="form-control" type="text" placeholder="Username" name="uid" required>
</div>
</div>
<div class="form-group text-center m-t-40">
<div class="col-xs-12">
<button class="btn btn-custom btn-bordred btn-block waves-effect waves-light" type="submit">
Reset
</button>
</div>
</div>
</form>
</div>
</div>
</div>
<!-- end wrapper page -->
/**
* Created by PhpStorm.
* User: SarliZona
* Date: 10/11/2018
* Time: 22:36
*/
?>
<div class="account-pages"></div>
<div class="clearfix"></div>
<div class="wrapper-page">
<div class="m-t-40 card-box">
<div class="text-center">
<h5 class="text-muted m-t-0 font-600">UIN SUSKA RIAU</h5>
</div>
<div class="text-center">
<h4 class="text font-bold m-b-0">Lupa Password</h4>
<p><?php $this->flashSession->output() ?></p>
</div>
<div class="panel-body">
<form class="form-horizontal m-t-20" action="" method="post">
<div class="form-group">
<div class="col-xs-12">
<input class="form-control" type="text" placeholder="Username" name="uid" required>
</div>
</div>
<div class="form-group text-center m-t-40">
<div class="col-xs-12">
<button class="btn btn-custom btn-bordred btn-block waves-effect waves-light" type="submit">
Reset
</button>
</div>
</div>
</form>
</div>
</div>
</div>
<!-- end wrapper page -->
3. Daftar View
<?php
/**
* Created by PhpStorm.
* User: ahmadfauzirahman
* Date: 24/05/18
* Time: 22:41
*/
?>
<div class="account-pages"></div>
<div class="clearfix"></div>
<div class="wrapper-page">
<div class="m-t-40 card-box">
<div class="text-center">
<h4 class="text-uppercase font-bold m-b-0">DAFTAR</h4>
<p><?php $this->flashSession->output() ?></p>
</div>
<div class="text-center">
<h5 class="text-muted m-t-0 font-600">Assalammuaaikum Wr Wb</h5>
</div>
<div class="panel-body">
<form class="form-horizontal m-t-20" action="<?= $this->url->get('daftar') ?>" method="post" id="daftar">
<div class="input-group mb-3">
<div class="input-group-prepend">
</div>
<div class="input-group-text">@</div>
<?= $form->render('uid'),
$form->messages('uid')?>
</div>
<div class="form-group ">
<div class="col-xs-12">
<?= $form->render('nama'), $form->messages('nama')?>
</div>
</div>
<div class="form-group">
<div class="col-xs-12">
<?= $form->render('email'),
$form->messages('email')?>
</div>
</div>
<div class="form-group">
<div class="col-xs-12">
<?= $form->render('password'),
$form->messages('password') ?>
</div>
</div>
<div class="form-group">
<div class="col-xs-12">
<select class="select2" name="idprodi" id="idprodi">
<?php
foreach ($idprodi as $n):
?>
<option value="<?= $n->id?>"> <?= $n->prodi?></option>
<?php
endforeach;
?>
</select>
</div>
</div>
<div class="form-group">
<div class="col-xs-12">
<select class="select2" name="jabatan" id="jabatan">
<option value="Dosen"> Dosen</option>
<option value="Sekretaris"> Sekretaris</option>
<option value="Ketua"> Ketua</option>
</select>
</div>
</div>
<div class="form-group text-center m-t-40">
<div class="col-xs-12">
<a data-target="#modaldaftar" data-toggle="modal" class="btn btn-primary btn-block"
onclick="daftar()">Daftar</a>
</div>
</div>
<div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" id="modaldaftar"
aria-labelledby="myLargeModalLabel"
aria-hidden="true" style="display: none;">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="text-center">Apakah Data Anda Sudah Benar?</h4>
</div>
<table class="table">
<tr>
<th>Nama</th> <td id="namaa"></td>
</tr>
<tr>
<th>Username</th><td id="uidd"></td>
</tr>
<tr>
<th>Email</th> <td id="emaill"></td>
</tr>
<tr>
<th>Password</th><td id="passwordd"></td>
</tr>
<tr>
<th>Prodi </th><td id="idprodii"></td>
</tr>
<tr>
<th>Jabatan di prodi</th><td id="jabatann"></td>
</tr>
</table>
<div class="modal-body">
<div class="row">
<div class="col-lg-6">
<button id="benar" class="btn btn-info btn-block">Ya,Benar</button>
</div>
<div class="col-lg-6">
<a data-dismiss="modal"
class="btn btn-inverse btn-trans btn-block waves-effect w-md waves-inverse m-b-10">Tidak</a>
</div>
</div>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
</form>
</div>
<div class="row">
<div class="col-sm-12 text-center">
<p class="text-dark">Sudah Punya Akun?<a href="<?= $this->url->get('') ?>" class="text-primary m-l-5"><b>Login</b></a>
</p>
</div>
</div>
</div>
<!-- end card-box -->
</div>
<!-- end wrapper page -->
<script type="text/javascript">
function daftar(){
$('#namaa').text($('#nama').val());
$('#uidd').text($('#uid').val());
$('#emaill').text($('#email').val());
$('#passwordd').text($('#password').val());
$('#idprodii').text($('#idprodi').val());
$('#jabatann').text($('#jabatan').val());
}
$('#benar').click(function(){
alert('submitting');
$('#daftar').submit();
});
</script>
/**
* Created by PhpStorm.
* User: ahmadfauzirahman
* Date: 24/05/18
* Time: 22:41
*/
?>
<div class="account-pages"></div>
<div class="clearfix"></div>
<div class="wrapper-page">
<div class="m-t-40 card-box">
<div class="text-center">
<h4 class="text-uppercase font-bold m-b-0">DAFTAR</h4>
<p><?php $this->flashSession->output() ?></p>
</div>
<div class="text-center">
<h5 class="text-muted m-t-0 font-600">Assalammuaaikum Wr Wb</h5>
</div>
<div class="panel-body">
<form class="form-horizontal m-t-20" action="<?= $this->url->get('daftar') ?>" method="post" id="daftar">
<div class="input-group mb-3">
<div class="input-group-prepend">
</div>
<div class="input-group-text">@</div>
<?= $form->render('uid'),
$form->messages('uid')?>
</div>
<div class="form-group ">
<div class="col-xs-12">
<?= $form->render('nama'), $form->messages('nama')?>
</div>
</div>
<div class="form-group">
<div class="col-xs-12">
<?= $form->render('email'),
$form->messages('email')?>
</div>
</div>
<div class="form-group">
<div class="col-xs-12">
<?= $form->render('password'),
$form->messages('password') ?>
</div>
</div>
<div class="form-group">
<div class="col-xs-12">
<select class="select2" name="idprodi" id="idprodi">
<?php
foreach ($idprodi as $n):
?>
<option value="<?= $n->id?>"> <?= $n->prodi?></option>
<?php
endforeach;
?>
</select>
</div>
</div>
<div class="form-group">
<div class="col-xs-12">
<select class="select2" name="jabatan" id="jabatan">
<option value="Dosen"> Dosen</option>
<option value="Sekretaris"> Sekretaris</option>
<option value="Ketua"> Ketua</option>
</select>
</div>
</div>
<div class="form-group text-center m-t-40">
<div class="col-xs-12">
<a data-target="#modaldaftar" data-toggle="modal" class="btn btn-primary btn-block"
onclick="daftar()">Daftar</a>
</div>
</div>
<div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" id="modaldaftar"
aria-labelledby="myLargeModalLabel"
aria-hidden="true" style="display: none;">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<h4 class="text-center">Apakah Data Anda Sudah Benar?</h4>
</div>
<table class="table">
<tr>
<th>Nama</th> <td id="namaa"></td>
</tr>
<tr>
<th>Username</th><td id="uidd"></td>
</tr>
<tr>
<th>Email</th> <td id="emaill"></td>
</tr>
<tr>
<th>Password</th><td id="passwordd"></td>
</tr>
<tr>
<th>Prodi </th><td id="idprodii"></td>
</tr>
<tr>
<th>Jabatan di prodi</th><td id="jabatann"></td>
</tr>
</table>
<div class="modal-body">
<div class="row">
<div class="col-lg-6">
<button id="benar" class="btn btn-info btn-block">Ya,Benar</button>
</div>
<div class="col-lg-6">
<a data-dismiss="modal"
class="btn btn-inverse btn-trans btn-block waves-effect w-md waves-inverse m-b-10">Tidak</a>
</div>
</div>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
</form>
</div>
<div class="row">
<div class="col-sm-12 text-center">
<p class="text-dark">Sudah Punya Akun?<a href="<?= $this->url->get('') ?>" class="text-primary m-l-5"><b>Login</b></a>
</p>
</div>
</div>
</div>
<!-- end card-box -->
</div>
<!-- end wrapper page -->
<script type="text/javascript">
function daftar(){
$('#namaa').text($('#nama').val());
$('#uidd').text($('#uid').val());
$('#emaill').text($('#email').val());
$('#passwordd').text($('#password').val());
$('#idprodii').text($('#idprodi').val());
$('#jabatann').text($('#jabatan').val());
}
$('#benar').click(function(){
alert('submitting');
$('#daftar').submit();
});
</script>
4. Autentikasi Controller
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 10/5/2018
* Time: 1:55 PM
*/
namespace IMK\Ami\Controllers;
use IMK\Ami\Models\DataProdi;
use Phalcon\Mvc\Controller;
use IMK\Ami\Models\DataPengguna;
use IMK\Forms\Registrasi;
use IMK\Library\Mail;
class AuthController extends Controller
{
public function initialize()
{
$ses_nip_nik= $this->session->get('uid');
if (!empty($ses_uid)) {
$this->response->redirect('');
}
$this->view->halaman = 'Login';
}
public function loginAction()
{
}
public function logoutAction()
{
$this->session->destroy();
$this->response->redirect('');
}
public function loginprosesAction()
{
$uid = $this->request->getPost('uid');
$password = $this->request->getPost('password');
$password = md5($password);
$pengguna = DataPengguna::findFirstByuid($uid);
if ($pengguna) {
if ($pengguna->konfirmasi_email == 'nonaktif') {
if (!empty($this->request->getPost('from')) == 'from') {
$this->flashSession->error('Akun Anda Tidak Aktif, Cek Email untuk konfirmasi atau hubungi admin ');
$this->response->redirect('');
} else{
$this->flashSession->error('Akun Anda Tidak Aktif, Cek Email untuk konfirmasi atau hubungi admin');
$this->response->redirect('');
}
}
elseif ($uid == $pengguna->uid && $password == $pengguna->pwd) {
$this->session->set('id', $pengguna->id);
$this->session->set('uid', $pengguna->uid);
$this->session->set('hakakses', $pengguna->hakAkses);
$this->session->set('password', $pengguna->pwd);
$this->session->set('foto', $pengguna->foto);
$this->session->set('nama', $pengguna->nama);
$this->session->set('email', $pengguna->email);
$this->session->set('idprodi', $pengguna->idProdi);
//TODO tambahan redirect sesuai asal login dan tambahan simpan session login
$this->session->set('user', $pengguna);
if (!empty($this->request->getPost('from_monitoring')) == 'from_monitoring') {
$this->response->redirect('');
} else{
$this->flashSession->success('Selamat Datang ^_^');
$this->response->redirect('');
}
}
elseif ($uid != $pengguna->uid || $password != $pengguna->pwd) {
$this->flashSession->error('Password Tidak Benar');
$this->response->redirect('');
}
else {
$this->flashSession->error('Maaf, Anda Belum Terdaftar');
$this->response->redirect('');
}
}
}
public function konfirmasiAction($id)
{
$pengguna = DataPengguna::findFirstByuid($id);
$pengguna->konfirmasi_email = 'Y';
$pengguna->save();
$this->flashSession->success('Selamat Email Anda Sudah Dikonfirmasi Silahkan Lakukan Login');
$this->response->redirect('/masuk');
}
public function daftarAction()
{
$idprodi = dataProdi::find();
$this->view->idprodi = $idprodi;
$form = new Registrasi(null);
// $this->view->title = 'Daftar';
if ($this->request->isPost()) {
if ($form->isValid($this->request->getPost()) != false) {
$uid = $this->request->getPost('uid');
$pengguna = DataPengguna::findFirstByuid($uid);
if ($pengguna->uid != $uid) {
$body = $this->config->web . "konfirmasi/" . $this->request->getPost('uid');
$email = $this->request->getPost('email');
$user = new DataPengguna(
[
'nama' => $this->request->getPost('nama'),
'uid' => $this->request->getPost('uid'),
'pwd' => md5($this->request->getPost('password')),
'email' => $this->request->getPost('email'),
'idProdi' => $this->request->getPost('idprodi'),
'jabatanDiProdi' => $this->request->getPost('jabatan'),
'hakAkses' => 'User',
'foto' => 'no-image.jpg',
'konfirmasi_email' => 'T',
]);
if ($user->save()) {
$mail = new Mail();
$mail->send(
$this->config->smtp,
$this->config->user,
$message = [
'to' => $email,
'subject' => 'Konfirmasi Email',
'body' => '
<p>Assalamu\'alaikum</p>
<br>
<p>Tekan Link Dibawah ini untuk aktifkan akun anda,Demikian informasi ini dapat disampaikan,, Terimakasih</p>
<a href="' . $body . '">KONFIRMASI EMAIL</a>
'
]
);
$this->view->disable();
$this->flashSession->success('Registrasi Berhasil, Silahkan Cek Email Anda Untuk Konfirmasi akun');
$this->response->redirect('daftar');
}
else{
$this->view->disable();
$this->flashSession->error('Gagal Menyimpan Data');
$this->response->redirect('daftar');
}
}
else{
$this->view->disable();
$this->flashSession->error('Gagal, Nip Anda Sudah Terdaftar');
$this->response->redirect('/daftar');
}
}
}
$this->view->form = $form;
}
public function resetAction($id)
{
$pengguna = DataPengguna::findFirstByuid($id);
$pengguna->pwd = md5($id);
$pengguna->konfirmasi_email = 'Y';
$pengguna->save();
$this->flashSession->success('Berhasil Password baru anda sama dengan Username');
$this->response->redirect('/masuk');
}
public function lupaAction()
{
$this->view->halaman = 'lupa';
if ($this->request->isPost()) {
$uid = $this->request->getPost('uid');
$pengguna = DataPengguna::findFirstByuid($uid);
if ($pengguna->uid == $uid) {
$nama = $pengguna->nama;
$email = $pengguna->email;
$body = $this->config->web . "reset/" . $this->request->getPost('uid');
$mail = new Mail();
$mail->send(
$this->config->smtp,
$this->config->user,
$message = [
'to' => $email,
'subject' => 'Konfirmasi Email',
'body' => '
<p>Assalamu\'alaikum ' . $nama . '</p>
<br>
<p>Konfirmasi Reset Password?? <a href="' . $body . '">Ya</a></p>
'
]
);
if ($pengguna->save()) {
$this->flashSession->success("Cek Email Anda Untuk Mendapatkan Password Baru");
$this->response->redirect('lupa');
}
}
else{
$this->flashSession->error("Nip Anda Belum Terdaftar");
$this->response->redirect('lupa');
}
}
}
}
/**
* Created by PhpStorm.
* User: user
* Date: 10/5/2018
* Time: 1:55 PM
*/
namespace IMK\Ami\Controllers;
use IMK\Ami\Models\DataProdi;
use Phalcon\Mvc\Controller;
use IMK\Ami\Models\DataPengguna;
use IMK\Forms\Registrasi;
use IMK\Library\Mail;
class AuthController extends Controller
{
public function initialize()
{
$ses_nip_nik= $this->session->get('uid');
if (!empty($ses_uid)) {
$this->response->redirect('');
}
$this->view->halaman = 'Login';
}
public function loginAction()
{
}
public function logoutAction()
{
$this->session->destroy();
$this->response->redirect('');
}
public function loginprosesAction()
{
$uid = $this->request->getPost('uid');
$password = $this->request->getPost('password');
$password = md5($password);
$pengguna = DataPengguna::findFirstByuid($uid);
if ($pengguna) {
if ($pengguna->konfirmasi_email == 'nonaktif') {
if (!empty($this->request->getPost('from')) == 'from') {
$this->flashSession->error('Akun Anda Tidak Aktif, Cek Email untuk konfirmasi atau hubungi admin ');
$this->response->redirect('');
} else{
$this->flashSession->error('Akun Anda Tidak Aktif, Cek Email untuk konfirmasi atau hubungi admin');
$this->response->redirect('');
}
}
elseif ($uid == $pengguna->uid && $password == $pengguna->pwd) {
$this->session->set('id', $pengguna->id);
$this->session->set('uid', $pengguna->uid);
$this->session->set('hakakses', $pengguna->hakAkses);
$this->session->set('password', $pengguna->pwd);
$this->session->set('foto', $pengguna->foto);
$this->session->set('nama', $pengguna->nama);
$this->session->set('email', $pengguna->email);
$this->session->set('idprodi', $pengguna->idProdi);
//TODO tambahan redirect sesuai asal login dan tambahan simpan session login
$this->session->set('user', $pengguna);
if (!empty($this->request->getPost('from_monitoring')) == 'from_monitoring') {
$this->response->redirect('');
} else{
$this->flashSession->success('Selamat Datang ^_^');
$this->response->redirect('');
}
}
elseif ($uid != $pengguna->uid || $password != $pengguna->pwd) {
$this->flashSession->error('Password Tidak Benar');
$this->response->redirect('');
}
else {
$this->flashSession->error('Maaf, Anda Belum Terdaftar');
$this->response->redirect('');
}
}
}
public function konfirmasiAction($id)
{
$pengguna = DataPengguna::findFirstByuid($id);
$pengguna->konfirmasi_email = 'Y';
$pengguna->save();
$this->flashSession->success('Selamat Email Anda Sudah Dikonfirmasi Silahkan Lakukan Login');
$this->response->redirect('/masuk');
}
public function daftarAction()
{
$idprodi = dataProdi::find();
$this->view->idprodi = $idprodi;
$form = new Registrasi(null);
// $this->view->title = 'Daftar';
if ($this->request->isPost()) {
if ($form->isValid($this->request->getPost()) != false) {
$uid = $this->request->getPost('uid');
$pengguna = DataPengguna::findFirstByuid($uid);
if ($pengguna->uid != $uid) {
$body = $this->config->web . "konfirmasi/" . $this->request->getPost('uid');
$email = $this->request->getPost('email');
$user = new DataPengguna(
[
'nama' => $this->request->getPost('nama'),
'uid' => $this->request->getPost('uid'),
'pwd' => md5($this->request->getPost('password')),
'email' => $this->request->getPost('email'),
'idProdi' => $this->request->getPost('idprodi'),
'jabatanDiProdi' => $this->request->getPost('jabatan'),
'hakAkses' => 'User',
'foto' => 'no-image.jpg',
'konfirmasi_email' => 'T',
]);
if ($user->save()) {
$mail = new Mail();
$mail->send(
$this->config->smtp,
$this->config->user,
$message = [
'to' => $email,
'subject' => 'Konfirmasi Email',
'body' => '
<p>Assalamu\'alaikum</p>
<br>
<p>Tekan Link Dibawah ini untuk aktifkan akun anda,Demikian informasi ini dapat disampaikan,, Terimakasih</p>
<a href="' . $body . '">KONFIRMASI EMAIL</a>
'
]
);
$this->view->disable();
$this->flashSession->success('Registrasi Berhasil, Silahkan Cek Email Anda Untuk Konfirmasi akun');
$this->response->redirect('daftar');
}
else{
$this->view->disable();
$this->flashSession->error('Gagal Menyimpan Data');
$this->response->redirect('daftar');
}
}
else{
$this->view->disable();
$this->flashSession->error('Gagal, Nip Anda Sudah Terdaftar');
$this->response->redirect('/daftar');
}
}
}
$this->view->form = $form;
}
public function resetAction($id)
{
$pengguna = DataPengguna::findFirstByuid($id);
$pengguna->pwd = md5($id);
$pengguna->konfirmasi_email = 'Y';
$pengguna->save();
$this->flashSession->success('Berhasil Password baru anda sama dengan Username');
$this->response->redirect('/masuk');
}
public function lupaAction()
{
$this->view->halaman = 'lupa';
if ($this->request->isPost()) {
$uid = $this->request->getPost('uid');
$pengguna = DataPengguna::findFirstByuid($uid);
if ($pengguna->uid == $uid) {
$nama = $pengguna->nama;
$email = $pengguna->email;
$body = $this->config->web . "reset/" . $this->request->getPost('uid');
$mail = new Mail();
$mail->send(
$this->config->smtp,
$this->config->user,
$message = [
'to' => $email,
'subject' => 'Konfirmasi Email',
'body' => '
<p>Assalamu\'alaikum ' . $nama . '</p>
<br>
<p>Konfirmasi Reset Password?? <a href="' . $body . '">Ya</a></p>
'
]
);
if ($pengguna->save()) {
$this->flashSession->success("Cek Email Anda Untuk Mendapatkan Password Baru");
$this->response->redirect('lupa');
}
}
else{
$this->flashSession->error("Nip Anda Belum Terdaftar");
$this->response->redirect('lupa');
}
}
}
}
Keterangan :
- untuk ketiga view diletakan kedalam folder view yang sama disini saya menggunakan folder "auth".
- dibuat menggunakan framework Phalcon dan tampilan AdminTo.
- untuk daftar dan lupa password memiliki konfirmasi email untuk mengaktifkan akun dan mereset password yang akan dikirimkan ke email nya masing2
- Login = memiliki kondisi hanya bisa login jika sudah terdaftar, jika password salah akan memberikan pesan error "password anda salah". jika akun sudah terdaftar tetapi konfirmasi emailnya masih tidak aktif maka akan muncul pesan error untuk menyruh memeriksa emailnya untuk aktivasi.
- Daftar= untuk pendaftaran pertama kali akun anda tidak akan aktif. untuk mengkatifkan cek email anda yang telah dikirim saat pendaftaran.
- Lupa password = link reset akun akan dikirimkan ke email masing-masing .setelah link diketahui maka password anda akan berubah sesuai dengan username
0 Response to "PHP | Source Code Autentikasi lengkap Banyak Kondisi (Login, Register, Lupa Password)"
Posting Komentar