Cara Membuat Fitur Login dengan Kotlin

Dalam pengembangan aplikasi Android, fitur login merupakan salah satu komponen yang umum ditemui. Fitur login memungkinkan pengguna untuk mengakses berbagai fungsi dan layanan dalam aplikasi dengan menggunakan identitas yang unik, seperti email dan kata sandi. Dalam artikel ini, kita akan membahas cara membuat fitur login menggunakan Kotlin dalam pengembangan aplikasi Android.

Langkah-langkah Pembuatan Fitur Login

Kita akan menggunakan contoh program yang telah disediakan sebagai dasar untuk pembahasan fitur login di Kotlin.

1. Desain Tampilan Login

Pertama, kita harus mendesain tampilan login dalam XML. Di dalamnya, kita perlu menambahkan elemen seperti EditText untuk email dan kata sandi, serta sebuah tombol untuk proses login.

<!-- File: login.xml -->

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="20dp">

    <!-- EditText untuk email -->
    <EditText
        android:id="@+id/edt_email"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Masukkan Email Anda"
        android:layout_marginBottom="15dp"/>

    <!-- EditText untuk kata sandi -->
    <EditText
        android:id="@+id/edt_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Masukkan Password Anda"
        android:layout_marginBottom="20dp"/>

    <!-- Tombol untuk login -->
    <Button
        android:id="@+id/btn_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="LOGIN"/>

</LinearLayout>

2. Implementasi Logika Login

Setelah mendesain tampilan login, selanjutnya adalah mengimplementasikan logika login di dalam file Kotlin. Dalam contoh program yang diberikan, logika login terletak di dalam kelas Login.

// File: Login.kt
package com.android.kampus

import android.content.Intent
import android.content.SharedPreferences
import android.database.sqlite.SQLiteDatabase
import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import kotlin.math.log

class Login : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.login)
        val edt_email:EditText = findViewById(R.id.edt_email)
        val edt_password:EditText = findViewById(R.id.edt_password)
        val btn_login:Button = findViewById(R.id.btn_login)

        //bila login ditekan
        btn_login.setOnClickListener {
            val isi_email:String = edt_email.text.toString()
            val isi_password:String = edt_password.text.toString()

            //cek ke database
            val dbkampus: SQLiteDatabase = openOrCreateDatabase("kampus", MODE_PRIVATE, null)

            //cek ke table user
            val query = dbkampus.rawQuery("SELECT * FROM user WHERE email_user='$isi_email' AND password_user='$isi_password'", null)
            val cek = query.moveToNext()

            Log.d("Cek status bro", cek.toString())
            //Jika ada user dengan email dan password itu, artinya True
            if (cek) {
                //simpan data si pelogin ke shared_preferensi
                val id = query.getString(0)
                val email = query.getString(1)
                val password = query.getString(2)
                val nama = query.getString(3)

                val session:SharedPreferences = getSharedPreferences("user", MODE_PRIVATE)
                val buattiket = session.edit()
                buattiket.putString("id_user", id)
                buattiket.putString("email_user", email)
                buattiket.putString("password_user", password)
                buattiket.putString("nama_user", nama)
                buattiket.commit()

                //pindah ke halaman Mahasiswa
                val pindah:Intent = Intent(this, Mahasiswa::class.java)
                startActivity(pindah)
            } else {
                Toast.makeText(this, "Email atau Password Anda Salah", Toast.LENGTH_SHORT).show()
            }
        }
    }
}

Di dalam logika login, Anda dapat menentukan tindakan yang akan diambil ketika login berhasil atau gagal. Misalnya, Anda dapat memindahkan pengguna ke layar utama aplikasi jika login berhasil, atau menampilkan pesan kesalahan jika login gagal.

3. Penyimpanan Data Pengguna

Dalam contoh program tersebut, setelah login berhasil, data pengguna disimpan ke dalam SharedPreferences.

val session: SharedPreferences = getSharedPreferences("user", MODE_PRIVATE)
val buattiket = session.edit()
buattiket.putString("id_user", id)
buattiket.putString("email_user", email)
buattiket.putString("password_user", password)
buattiket.putString("nama_user", nama)
buattiket.commit()

Ini membantu Anda untuk mengelola sesi pengguna di dalam aplikasi dan mengakses informasi pengguna di berbagai bagian aplikasi.

Kesimpulan

Dengan mengikuti langkah-langkah di atas, Anda dapat membuat fitur login yang berfungsi dalam aplikasi Android menggunakan Kotlin. Fitur login memungkinkan pengguna untuk mengakses layanan dan fitur aplikasi dengan identitas pengguna yang unik. Hal ini penting untuk menjaga keamanan dan konsistensi data pengguna di dalam aplikasi. Jangan lupa untuk mengimplementasikan perlindungan keamanan tambahan, seperti penggunaan HTTPS untuk koneksi jaringan yang aman dan penggunaan autentikasi dua faktor jika diperlukan.