diff --git a/lib/screens/MediaGrid.dart b/lib/screens/MediaGrid.dart index 802800b..e4cf3ac 100644 --- a/lib/screens/MediaGrid.dart +++ b/lib/screens/MediaGrid.dart @@ -1,3 +1,4 @@ +import 'package:f0ckapp/services/Api.dart'; import 'package:flutter/material.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:provider/provider.dart'; @@ -44,6 +45,9 @@ class _MediaGridState extends State { final provider = Provider.of(context); final GlobalKey scaffoldKey = GlobalKey(); + final TextEditingController _usernameController = TextEditingController(); + final TextEditingController _passwordController = TextEditingController(); + return Scaffold( key: scaffoldKey, appBar: AppBar( @@ -129,6 +133,53 @@ class _MediaGridState extends State { ), child: null, ), + ExpansionTile( + title: Text('Login'), + children: [ + Padding( + padding: EdgeInsets.all(16.0), + child: Column( + children: [ + TextField( + readOnly: true, + controller: _usernameController, + decoration: InputDecoration(labelText: 'Benutzername'), + ), + SizedBox(height: 10), + TextField( + readOnly: true, + controller: _passwordController, + obscureText: true, + decoration: InputDecoration(labelText: 'Passwort'), + ), + SizedBox(height: 20), + ElevatedButton( + onPressed: () async { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text("noch nicht implementiert lol"), + ), + ); + /*final success = await login( + _usernameController.text, + _passwordController.text, + ); + + if (success) { + Navigator.pop(context); + } else { + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text("Login fehlgeschlagen!")), + ); + }*/ + }, + child: Text('Login'), + ), + ], + ), + ), + ], + ), ListTile( title: Text('v${AppVersion.version}'), onTap: () { diff --git a/lib/services/Api.dart b/lib/services/Api.dart index 66c6eed..2ca0157 100644 --- a/lib/services/Api.dart +++ b/lib/services/Api.dart @@ -1,8 +1,11 @@ import 'dart:convert'; import 'package:http/http.dart' as http; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:f0ckapp/models/MediaItem.dart'; +final storage = FlutterSecureStorage(); + Future> fetchMedia({ int? older, String? type, @@ -43,3 +46,21 @@ Future fetchMediaDetail(int itemId) async { ); } } + +Future login(String username, String password) async { + final response = await http.post( + Uri.parse('https://api.f0ck.me/login'), + body: {'username': username, 'password': password}, + ); + + if (response.statusCode == 200) { + final data = jsonDecode(response.body); + final token = data['token']; + + await storage.write(key: "token", value: token); + + return true; + } else { + return false; + } +} \ No newline at end of file diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index f6f23bf..38dd0bc 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -6,9 +6,13 @@ #include "generated_plugin_registrant.h" +#include #include void fl_register_plugins(FlPluginRegistry* registry) { + g_autoptr(FlPluginRegistrar) flutter_secure_storage_linux_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "FlutterSecureStorageLinuxPlugin"); + flutter_secure_storage_linux_plugin_register_with_registrar(flutter_secure_storage_linux_registrar); g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index f16b4c3..65240e9 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + flutter_secure_storage_linux url_launcher_linux ) diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index d27e310..54f20d4 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,6 +5,7 @@ import FlutterMacOS import Foundation +import flutter_secure_storage_macos import package_info_plus import path_provider_foundation import share_plus @@ -12,6 +13,7 @@ import sqflite_darwin import video_player_avfoundation func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin")) diff --git a/pubspec.lock b/pubspec.lock index 85ee66d..28e34b5 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -158,6 +158,54 @@ packages: url: "https://pub.dev" source: hosted version: "6.0.0" + flutter_secure_storage: + dependency: "direct main" + description: + name: flutter_secure_storage + sha256: "9cad52d75ebc511adfae3d447d5d13da15a55a92c9410e50f67335b6d21d16ea" + url: "https://pub.dev" + source: hosted + version: "9.2.4" + flutter_secure_storage_linux: + dependency: transitive + description: + name: flutter_secure_storage_linux + sha256: be76c1d24a97d0b98f8b54bce6b481a380a6590df992d0098f868ad54dc8f688 + url: "https://pub.dev" + source: hosted + version: "1.2.3" + flutter_secure_storage_macos: + dependency: transitive + description: + name: flutter_secure_storage_macos + sha256: "6c0a2795a2d1de26ae202a0d78527d163f4acbb11cde4c75c670f3a0fc064247" + url: "https://pub.dev" + source: hosted + version: "3.1.3" + flutter_secure_storage_platform_interface: + dependency: transitive + description: + name: flutter_secure_storage_platform_interface + sha256: cf91ad32ce5adef6fba4d736a542baca9daf3beac4db2d04be350b87f69ac4a8 + url: "https://pub.dev" + source: hosted + version: "1.1.2" + flutter_secure_storage_web: + dependency: transitive + description: + name: flutter_secure_storage_web + sha256: f4ebff989b4f07b2656fb16b47852c0aab9fed9b4ec1c70103368337bc1886a9 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + flutter_secure_storage_windows: + dependency: transitive + description: + name: flutter_secure_storage_windows + sha256: b20b07cb5ed4ed74fc567b78a72936203f587eba460af1df11281c9326cd3709 + url: "https://pub.dev" + source: hosted + version: "3.1.2" flutter_test: dependency: "direct dev" description: flutter @@ -208,6 +256,14 @@ packages: url: "https://pub.dev" source: hosted version: "4.1.2" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" leak_tracker: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 266b540..b914dcc 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. -version: 1.1.1+31 +version: 1.1.1+32 environment: sdk: ^3.9.0-100.2.beta @@ -40,6 +40,7 @@ dependencies: provider: ^6.1.5 package_info_plus: ^8.3.0 share_plus: ^11.0.0 + flutter_secure_storage: ^9.2.4 dev_dependencies: flutter_test: diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index c3384ec..be05421 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,10 +6,13 @@ #include "generated_plugin_registrant.h" +#include #include #include void RegisterPlugins(flutter::PluginRegistry* registry) { + FlutterSecureStorageWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); SharePlusWindowsPluginCApiRegisterWithRegistrar( registry->GetRegistrarForPlugin("SharePlusWindowsPluginCApi")); UrlLauncherWindowsRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 01d3836..7b6e42f 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + flutter_secure_storage_windows share_plus url_launcher_windows )