Auth guard

This commit is contained in:
2024-02-08 04:40:56 +08:00
parent 886d362291
commit de12616109
5 changed files with 243 additions and 105 deletions

View File

@ -1,15 +1,33 @@
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:goatagent/auth.dart';
import 'package:goatagent/widgets/name_card.dart';
import 'package:oauth2/oauth2.dart' as oauth2;
import 'auth.dart';
class AccountScreen extends StatelessWidget {
const AccountScreen({super.key});
@override
Widget build(BuildContext context) {
return const Scaffold(
body: Center(
child: Text("你好"),
return Scaffold(
body: SafeArea(
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 5, horizontal: 20),
child: Column(
children: [
NameCard(
onLogin: () async {
await AuthGuard().login(context);
},
),
],
),
),
),
);
}
}
}

32
lib/screens/auth.dart Normal file
View File

@ -0,0 +1,32 @@
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
class AuthorizationPage extends StatelessWidget {
final Uri authorizationUrl;
const AuthorizationPage(this.authorizationUrl, {super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Connect with Goatpass'),
),
body: WebViewWidget(
controller: WebViewController()
..setJavaScriptMode(JavaScriptMode.unrestricted)
..setBackgroundColor(Colors.indigo)
..setNavigationDelegate(NavigationDelegate(
onNavigationRequest: (NavigationRequest request) {
if (request.url.startsWith('goatagent://auth')) {
Navigator.of(context).pop(request.url);
return NavigationDecision.prevent;
}
return NavigationDecision.navigate;
},
))
..loadRequest(authorizationUrl),
),
);
}
}