Membuat Sistem Login Sederhana dengan Google Spreadsheet — Autentikasi Web App
Sistem Login dengan Spreadsheet
Meskipun Google Spreadsheet bukan database yang paling aman, Anda tetap bisa membuat sistem login sederhana untuk web app internal atau prototipe. Sistem ini menggunakan spreadsheet sebagai tempat penyimpanan username dan password (dengan hash sederhana). Cocok untuk: admin panel sederhana, portal anggota, dan aplikasi internal tim.
Struktur Spreadsheet User
Buat sheet bernama "Users" dengan kolom: ID, Username, Password (hashed), Nama Lengkap, Email, Role, Tanggal Daftar.
Kode Apps Script untuk Login
// Fungsi hash sederhana (untuk prototipe, gunakan bcrypt untuk production)
function simpleHash(str) {
var hash = 0;
for (var i = 0; i < str.length; i++) {
var char = str.charCodeAt(i);
hash = ((hash << 5) - hash) + char;
hash = hash & hash; // Convert ke 32bit integer
}
return Math.abs(hash).toString(16);
}
// Login
function doPost(e) {
var data = JSON.parse(e.postData.contents);
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Users");
var users = sheet.getDataRange().getValues();
var headers = users[0];
for (var i = 1; i < users.length; i++) {
if (users[i][1] === data.username && users[i][2] === simpleHash(data.password)) {
return ContentService.createTextOutput(JSON.stringify({
success: true,
user: {
id: users[i][0],
username: users[i][1],
nama: users[i][3],
email: users[i][4],
role: users[i][5]
},
token: simpleHash(data.username + ":" + new Date().getTime())
})).setMimeType(ContentService.MimeType.JSON);
}
}
return ContentService.createTextOutput(JSON.stringify({
success: false,
message: "Username atau password salah"
})).setMimeType(ContentService.MimeType.JSON);
}
// Registrasi
function doPut(e) {
var data = JSON.parse(e.postData.contents);
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Users");
var users = sheet.getDataRange().getValues();
// Cek duplikasi
for (var i = 1; i < users.length; i++) {
if (users[i][1] === data.username) {
return ContentService.createTextOutput(JSON.stringify({
success: false,
message: "Username sudah digunakan"
})).setMimeType(ContentService.MimeType.JSON);
}
}
sheet.appendRow([
users.length,
data.username,
simpleHash(data.password),
data.nama,
data.email,
"user",
new Date().toLocaleDateString('id-ID')
]);
return ContentService.createTextOutput(JSON.stringify({
success: true,
message: "Registrasi berhasil!"
})).setMimeType(ContentService.MimeType.JSON);
}
Implementasi di Frontend
<div id="loginForm">
<h2>Login</h2>
<input type="text" id="username" placeholder="Username">
<input type="password" id="password" placeholder="Password">
<button onclick="login()">Masuk</button>
<p>Belum punya akun? <a href="#" onclick="showRegister()">Daftar</a></p>
</div>
<script>
var API_URL = "URL_APP_SCRIPT";
function login() {
fetch(API_URL + "?action=login", {
method: 'POST',
body: JSON.stringify({
username: document.getElementById('username').value,
password: document.getElementById('password').value
})
})
.then(r => r.json())
.then(res => {
if (res.success) {
localStorage.setItem('user', JSON.stringify(res.user));
localStorage.setItem('token', res.token);
window.location.href = "dashboard.html";
} else {
alert(res.message);
}
});
}
</script>
Tips Keamanan
- Hash Password: Gunakan fungsi hash yang lebih kuat seperti SHA-256 untuk production.
- HTTPS: Pastikan web app diakses melalui HTTPS (Blogger sudah menyediakan HTTPS).
- Session Token: Gunakan token dengan expiry time untuk mencegah replay attack.
- Rate Limiting: Batasi percobaan login (misal: max 5 kali dalam 10 menit).
- Spreadsheet Privat: Jangan bagikan spreadsheet ke publik — hanya akses melalui script.
Kesimpulan
Sistem login dengan Google Spreadsheet adalah solusi cepat untuk prototipe dan aplikasi internal. Untuk aplikasi production dengan data sensitif, gunakan database dedicated dan autentikasi yang lebih aman. Spreadsheet cocok untuk: admin panel sederhana, portal berita, dan aplikasi komunitas skala kecil.
Tutorial Sistem Login Google Spreadsheet & Apps Script — Web App Builder Collection
Post a Comment for "Membuat Sistem Login Sederhana dengan Google Spreadsheet — Autentikasi Web App"
Tuliskan masukan atau komentar yang baik-baik saja, hindari menghujat sesama