Resolves #59 Storing token in secure storage

This commit is contained in:
estevez-dev 2019-03-21 14:25:05 +02:00
parent b7d5a53e86
commit 5ebd25e0d1
4 changed files with 21 additions and 3 deletions

View File

@ -64,8 +64,15 @@ class HomeAssistant {
hostname = "$domain:$port";
_webSocketAPIEndpoint = "${prefs.getString('hassio-protocol')}://$domain:$port/api/websocket";
httpWebHost = "${prefs.getString('hassio-res-protocol')}://$domain:$port";
//_password = prefs.getString('hassio-password');
_token = prefs.getString('hassio-token');
final storage = new FlutterSecureStorage();
try {
_token = await storage.read(key: "hacl_llt");
} catch (e) {
Logger.e("Cannt read secure storage. Need to relogin.");
_token = null;
await storage.delete(key: "hacl_llt");
}
_useLovelace = prefs.getBool('use-lovelace') ?? true;
if ((domain == null) || (port == null) ||
(domain.length == 0) || (port.length == 0)) {
@ -269,7 +276,8 @@ class HomeAssistant {
Logger.d("Logging out...");
_token = null;
_tempToken = null;
await SharedPreferences.getInstance().then((prefs) => prefs.remove("hassio-token"));
final storage = new FlutterSecureStorage();
await storage.delete(key: "hacl_llt");
ui?.clear();
entities?.clear();
}
@ -294,7 +302,8 @@ class HomeAssistant {
Logger.d("Got long-lived token: ${data['result']}");
_token = data['result'];
_tempToken = null;
SharedPreferences.getInstance().then((prefs) => prefs.setString("hassio-token", _token));
final storage = new FlutterSecureStorage();
storage.write(key: "hacl_llt", value: _token);
} else {
logout();
Logger.e("Error getting long-lived token: ${data['error'].toString()}");

View File

@ -19,6 +19,7 @@ import 'package:flutter_svg/flutter_svg.dart';
import 'package:flutter_custom_tabs/flutter_custom_tabs.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
part 'entity_class/const.dart';
part 'entity_class/entity.class.dart';

View File

@ -141,6 +141,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.0"
flutter_secure_storage:
dependency: "direct main"
description:
name: flutter_secure_storage
url: "https://pub.dartlang.org"
source: hosted
version: "3.2.0"
flutter_svg:
dependency: "direct main"
description:

View File

@ -22,6 +22,7 @@ dependencies:
flutter_custom_tabs: ^0.6.0
firebase_messaging: ^4.0.0+1
flutter_webview_plugin: ^0.3.1
flutter_secure_storage: ^3.2.0
dev_dependencies:
flutter_test: