68 lines
2.1 KiB
Dart
68 lines
2.1 KiB
Dart
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
|
|
|
|
const _kBase = 'odoo_base';
|
|
const _kDb = 'odoo_db';
|
|
const _kUser = 'odoo_user';
|
|
const _kPass = 'odoo_pass';
|
|
const _kUid = 'odoo_uid';
|
|
|
|
/// Menyimpan konfigurasi login (url, db, user, password) secara aman
|
|
/// + menyediakan OdooClient terautentikasi.
|
|
class Session {
|
|
static const _storage = FlutterSecureStorage();
|
|
|
|
static Future<void> saveUid(int uid) async {
|
|
await _storage.write(key: _kUid, value: uid.toString());
|
|
}
|
|
|
|
static Future<void> save(String baseUrl, String db, String user, String pass) async {
|
|
await _storage.write(key: _kBase, value: baseUrl);
|
|
await _storage.write(key: _kDb, value: db);
|
|
await _storage.write(key: _kUser, value: user);
|
|
await _storage.write(key: _kPass, value: pass);
|
|
}
|
|
|
|
static Future<({String base, String db, String user, String pass})?> load() async {
|
|
final base = await _storage.read(key: _kBase);
|
|
final db = await _storage.read(key: _kDb);
|
|
final user = await _storage.read(key: _kUser);
|
|
final pass = await _storage.read(key: _kPass);
|
|
if (base == null || user == null || pass == null) return null;
|
|
return (base: base, db: db ?? 'odoo', user: user, pass: pass);
|
|
}
|
|
|
|
static Future<void> clear() async {
|
|
// Hapus sesi (user & pass), tapi sisakan URL (_kBase) agar login berikutnya mudah
|
|
await _storage.delete(key: _kUser);
|
|
await _storage.delete(key: _kPass);
|
|
}
|
|
|
|
static Future<String?> readLastUrl() async {
|
|
return _storage.read(key: _kBase);
|
|
}
|
|
|
|
static Future<String> readBase() async {
|
|
final base = await _storage.read(key: _kBase);
|
|
if (base == null) throw Exception('URL tidak ditemukan');
|
|
return base;
|
|
}
|
|
|
|
static Future<String?> readDb() async {
|
|
return _storage.read(key: _kDb);
|
|
}
|
|
|
|
static Future<String?> readUser() async {
|
|
return _storage.read(key: _kUser);
|
|
}
|
|
|
|
static Future<String?> readPass() async {
|
|
return _storage.read(key: _kPass);
|
|
}
|
|
|
|
static Future<int?> readUid() async {
|
|
final uid = await _storage.read(key: _kUid);
|
|
if (uid == null) return null;
|
|
return int.tryParse(uid);
|
|
}
|
|
}
|