NIM : 5150311021
Kelas : Sistem Informasi A
Disini saya akan mencoba membuat bagaimana membuat Aplikasi OTP dengan Random Password yang menggunakan Netbeans dan Android Studio.
TUTORIAL APLIKASI OTP DI NETBEANS
1. Pertama-tama siapkan aplikasi yang dibutuhkan.
2. Kemudian , buka aplikasi Netbeans
3. Cari menu File kemudian pilih New Project
Ikuti petunjuk gambar dibawah ini :
2. Kemudian , buka aplikasi Netbeans
3. Cari menu File kemudian pilih New Project
Ikuti petunjuk gambar dibawah ini :
4. pilih Java kemudia Java Application kemudian pilih next
5. Beri Nama Project dan pilih Finish
6. Kemudian tambahkan Package , Java Class dan JFrame yang belum ada di project seperti-package gui : 2 JFrame yang diberi nama JFrameLogin dan JFrameMenu
-package dec : Java Class diberi nama Decrypt
-package enc : Java Class diberi nama Encrypt
-package random : Java Class diberi nama Random
7. Pilih Java Class Encrypt.java dan masukkan syntax
//import package random dan class Random
import random.Random;
public class Encrypt {
private String palsu;
private String asli="TEST";
public Encrypt() {
Random rd = new Random();
this.asli = rd.getStr();
}
//fungsi passwod random untuk password palsu
//import package random dan class Random
import random.Random;
public class Encrypt {
private String palsu;
private String asli="TEST";
public Encrypt() {
Random rd = new Random();
this.asli = rd.getStr();
}
//fungsi passwod random untuk password palsu
public String getPalsu() {
String WordKey = "LOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHA";
String NumKey = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
String CodeKey = "~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.";
//String toEncrypt = "Aku kirim sejumlah Rp.17.800.100,00 \"(tujuh belas juta)\" syaratnya harus lengkap";
String toEncrypt = this.asli;
WordKey = WordKey.toLowerCase();
toEncrypt = toEncrypt.toLowerCase();
char wordArray[] = WordKey.toCharArray();
char numArray[] = NumKey.toCharArray();
char charArray[] = toEncrypt.toCharArray();
char codeArray[] = CodeKey.toCharArray();
for (int i = 0; i < toEncrypt.length(); i++) {
if (Character.isLetter(charArray[i])) {
if (Character.isUpperCase(charArray[i])) {
charArray[i] = (char) (((int) charArray[i] - 65 + ((int) wordArray[i] - 97)) % 26 + 65);
} else {
charArray[i] = (char) (((int) charArray[i] - 97 + ((int) wordArray[i] - 97)) % 26 + 97);
}
} else if ((int) charArray[i] >= 48 && (int) charArray[i] < 58) {
charArray[i] = (char) (((int) charArray[i] - 48 + ((int) numArray[i])) % 10 + 48);
} else if ((int) charArray[i] >= 30 && (int) charArray[i] < 48) {
charArray[i] = (char) (((int) charArray[i] - 30 + ((int) codeArray[i])) % 18 + 30);
}
}
toEncrypt = new String(charArray);
return toEncrypt;
}
public void setPalsu(String palsu) {
this.palsu = palsu;
}
public String getAsli() {
return asli;
}
public void setAsli(String asli) {
this.asli = asli;
}
}
8. Pilih Java Class Decrypt.java dan masukkan syntax
public class Decrypt {
private String alsi;
public Decrypt() {
}
public String getAlsi() {
String WordKey = "LOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHA";
String NumKey = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
String CodeKey = "~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.";
String toDecrypt = this.alsi;
WordKey = WordKey.toLowerCase();
toDecrypt = toDecrypt.toUpperCase();
char wordArray[] = WordKey.toCharArray();
char numArray[] = NumKey.toCharArray();
char charArray[] = toDecrypt.toCharArray();
char codeArray[] = CodeKey.toCharArray();
for (int i = 0; i < toDecrypt.length(); i++) {
if (Character.isLetter(charArray[i])) {
if (Character.isUpperCase(charArray[i])) {
charArray[i] = (char) (((int) charArray[i] - 65 - ((int) wordArray[i % WordKey.length()] - 97) + 104) % 26 + 65);
} else {
charArray[i] = (char) (((int) charArray[i] - 97 - ((int) wordArray[i % WordKey.length()] - 97) + 104) % 26 + 97);
}
} else if ((int) charArray[i] >= 48 && (int) charArray[i] < 58) {
charArray[i] = (char) (((int) charArray[i] - 48 - ((int) numArray[i]) + 80) % 10 + 48);
} else if ((int) charArray[i] >= 30 && (int) charArray[i] < 48) {
charArray[i] = (char) (((int) charArray[i] - 30 - ((int) codeArray[i])) % 18 + 48);
}
}
toDecrypt = new String(charArray);
return toDecrypt;
}
public void setAlsi(String alsi) {
this.alsi = alsi;
}
}
9. Pilih Java Class Random.java dan masukkan syntax :
//import fungsi dibawah ini
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Random {
private String str;
public String getStr() {
//============== JANGKRIK ============================
//int randomPin = (int) (Math.random() * 9000) + 1000;
//str = String.valueOf(randomPin);
//========== END OF JANGKRIK =========================
//DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
DateFormat df = new SimpleDateFormat("ssmm");
Calendar cl = Calendar.getInstance();
str = ""+df.format(cl.getTime());
str = "9"+str+"4";
/*
String cr = "";
String hs = "";
for (int i = 0; i < str.length(); i++) {
cr = str.substring(i, i + 1);
int ii = Integer.parseInt(cr);
if (ii == 0) {
cr = "A";
} else if (ii == 1) {
cr = "B";
} else if (ii == 2) {
cr = "C";
} else if (ii == 3) {
cr = "D";
} else if (ii == 4) {
cr = "E";
} else if (ii == 5) {
cr = "F";
} else if (ii == 6) {
cr = "G";
} else if (ii == 7) {
cr = "H";
} else if (ii == 8) {
cr = "I";
} else if (ii == 9) {
cr = "J";
} else {
cr = "";
}
hs = hs + cr;
}
*/
return str;
}
public void setStr(String str) {
}
}
10. Pilih JFrameLogin dan buat Tampilan seperti dibawah :
Menggunakan Components :
String WordKey = "LOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHA";
String NumKey = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
String CodeKey = "~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.";
//String toEncrypt = "Aku kirim sejumlah Rp.17.800.100,00 \"(tujuh belas juta)\" syaratnya harus lengkap";
String toEncrypt = this.asli;
WordKey = WordKey.toLowerCase();
toEncrypt = toEncrypt.toLowerCase();
char wordArray[] = WordKey.toCharArray();
char numArray[] = NumKey.toCharArray();
char charArray[] = toEncrypt.toCharArray();
char codeArray[] = CodeKey.toCharArray();
for (int i = 0; i < toEncrypt.length(); i++) {
if (Character.isLetter(charArray[i])) {
if (Character.isUpperCase(charArray[i])) {
charArray[i] = (char) (((int) charArray[i] - 65 + ((int) wordArray[i] - 97)) % 26 + 65);
} else {
charArray[i] = (char) (((int) charArray[i] - 97 + ((int) wordArray[i] - 97)) % 26 + 97);
}
} else if ((int) charArray[i] >= 48 && (int) charArray[i] < 58) {
charArray[i] = (char) (((int) charArray[i] - 48 + ((int) numArray[i])) % 10 + 48);
} else if ((int) charArray[i] >= 30 && (int) charArray[i] < 48) {
charArray[i] = (char) (((int) charArray[i] - 30 + ((int) codeArray[i])) % 18 + 30);
}
}
toEncrypt = new String(charArray);
return toEncrypt;
}
public void setPalsu(String palsu) {
this.palsu = palsu;
}
public String getAsli() {
return asli;
}
public void setAsli(String asli) {
this.asli = asli;
}
}
8. Pilih Java Class Decrypt.java dan masukkan syntax
public class Decrypt {
private String alsi;
public Decrypt() {
}
public String getAlsi() {
String WordKey = "LOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHA";
String NumKey = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789";
String CodeKey = "~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.";
String toDecrypt = this.alsi;
WordKey = WordKey.toLowerCase();
toDecrypt = toDecrypt.toUpperCase();
char wordArray[] = WordKey.toCharArray();
char numArray[] = NumKey.toCharArray();
char charArray[] = toDecrypt.toCharArray();
char codeArray[] = CodeKey.toCharArray();
for (int i = 0; i < toDecrypt.length(); i++) {
if (Character.isLetter(charArray[i])) {
if (Character.isUpperCase(charArray[i])) {
charArray[i] = (char) (((int) charArray[i] - 65 - ((int) wordArray[i % WordKey.length()] - 97) + 104) % 26 + 65);
} else {
charArray[i] = (char) (((int) charArray[i] - 97 - ((int) wordArray[i % WordKey.length()] - 97) + 104) % 26 + 97);
}
} else if ((int) charArray[i] >= 48 && (int) charArray[i] < 58) {
charArray[i] = (char) (((int) charArray[i] - 48 - ((int) numArray[i]) + 80) % 10 + 48);
} else if ((int) charArray[i] >= 30 && (int) charArray[i] < 48) {
charArray[i] = (char) (((int) charArray[i] - 30 - ((int) codeArray[i])) % 18 + 48);
}
}
toDecrypt = new String(charArray);
return toDecrypt;
}
public void setAlsi(String alsi) {
this.alsi = alsi;
}
}
9. Pilih Java Class Random.java dan masukkan syntax :
//import fungsi dibawah ini
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Random {
private String str;
public String getStr() {
//============== JANGKRIK ============================
//int randomPin = (int) (Math.random() * 9000) + 1000;
//str = String.valueOf(randomPin);
//========== END OF JANGKRIK =========================
//DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
DateFormat df = new SimpleDateFormat("ssmm");
Calendar cl = Calendar.getInstance();
str = ""+df.format(cl.getTime());
str = "9"+str+"4";
/*
String cr = "";
String hs = "";
for (int i = 0; i < str.length(); i++) {
cr = str.substring(i, i + 1);
int ii = Integer.parseInt(cr);
if (ii == 0) {
cr = "A";
} else if (ii == 1) {
cr = "B";
} else if (ii == 2) {
cr = "C";
} else if (ii == 3) {
cr = "D";
} else if (ii == 4) {
cr = "E";
} else if (ii == 5) {
cr = "F";
} else if (ii == 6) {
cr = "G";
} else if (ii == 7) {
cr = "H";
} else if (ii == 8) {
cr = "I";
} else if (ii == 9) {
cr = "J";
} else {
cr = "";
}
hs = hs + cr;
}
*/
return str;
}
public void setStr(String str) {
}
}
10. Pilih JFrameLogin dan buat Tampilan seperti dibawah :
Menggunakan Components :
syntaxnya :
- masukkan import di package gui
package gui;
import dec.Decrypt;
import enc.Encrypt;
import gui.JFrameMenu;
import javax.swing.JOptionPane;
-tambahkan initComponents:
jLblPalsu.setText(getPwdPalsu());
-tambahkan private string getPwdAsli dan getPwdPalsu dibawah fungsi components
private String getPwdAsli(){
Encrypt enc = new Encrypt();
return enc.getAsli();
}
private String getPwdPalsu(){
Encrypt enc = new Encrypt();
return enc.getPalsu();
}
-masukan syntax di button Decrypt
private void jBtnToDecryptActionPerformed(java.awt.event.ActionEvent evt) {
String jtxttodec = jTxtToDecrypt.getText();
Decrypt dec = new Decrypt();
dec.setAlsi(jtxttodec);
jLblAsli.setText(dec.getAlsi());
-masukkan syntax di button Login
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
if (jTextField1.getText().equals("admin")) {
if (jPasswordField1.getText().equals(jLblAsli.getText())) {
// Bila Login Sukses Maka Masuk Menu Utama
new JFrameMenu().show();
this.dispose(); }
else {
// Bila Login Gagal Maka Ulangi Login
JOptionPane.showMessageDialog(rootPane, "<error> Password Salah, Silahkan Coba Lagi");
jTextField1.setText("");
jPasswordField1.requestFocus(); }}
else {
JOptionPane.showMessageDialog(rootPane, "<error> Username, Silahkan Coba Lagi");
jTextField1.setText("");
jPasswordField1.setText("");
jTextField1.requestFocus();
}
}
-Pilih random dan masukkan syntax di Java Class Random.java
//masukkan import dibawah ini :
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Random {
private String str;
public String getStr() {
//============== JANGKRIK ============================
//int randomPin = (int) (Math.random() * 9000) + 1000;
//str = String.valueOf(randomPin);
//========== END OF JANGKRIK =========================
//DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
DateFormat df = new SimpleDateFormat("ssmm");
Calendar cl = Calendar.getInstance();
str = ""+df.format(cl.getTime());
str = "9"+str+"4";
/*
String cr = "";
String hs = "";
for (int i = 0; i < str.length(); i++) {
cr = str.substring(i, i + 1);
int ii = Integer.parseInt(cr);
if (ii == 0) {
cr = "A";
} else if (ii == 1) {
cr = "B";
} else if (ii == 2) {
cr = "C";
} else if (ii == 3) {
cr = "D";
} else if (ii == 4) {
cr = "E";
} else if (ii == 5) {
cr = "F";
} else if (ii == 6) {
cr = "G";
} else if (ii == 7) {
cr = "H";
} else if (ii == 8) {
cr = "I";
} else if (ii == 9) {
cr = "J";
} else {
cr = "";
}
hs = hs + cr;
}
*/
return str;
}
public void setStr(String str) {
}
}
11. Pilih JFrameMenu dan buat tampilan untuk Form Menu
TUTORIAL TAMPILAN OTP DI ANDROID STUDIO
1. Buka Android Studio
2. Buatlah New Project
3.Beri nama New Project
4. Kemudian Pilih Empety Activity
5. Pilih MainActivity pada Java dan beri syntax :
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends AppCompatActivity { TextView tvpwdasli; EditText edttxtpalsu; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void btnOkClick(View view){ tvpwdasli = (TextView ) findViewById(R.id.tvPwdAsli); edttxtpalsu = (EditText) findViewById(R.id.edttxtpalsu); String palsu = edttxtpalsu.getText().toString(); OtpDecrypt obj = new OtpDecrypt(palsu); tvpwdasli.setText(obj.getPwdasli()); }}
6. Pilih activity_main.xml dan beri syntax
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" android:background="#41798b" tools:context=".MainActivity">
<EditText
android:id="@+id/edttxtpalsu" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:hint="PASSWORD PALSU" android:layout_marginTop="50dp" android:textColorHint="#fff" android:textColor="#fff" android:inputType="text" />
<Button android:id="@+id/btnOkId" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="btnOkClick" android:layout_marginTop="30dp" android:layout_marginLeft="20dp" android:background="#000" android:layout_centerHorizontal="true" android:textColor="#fff" android:text="OKE" android:layout_below="@+id/edttxtpalsu" />
<TextView android:id="@+id/tvPwdAsli" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#fff" android:textSize="36sp" android:textStyle="bold" android:layout_below="@+id/edttxtpalsu" android:layout_marginTop="200dp" android:layout_centerHorizontal="true"/>
</RelativeLayout>
7. Tambahkan Java Class dan beri nama OtpDecrypt dan beri syntax :
public class OtpDecrypt { private String pwdasli; public OtpDecrypt() { } public OtpDecrypt(String pwdasli) { this.pwdasli = pwdasli; } public String getPwdasli() { String WordKey = "LOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHALOHA"; String NumKey = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789"; String CodeKey = "~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,.~!@#$%^&*()-_+={}?<>/,."; String toDecrypt = this.pwdasli; WordKey = WordKey.toLowerCase(); toDecrypt = toDecrypt.toUpperCase(); char wordArray[] = WordKey.toCharArray(); char numArray[] = NumKey.toCharArray(); char charArray[] = toDecrypt.toCharArray(); char codeArray[] = CodeKey.toCharArray(); for (int i = 0; i < toDecrypt.length(); i++) { if (Character.isLetter(charArray[i])) { if (Character.isUpperCase(charArray[i])) { charArray[i] = (char) (((int) charArray[i] - 65 - ((int) wordArray[i % WordKey.length()] - 97) + 104) % 26 + 65); } else { charArray[i] = (char) (((int) charArray[i] - 97 - ((int) wordArray[i % WordKey.length()] - 97) + 104) % 26 + 97); } } else if ((int) charArray[i] >= 48 && (int) charArray[i] < 58) { charArray[i] = (char) (((int) charArray[i] - 48 - ((int) numArray[i]) + 80) % 10 + 48); } else if ((int) charArray[i] >= 30 && (int) charArray[i] < 48) { charArray[i] = (char) (((int) charArray[i] - 30 - ((int) codeArray[i])) % 18 + 48); } } toDecrypt = new String(charArray); return toDecrypt; } public void setPwdasli(String pwdasli) { this.pwdasli = pwdasli; } }
8. Tampilan Aplikasi OTP di Android Studio
PROSES OTP di NETBEANS DAN ANDROID STUDIO
Masukkan Password Palsu ke dalam Aplikasi AndroidKemudian Setelah tekan Button Oke maka akan muncul password asli , dan password asli masukan
ke aplikasi netbeans di kolom "Masukkan Password Asli"
Kemudian Tekan DecryptMunculah Hasil dari Passwordnya , Kemudia Hasil Password dimasukandalam Kolom "Password Hasil"dan Hak Akses yang telah dibuat ,disini saya membuat hak akses dengan nama admin.Setelah itu , tekan button Login maka jika berhasil akan muncul Form selanjutnyayaitu Tampilan Home.
Masuk ke tampilan Home
Jadi sudah berhasil masuk di Form Login OTP.
Dari tutorial diatas maka aplikasi otp sudah berhasil.
Thankyou. Maaf jika ada kesalahan atau kekurangan 😊😊😊