Added profile screen with API interaction, better .env usage

This commit is contained in:
2025-05-15 23:37:39 +02:00
parent 867b617a41
commit e4e8c7ea21
7 changed files with 215 additions and 48 deletions

View File

@@ -2,21 +2,21 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_appauth/flutter_appauth.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:swifty/methods/api.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
const FlutterAppAuth _appAuth = FlutterAppAuth();
Future<void> redirect_to_oauth(BuildContext context) async {
final String _clientId = "CLIENT TODO";
final String _clientSecret = "SECRET TODO";
final String _redirectUrl = 'swifty-companion://oauth2/callback';
final String _authorizationEndpoint = 'https://api.intra.42.fr/oauth/authorize';
final String _tokenEndpoint = 'https://api.intra.42.fr/oauth/token';
String _clientId = dotenv.get('CLIENT-ID');
String _clientSecret = dotenv.get('CLIENT-SECRET');
const String _redirectUrl = 'swifty-companion://oauth2/callback';
const String _authorizationEndpoint = 'https://api.intra.42.fr/oauth/authorize';
const String _tokenEndpoint = 'https://api.intra.42.fr/oauth/token';
final request = AuthorizationRequest(
_clientId,
_redirectUrl,
serviceConfiguration: AuthorizationServiceConfiguration(
serviceConfiguration: const AuthorizationServiceConfiguration(
authorizationEndpoint: _authorizationEndpoint,
tokenEndpoint: _tokenEndpoint,
));
@@ -29,7 +29,7 @@ Future<void> redirect_to_oauth(BuildContext context) async {
clientSecret: _clientSecret,
authorizationCode: result.authorizationCode,
grantType: 'authorization_code',
serviceConfiguration: AuthorizationServiceConfiguration(
serviceConfiguration: const AuthorizationServiceConfiguration(
authorizationEndpoint: "https://api.intra.42.fr/oauth/authorize",
tokenEndpoint: _tokenEndpoint,
),
@@ -53,13 +53,22 @@ class LoginScreen extends StatelessWidget {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Login")),
body: Center(
child: ElevatedButton(
onPressed: () {
redirect_to_oauth(context);
},
child: const Text('Login'),
),
body: Stack(
fit: StackFit.expand,
children: [
Image.asset(
'assets/images/cluster-photo-00.jpg',
fit: BoxFit.cover,
),
Center(
child: ElevatedButton(
onPressed: () {
redirect_to_oauth(context);
},
child: const Text('Login into 42 API'),
),
),
],
),
);
}