PHP | Source Code Autentikasi lengkap Banyak Kondisi (Login, Register, Lupa Password)

Assalamualaikum WR WB

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 -->

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 -->

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>

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');
            }

        }
    }
}
 
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
Itulah source code yang dibagikan kali ini Source Code Autentikasi Lengkap. kalau ada salah mohon dimaafkan, Terimakasih

Related Posts:

JAVA | FXML Menghitung Persegi Panjang menggunakan Scene Builder

Assalamualaikum WR WB

 
Sebelum masuk ke kodingan, terlebih dahulu anda sudah mengetahui rumus dari luas dan keliling persegi panjang dan apa saja inputan yang akan dimasukan. Program Java Menghitung Persegi panjang yang akan dibuat menggunakan intellij IDEA dan scene builder untuk tampilan aplikasinya  untuk yang belum ada scene builder bisa lihat tutorial berikut instal scene builder di intellij

berikut langkah-langkah yang akan dilalui saat membuat program JAVA :
1. Buka Intellij IDEA nya, buat project baru dengan nama "PersegiPanjang". Cara membuat Project baru di Intellij
2. buat Tampilan GUI nya yaitu dengan cara membuka file sample.fxml atau bisa dengan membuat file fxml baru. membuat fxml bisa menggunakan scene builder seperti gambar dibawah.


Berikut Tampilan Aplikasi yang akan dibuat

 berikut source code dari file FXML "persegipanjang.fxml"
<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.text.Font?>

<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.172-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
   <children>
      <Label layoutX="217.0" layoutY="14.0" text="PERSEGI PANJANG">
         <font>
            <Font size="20.0" />
         </font>
      </Label>
      <Label layoutX="49.0" layoutY="66.0" text="Nilai Panjang">
         <font>
            <Font size="14.0" />
         </font>
      </Label>
      <TextField id="panjang" fx:id="panjang" layoutX="168.0" layoutY="64.0" />
      <Label layoutX="49.0" layoutY="116.0" text="Nilai Lebar">
         <font>
            <Font size="14.0" />
         </font>
      </Label>
      <TextField id="lebar" fx:id="lebar" layoutX="168.0" layoutY="114.0" />
      <Button fx:id="Hitung" layoutX="49.0" layoutY="166.0" mnemonicParsing="false" onAction="#Hitung" text="Hitung" />
      <Label fx:id="luas" layoutX="168.0" layoutY="213.0" />
      <Label layoutX="49.0" layoutY="217.0" text="Luas =">
         <font>
            <Font size="14.0" />
         </font>
      </Label>
      <Label layoutX="49.0" layoutY="255.0" text="Keliling =">
         <font>
            <Font size="14.0" />
         </font>
      </Label>
      <Label  fx:id="keliling" layoutX="168.0" layoutY="253.0" />
      <Button fx:id="Reset" layoutX="168.0" layoutY="166.0" mnemonicParsing="false" onAction="#Reset" text="Reset" />
   </children>
</AnchorPane>

3. Pada file controller.java ada bisa membuat codingan seperti berikut :
package sample;

import javafx.event.ActionEvent;

import javafx.scene.control.Label;
import javafx.scene.control.TextField;

public class Controller  {
    public double pjg,lbr, hasilLuas, hasilKeliling;
    public String ls,kl;

    public TextField lebar,panjang;
    public Label keliling, luas;

    public void Hitung(ActionEvent event){
        lbr = Double.parseDouble(lebar.getText());
        pjg = Double.parseDouble(panjang.getText());

        hasilLuas = pjg*lbr;
        ls = String.format("%,.2f", hasilLuas);
        luas.setText(ls);

        hasilKeliling = (2*pjg)+(2*lbr);
        kl = String.format("%,.2f", hasilKeliling);
        keliling.setText(kl);
    }
    public void Reset(ActionEvent event){
        lebar.setText("");
        panjang.setText("");
        luas.setText("");
        keliling.setText("");

    }
}

4. Pada file main.java ada bisa membuat codingan seperti berikut :
package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("persegipanjang.fxml"));
        primaryStage.setTitle("Hello World");
        primaryStage.setScene(new Scene(root, 300, 275));
        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}

Itulah source code dari program yang akan dibuat. setelah itu anda bisa menjalankan aplikasnya  dengan cara Run-> pilih Run'main'.

Itulah source code dari program menghitung persegi panjang di Java. jika ada pertanyaan silahkan komentar dikolam bawah. lebih dan kurang mohon dimaafkan, Terimakasih 
 


Related Posts:

Tutorial Instal Scene Builder di Intellij IDEA


Assalamualaikum Wr Wb

Sebelum menjelaskan tutorial instal schene builder ada baiknya kita menjelaskan terlebih dahulu apa itu Scene Builder.
instal scene builder di intellij idea

Apa Itu Scene Builder??

Cara instal Scene builder di Intellij IDEA?

Scene Builder adalah aplikasi yang membantu kita dalam mendisain interface aplikasi dengan lebih mudah. Disini kita menggunakan Scene Builder dari Gluon. Scene Builder merupakan tools yang digunakan untuk mendesign user interface dari suatu aplikasi. Dengan menggunakan SB membuat tampilan aplikasi hanya dengan drag n drop saja tanpa perlu memusingkan fxml nya.

kenapa intellij idea? menurut saya menggabungkan scene builder di netbens sedikit lebih rumit. banyak tutorial yang memuat tentang cara instal scene builder dinetbens akan tetapi saya selalu gagal (wkwkw mungkin karna saya tidak paham) sedangkan di intellij simple, kita hanya harus menginstal scene builder. dan langsung terhubung.

Sebelum memulai instalasi persyaratan yang dipersiapkan terlebih dahulu yaitu :

1. Intellij Idea Ultimate, DownloadApp?
2. JDK 8 atau 11, Download App?
3. Scene Builder itu sendiri, Download App?

setelah semua selesai di download, proses instalasi bisa dimulai, berikut langkah-langkah nya:
1. Instalasi terlebih dahulu JDK 8 dan Intellij IDEA, untuk tutorial instalasinya silahkan kunjungi Link Berikut
2. kemudian instal Scene Builder, caranya :
  1. klik 2x pada file exe SB yang didowonload kemudian
  2. kemudian pilih "I accept the agreement". lalu klik tombol next.
  3. Klik Next lagi, Tunggu sampe proses instalasi selesai.

     
3. Setelah Proses instalasi SB selesai, kemudian buka aplikasi Intellij Idea untuk mengecek apakah SB sudah terintegrasi.
4. kemudian pilih file->Settings->Languange and Framework->JavaFX. lihat di path to SceneBuilder apakah folder tempat sb diletak sudah terbaca, biasanya langsung otomatis terbaca.

 -

5. buat project baru untuk mencoba SB di Intellij, dengan cara pilih file->new->project-> pilih Java FX -> next. diproject name diisi sesuai dengan aplikasi yang akan dibuat, lalu klik tombol finish
6. kemudian lihat di folder src package sample. disana terdapat 3 file yang dmna untuk mendesign bisa menggunakan format .fxml.

Instalasi Selesai Anda bisa mendesign sesuka hati, Selamat Mencoba ^_^. 

kalau ada pertanyaan silahkan komentar dikolam bawah, kesalahan dan kekurangan mohon dimaafkan. Terimakasih






Related Posts: