From 1570a5e6fb9f09a4a66cd5932fb673197a57732f Mon Sep 17 00:00:00 2001 From: Silfalion Date: Mon, 13 Dec 2021 09:54:15 +0100 Subject: [PATCH 1/6] modification for flutter web auth 0.4.0 --- .../flutter/lib/services/service.dart.twig | 8 ++---- .../flutter/lib/src/client_browser.dart.twig | 26 +++++++++++++++++-- templates/flutter/pubspec.yaml.twig | 2 +- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/templates/flutter/lib/services/service.dart.twig b/templates/flutter/lib/services/service.dart.twig index f4cba41b7..935146546 100644 --- a/templates/flutter/lib/services/service.dart.twig +++ b/templates/flutter/lib/services/service.dart.twig @@ -60,12 +60,8 @@ class {{ service.name | caseUcfirst }} extends Service { query: query.join('&') ); - if(kIsWeb) { - redirect(url.toString()); - return Future.value(); - }else{ - return client.webAuth(url); - } + + return client.webAuth(url); {% elseif method.type == 'location' %} params.keys.forEach((key) {if (params[key] is int || params[key] is double) { diff --git a/templates/flutter/lib/src/client_browser.dart.twig b/templates/flutter/lib/src/client_browser.dart.twig index c2cc26bd0..f13f470ac 100644 --- a/templates/flutter/lib/src/client_browser.dart.twig +++ b/templates/flutter/lib/src/client_browser.dart.twig @@ -1,4 +1,7 @@ import 'dart:html' as html; +import 'dart:io'; +import 'package:cookie_jar/cookie_jar.dart'; +import 'package:flutter_web_auth/flutter_web_auth.dart'; import 'package:http/http.dart' as http; import 'package:http/browser_client.dart'; import 'client_mixin.dart'; @@ -19,6 +22,8 @@ class ClientBrowser extends ClientBase with ClientMixin { Map? _headers; late Map config; late BrowserClient _httpClient; + late CookieJar _cookieJar; + String? _endPointRealtime; String? get endPointRealtime => _endPointRealtime; @@ -128,6 +133,23 @@ class ClientBrowser extends ClientBase with ClientMixin { @override Future webAuth(Uri url) { - throw UnimplementedError(); - } + return FlutterWebAuth.authenticate( + url: url.toString(), + callbackUrlScheme: "appwrite-callback-" + config['project']!, + ).then((value) async { + Uri url = Uri.parse(value); + final key = url.queryParameters['key']; + final secret = url.queryParameters['secret']; + if (key == null || secret == null) { + throw AppwriteException( + "Invalid OAuth2 Response. Key and Secret not available.", 500); + } + Cookie cookie = new Cookie(key, secret); + cookie.domain = Uri.parse(_endPoint).host; + cookie.httpOnly = true; + cookie.path = '/'; + List cookies = [cookie]; + await init(); + _cookieJar.saveFromResponse(Uri.parse(_endPoint), cookies); + }); } } diff --git a/templates/flutter/pubspec.yaml.twig b/templates/flutter/pubspec.yaml.twig index 3977e8513..ffb3f5313 100644 --- a/templates/flutter/pubspec.yaml.twig +++ b/templates/flutter/pubspec.yaml.twig @@ -12,7 +12,7 @@ dependencies: sdk: flutter cookie_jar: ^3.0.1 device_info_plus: ^2.1.0 - flutter_web_auth: ^0.3.0 + flutter_web_auth: ^0.4.0 http: ^0.13.3 package_info_plus: ^1.0.4 path_provider: ^2.0.2 From 5c2bc19015b0110823c7245c27427ed594462a8a Mon Sep 17 00:00:00 2001 From: Silfalion Date: Mon, 13 Dec 2021 13:18:22 +0100 Subject: [PATCH 2/6] removed cookie jar updated pubspec yaml for conflicts --- templates/flutter/lib/src/client_browser.dart.twig | 9 --------- templates/flutter/pubspec.yaml.twig | 10 +++++----- 2 files changed, 5 insertions(+), 14 deletions(-) diff --git a/templates/flutter/lib/src/client_browser.dart.twig b/templates/flutter/lib/src/client_browser.dart.twig index f13f470ac..616a691c1 100644 --- a/templates/flutter/lib/src/client_browser.dart.twig +++ b/templates/flutter/lib/src/client_browser.dart.twig @@ -1,5 +1,4 @@ import 'dart:html' as html; -import 'dart:io'; import 'package:cookie_jar/cookie_jar.dart'; import 'package:flutter_web_auth/flutter_web_auth.dart'; import 'package:http/http.dart' as http; @@ -22,7 +21,6 @@ class ClientBrowser extends ClientBase with ClientMixin { Map? _headers; late Map config; late BrowserClient _httpClient; - late CookieJar _cookieJar; String? _endPointRealtime; @@ -144,12 +142,5 @@ class ClientBrowser extends ClientBase with ClientMixin { throw AppwriteException( "Invalid OAuth2 Response. Key and Secret not available.", 500); } - Cookie cookie = new Cookie(key, secret); - cookie.domain = Uri.parse(_endPoint).host; - cookie.httpOnly = true; - cookie.path = '/'; - List cookies = [cookie]; - await init(); - _cookieJar.saveFromResponse(Uri.parse(_endPoint), cookies); }); } } diff --git a/templates/flutter/pubspec.yaml.twig b/templates/flutter/pubspec.yaml.twig index ffb3f5313..257f0d187 100644 --- a/templates/flutter/pubspec.yaml.twig +++ b/templates/flutter/pubspec.yaml.twig @@ -6,16 +6,16 @@ repository: https://github.com/{{sdk.gitUserName}}/{{sdk.gitRepoName}} issue_tracker: https://github.com/appwrite/sdk-generator/issues documentation: {{ spec.contactURL }} environment: - sdk: '>=2.12.0 <3.0.0' + sdk: '>=2.14.0 <3.0.0' dependencies: flutter: sdk: flutter cookie_jar: ^3.0.1 - device_info_plus: ^2.1.0 + device_info_plus: ^3.1.1 flutter_web_auth: ^0.4.0 - http: ^0.13.3 - package_info_plus: ^1.0.4 - path_provider: ^2.0.2 + http: ^0.13.4 + package_info_plus: ^1.3.0 + path_provider: ^2.0.7 web_socket_channel: ^2.1.0 dev_dependencies: From ea4c33c4607d9954104eb2bf8a9cb976d86e0e02 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 15 Dec 2021 12:12:36 +0545 Subject: [PATCH 3/6] Update templates/flutter/lib/services/service.dart.twig --- templates/flutter/lib/services/service.dart.twig | 1 - 1 file changed, 1 deletion(-) diff --git a/templates/flutter/lib/services/service.dart.twig b/templates/flutter/lib/services/service.dart.twig index 19635f331..c6165b673 100644 --- a/templates/flutter/lib/services/service.dart.twig +++ b/templates/flutter/lib/services/service.dart.twig @@ -59,7 +59,6 @@ class {{ service.name | caseUcfirst }} extends Service { query: query.join('&') ); - return client.webAuth(url); {% elseif method.type == 'location' %} From 78fc2cb35d58aebc54ad6c338d1c32aeddbed937 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 15 Dec 2021 12:12:50 +0545 Subject: [PATCH 4/6] Update templates/flutter/lib/src/client_browser.dart.twig --- templates/flutter/lib/src/client_browser.dart.twig | 1 - 1 file changed, 1 deletion(-) diff --git a/templates/flutter/lib/src/client_browser.dart.twig b/templates/flutter/lib/src/client_browser.dart.twig index 616a691c1..1158e099d 100644 --- a/templates/flutter/lib/src/client_browser.dart.twig +++ b/templates/flutter/lib/src/client_browser.dart.twig @@ -21,7 +21,6 @@ class ClientBrowser extends ClientBase with ClientMixin { Map? _headers; late Map config; late BrowserClient _httpClient; - String? _endPointRealtime; String? get endPointRealtime => _endPointRealtime; From 2b58ce70adf921eff4ae5fe879f187ff02aee666 Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Wed, 15 Dec 2021 12:15:23 +0545 Subject: [PATCH 5/6] Update templates/flutter/pubspec.yaml.twig --- templates/flutter/pubspec.yaml.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/flutter/pubspec.yaml.twig b/templates/flutter/pubspec.yaml.twig index 257f0d187..0c6796858 100644 --- a/templates/flutter/pubspec.yaml.twig +++ b/templates/flutter/pubspec.yaml.twig @@ -15,7 +15,7 @@ dependencies: flutter_web_auth: ^0.4.0 http: ^0.13.4 package_info_plus: ^1.3.0 - path_provider: ^2.0.7 + path_provider: ^2.0.8 web_socket_channel: ^2.1.0 dev_dependencies: From c4e25235943e3378a1b72afc4bb6de18c9edcf3c Mon Sep 17 00:00:00 2001 From: Damodar Lohani Date: Thu, 16 Dec 2021 15:24:29 +0545 Subject: [PATCH 6/6] Update templates/flutter/lib/src/client_browser.dart.twig --- templates/flutter/lib/src/client_browser.dart.twig | 1 - 1 file changed, 1 deletion(-) diff --git a/templates/flutter/lib/src/client_browser.dart.twig b/templates/flutter/lib/src/client_browser.dart.twig index 1158e099d..f9e5f42fa 100644 --- a/templates/flutter/lib/src/client_browser.dart.twig +++ b/templates/flutter/lib/src/client_browser.dart.twig @@ -1,5 +1,4 @@ import 'dart:html' as html; -import 'package:cookie_jar/cookie_jar.dart'; import 'package:flutter_web_auth/flutter_web_auth.dart'; import 'package:http/http.dart' as http; import 'package:http/browser_client.dart';