forked from firka/firka
reauth: autofill username & schoolId
This commit is contained in:
@@ -52,6 +52,9 @@ class KretaEndpoints {
|
||||
static String kretaIdp = "https://idp.e-kreta.hu";
|
||||
static String kretaLoginUrl =
|
||||
"$kretaIdp/Account/Login?ReturnUrl=%2Fconnect%2Fauthorize%2Fcallback%3Fredirect_uri%3Dhttps%253A%252F%252Fmobil.e-kreta.hu%252Fellenorzo-student%252Fprod%252Foauthredirect%26client_id%3Dkreta-ellenorzo-student-mobile-android%26response_type%3Dcode%26prompt%3Dlogin%26state%3DaOPUjQU3sXBVRjQQkmYT8g%26nonce%3D3qtS0kDcaHIUGkkEcL1-5g%26scope%3Dopenid%2520email%2520offline_access%2520kreta-ellenorzo-webapi.public%2520kreta-eugyintezes-webapi.public%2520kreta-fileservice-webapi.public%2520kreta-mobile-global-webapi.public%2520kreta-dkt-webapi.public%2520kreta-ier-webapi.public%26code_challenge%3D$_codeChallenge%26code_challenge_method%3DS256%26suppressed_prompt%3Dlogin";
|
||||
|
||||
static String kretaLoginUrlRefresh(String username, String schoolId) =>
|
||||
"$kretaIdp/Account/Login?ReturnUrl=%2Fconnect%2Fauthorize%2Fcallback%3Fredirect_uri%3Dhttps%253A%252F%252Fmobil.e-kreta.hu%252Fellenorzo-student%252Fprod%252Foauthredirect%26client_id%3Dkreta-ellenorzo-student-mobile-android%26response_type%3Dcode%26login_hint%3D$username%26prompt%3Dlogin%26state%3DaOPUjQU3sXBVRjQQkmYT8g%26nonce%3D3qtS0kDcaHIUGkkEcL1-5g%26scope%3Dopenid%2520email%2520offline_access%2520kreta-ellenorzo-webapi.public%2520kreta-eugyintezes-webapi.public%2520kreta-fileservice-webapi.public%2520kreta-mobile-global-webapi.public%2520kreta-dkt-webapi.public%2520kreta-ier-webapi.public%26code_challenge%3D$_codeChallenge%26code_challenge_method%3DS256%26institute_code%3D$schoolId%26suppressed_prompt%3Dlogin";
|
||||
static String tokenGrantUrl = "$kretaIdp/connect/token";
|
||||
|
||||
static String getStudentUrl(String iss) =>
|
||||
|
||||
@@ -12,6 +12,7 @@ import 'package:firka/ui/phone/pages/home/home_main.dart';
|
||||
import 'package:firka/ui/phone/pages/home/home_timetable_mo.dart';
|
||||
import 'package:firka/ui/phone/screens/home/beta_screen.dart';
|
||||
import 'package:firka/ui/phone/widgets/bottom_nav_icon.dart';
|
||||
import 'package:firka/ui/phone/widgets/login_webview.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
@@ -20,13 +21,11 @@ import 'package:majesticons_flutter/majesticons_flutter.dart';
|
||||
|
||||
import '../../../../helpers/db/widget.dart';
|
||||
import '../../../../helpers/debug_helper.dart';
|
||||
import '../../../../helpers/firka_bundle.dart';
|
||||
import '../../../widget/firka_icon.dart';
|
||||
import '../../pages/extras/extras.dart';
|
||||
import '../../pages/extras/main_error.dart';
|
||||
import '../../pages/home/home_grades_subject.dart';
|
||||
import '../../pages/home/home_timetable.dart';
|
||||
import '../login/login_screen.dart';
|
||||
|
||||
class HomeScreen extends StatefulWidget {
|
||||
final AppInitialization data;
|
||||
@@ -127,12 +126,16 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||
),
|
||||
),
|
||||
onTap: () {
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) => DefaultAssetBundle(
|
||||
bundle: FirkaBundle(),
|
||||
child: LoginScreen(widget.data))));
|
||||
showModalBottomSheet<void>(
|
||||
context: context,
|
||||
isScrollControlled: true,
|
||||
builder: (BuildContext context) {
|
||||
return LoginWebviewWidget(widget.data,
|
||||
username:
|
||||
widget.data.client.model.studentId.toString(),
|
||||
schoolId: widget.data.client.model.iss!);
|
||||
},
|
||||
);
|
||||
},
|
||||
),
|
||||
),
|
||||
|
||||
@@ -11,8 +11,11 @@ import '../screens/home/home_screen.dart';
|
||||
|
||||
class LoginWebviewWidget extends StatefulWidget {
|
||||
final AppInitialization data;
|
||||
final String? username;
|
||||
final String? schoolId;
|
||||
|
||||
const LoginWebviewWidget(this.data);
|
||||
const LoginWebviewWidget(this.data,
|
||||
{super.key, this.username, this.schoolId});
|
||||
|
||||
@override
|
||||
State<LoginWebviewWidget> createState() => _LoginWebviewWidgetState();
|
||||
@@ -25,10 +28,17 @@ class _LoginWebviewWidgetState extends State<LoginWebviewWidget> {
|
||||
void initState() {
|
||||
super.initState();
|
||||
|
||||
var loginUrl = KretaEndpoints.kretaLoginUrl;
|
||||
|
||||
if (widget.username != null && widget.schoolId != null) {
|
||||
loginUrl = KretaEndpoints.kretaLoginUrlRefresh(
|
||||
widget.username!, widget.schoolId!);
|
||||
}
|
||||
|
||||
_webViewController = WebViewController()
|
||||
..setUserAgent(Constants.webviewUserAgent)
|
||||
..setJavaScriptMode(JavaScriptMode.unrestricted)
|
||||
..loadRequest(Uri.parse(KretaEndpoints.kretaLoginUrl))
|
||||
..loadRequest(Uri.parse(loginUrl))
|
||||
..setNavigationDelegate(NavigationDelegate(
|
||||
onNavigationRequest: (NavigationRequest request) async {
|
||||
var uri = Uri.parse(request.url);
|
||||
|
||||
Reference in New Issue
Block a user