Skip to content

Commit bff4acf

Browse files
committed
Remember credentials
1 parent da75a56 commit bff4acf

8 files changed

Lines changed: 61 additions & 13 deletions

File tree

l10n/app_en.arb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
"login_communityParameters": "Community Parameters",
7878
"login_serverParameters": "Piwigo Parameters",
7979
"login_connectionChanged": "Connection Changed!",
80+
"login_rememberCredentials": "Remember credentials",
8081
"loginHTTP_title": "HTTP Credentials",
8182
"loginHTTP_message": "Basic access authentification is required by the Piwigo server:",
8283
"loginHTTP_enable": "Enable HTTP Basic",

l10n/app_fr.arb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
"login_communityParameters": "Paramètres Community",
4949
"login_serverParameters": "Paramètres Piwigo",
5050
"login_connectionChanged": "Connexion Modifiée !",
51+
"login_rememberCredentials": "Mémoriser les identifiants",
5152
"loginHTTP_title": "Identification HTTP",
5253
"loginHTTP_message": "L'authentification HTTP est requise par le serveur Piwigo:",
5354
"loginHTTP_enable": "Activer HTTP Basic",

lib/api/api_client.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class ApiClient {
2424
}
2525

2626
static bool piwigoSSLBypass(X509Certificate cert, String host, int port) {
27-
if (appPreferences.getBool(Preferences.enableSSLKey) ?? false) {
27+
if (Preferences.getEnableSSL) {
2828
return true;
2929
}
3030
return false;

lib/api/api_interceptor.dart

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,18 @@ import 'package:piwigo_ng/app.dart';
88
import 'package:piwigo_ng/components/snackbars.dart';
99
import 'package:piwigo_ng/services/preferences_service.dart';
1010
import 'package:piwigo_ng/utils/localizations.dart';
11-
import 'package:shared_preferences/shared_preferences.dart';
1211

1312
class ApiInterceptor extends Interceptor {
1413
@override
1514
void onRequest(
16-
RequestOptions options, RequestInterceptorHandler handler) async {
15+
RequestOptions options,
16+
RequestInterceptorHandler handler,
17+
) async {
1718
print("[${options.method}] ${options.queryParameters['method']}");
1819
FlutterSecureStorage secureStorage = const FlutterSecureStorage();
19-
SharedPreferences prefs = await SharedPreferences.getInstance();
2020
options.baseUrl =
2121
(await secureStorage.read(key: Preferences.serverUrlKey))!;
22-
if (prefs.getBool(Preferences.enableBasicAuthKey) ?? false) {
22+
if (Preferences.getEnableBasicAuth) {
2323
String? username =
2424
appPreferences.getString(Preferences.basicUsernameKey) ??
2525
await secureStorage.read(key: Preferences.usernameKey);
@@ -34,14 +34,20 @@ class ApiInterceptor extends Interceptor {
3434
}
3535

3636
@override
37-
void onResponse(Response response, ResponseInterceptorHandler handler) async {
37+
void onResponse(
38+
Response response,
39+
ResponseInterceptorHandler handler,
40+
) async {
3841
debugPrint(
3942
"[${response.statusCode}] ${response.requestOptions.queryParameters['method']}");
4043
return super.onResponse(response, handler);
4144
}
4245

4346
@override
44-
void onError(DioError err, ErrorInterceptorHandler handler) async {
47+
void onError(
48+
DioError err,
49+
ErrorInterceptorHandler handler,
50+
) async {
4551
debugPrint(
4652
"[${err.response?.statusCode}] ${err.requestOptions.queryParameters['method']}");
4753
debugPrint('${err.error}\n${err.stackTrace}');

lib/services/preferences_service.dart

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,26 @@ class Preferences {
2323
static const String accountUsernameKey = 'ACCOUNT_USERNAME';
2424
static const String userStatusKey = 'USER_STATUS';
2525

26+
static const String rememberCredentialsKey = 'REMEMBER_CREDENTIALS';
27+
28+
static bool get getRememberCredentials {
29+
return appPreferences.getBool(rememberCredentialsKey) ??
30+
Settings.defaultRememberCredentials;
31+
}
32+
2633
static const String enableSSLKey = 'ENABLE_SSL';
34+
35+
static bool get getEnableSSL {
36+
return appPreferences.getBool(enableSSLKey) ?? Settings.defaultEnableSSL;
37+
}
38+
2739
static const String enableBasicAuthKey = 'ENABLE_BASIC_AUTH';
40+
41+
static bool get getEnableBasicAuth {
42+
return appPreferences.getBool(enableBasicAuthKey) ??
43+
Settings.defaultEnableHTTPBasic;
44+
}
45+
2846
static const String basicUsernameKey = 'BASIC_USERNAME';
2947
static const String basicPasswordKey = 'BASIC_PASSWORD';
3048

lib/utils/settings.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,9 @@ class Settings {
104104
static const bool defaultDeleteAfterUpload = false;
105105
static const bool defaultWifiUpload = true;
106106
static const bool defaultShowThumbnailTitle = false;
107+
static const bool defaultRememberCredentials = true;
108+
static const bool defaultEnableSSL = false;
109+
static const bool defaultEnableHTTPBasic = false;
107110
static const int defaultImageRowCount = 4;
108111
static const int minImageRowCount = 1; // Settings slider min range
109112
static const int maxImageRowCount = 6; // Settings slider max range

lib/views/authentication/login_form_view.dart

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,13 @@ class _LoginFormViewState extends State<LoginFormView> {
5555
List<String> urlFields = url.split('://');
5656
_isSecured = urlFields.first == 'https';
5757
_url = urlFields.last.substring(0, urlFields.last.lastIndexOf('/'));
58-
_username = await storage.read(key: 'SERVER_USERNAME') ?? '';
59-
_password = await storage.read(key: 'SERVER_PASSWORD') ?? '';
6058
_urlController.text = _url;
61-
_usernameController.text = _username;
62-
_passwordController.text = _password;
59+
if (Preferences.getRememberCredentials) {
60+
_username = await storage.read(key: 'SERVER_USERNAME') ?? '';
61+
_password = await storage.read(key: 'SERVER_PASSWORD') ?? '';
62+
_usernameController.text = _username;
63+
_passwordController.text = _password;
64+
}
6365
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
6466
if (mounted) {
6567
bool isError = !_urlValidator(url);

lib/views/authentication/login_settings_page.dart

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,17 @@ class _LoginSettingsPageState extends State<LoginSettingsPage> {
1717
late String _basicAuthPassword;
1818
late bool _sslEnabled;
1919
late bool _basiAuth;
20+
late bool _rememberCredentials;
2021

2122
@override
2223
void initState() {
2324
_basicAuthUsername =
2425
appPreferences.getString(Preferences.basicUsernameKey) ?? '';
2526
_basicAuthPassword =
2627
appPreferences.getString(Preferences.basicPasswordKey) ?? '';
27-
_sslEnabled = appPreferences.getBool(Preferences.enableSSLKey) ?? false;
28-
_basiAuth = appPreferences.getBool(Preferences.enableBasicAuthKey) ?? false;
28+
_sslEnabled = Preferences.getEnableSSL;
29+
_basiAuth = Preferences.getEnableBasicAuth;
30+
_rememberCredentials = Preferences.getRememberCredentials;
2931
super.initState();
3032
}
3133

@@ -45,6 +47,21 @@ class _LoginSettingsPageState extends State<LoginSettingsPage> {
4547
vertical: 8.0,
4648
),
4749
children: [
50+
SettingsSection(
51+
children: [
52+
SettingsSectionItemSwitch(
53+
title: appStrings.login_rememberCredentials,
54+
value: _rememberCredentials,
55+
onChanged: (value) => setState(() {
56+
_rememberCredentials = value;
57+
appPreferences.setBool(
58+
Preferences.rememberCredentialsKey,
59+
value,
60+
);
61+
}),
62+
),
63+
],
64+
),
4865
SettingsSection(
4966
title: appStrings.loginCert_title,
5067
children: [

0 commit comments

Comments
 (0)