forked from firka/student-legacy
made kreten web login work hah
This commit is contained in:
parent
4128018a59
commit
148a43663c
@ -31,6 +31,7 @@ import 'package:provider/provider.dart';
|
|||||||
import 'package:refilc_mobile_ui/common/system_chrome.dart' as mobile;
|
import 'package:refilc_mobile_ui/common/system_chrome.dart' as mobile;
|
||||||
import 'package:refilc_mobile_ui/screens/login/login_route.dart' as mobile;
|
import 'package:refilc_mobile_ui/screens/login/login_route.dart' as mobile;
|
||||||
import 'package:refilc_mobile_ui/screens/login/login_screen.dart' as mobile;
|
import 'package:refilc_mobile_ui/screens/login/login_screen.dart' as mobile;
|
||||||
|
// import 'package:refilc_mobile_ui/screens/login/kreten_login.dart' as mobileTest;
|
||||||
import 'package:refilc_mobile_ui/screens/navigation/navigation_screen.dart'
|
import 'package:refilc_mobile_ui/screens/navigation/navigation_screen.dart'
|
||||||
as mobile;
|
as mobile;
|
||||||
import 'package:refilc_mobile_ui/screens/settings/settings_route.dart'
|
import 'package:refilc_mobile_ui/screens/settings/settings_route.dart'
|
||||||
@ -261,7 +262,7 @@ class App extends StatelessWidget {
|
|||||||
switch (route.name) {
|
switch (route.name) {
|
||||||
case "login_back":
|
case "login_back":
|
||||||
return CupertinoPageRoute(
|
return CupertinoPageRoute(
|
||||||
builder: (context) => const mobile.LoginScreen(back: true));
|
builder: (context) => const mobile.LoginScreen());
|
||||||
case "login":
|
case "login":
|
||||||
return _rootRoute(const mobile.LoginScreen());
|
return _rootRoute(const mobile.LoginScreen());
|
||||||
case "navigation":
|
case "navigation":
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
// ignore_for_file: use_build_context_synchronously
|
||||||
|
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
@ -34,7 +36,7 @@ class _KretenLoginScreenState extends State<KretenLoginScreen> {
|
|||||||
'https://mobil.e-kreta.hu/ellenorzo-student/prod/oauthredirect?code=',
|
'https://mobil.e-kreta.hu/ellenorzo-student/prod/oauthredirect?code=',
|
||||||
'')
|
'')
|
||||||
.replaceAll(
|
.replaceAll(
|
||||||
'&scope=openid email offline_access kreta-ellenorzo-webapi.public kreta-eugyintezes-webapi.public kreta-fileservice-webapi.public kreta-mobile-global-webapi.public kreta-dkt-webapi.public kreta-ier-webapi.public&state=refilc_student_mobile&session_state=',
|
'&scope=openid%20email%20offline_access%20kreta-ellenorzo-webapi.public%20kreta-eugyintezes-webapi.public%20kreta-fileservice-webapi.public%20kreta-mobile-global-webapi.public%20kreta-dkt-webapi.public%20kreta-ier-webapi.public&state=refilc_student_mobile&session_state=',
|
||||||
':')
|
':')
|
||||||
.split(':');
|
.split(':');
|
||||||
|
|
||||||
@ -43,97 +45,104 @@ class _KretenLoginScreenState extends State<KretenLoginScreen> {
|
|||||||
|
|
||||||
debugPrint('url: $url');
|
debugPrint('url: $url');
|
||||||
|
|
||||||
|
print(code);
|
||||||
|
|
||||||
// actual login (token grant) logic
|
// actual login (token grant) logic
|
||||||
Map<String, String> headers = {
|
Map<String, String> headers = {
|
||||||
"content-type": "application/x-www-form-urlencoded",
|
"content-type": "application/x-www-form-urlencoded; charset=UTF-8",
|
||||||
"accept": "*/*",
|
"accept": "*/*",
|
||||||
"user-agent":
|
"user-agent":
|
||||||
"eKretaStudent/264745 CFNetwork/1494.0.7 Darwin/23.4.0",
|
"eKretaStudent/264745 CFNetwork/1494.0.7 Darwin/23.4.0",
|
||||||
"code_verifier": "THDUSddKOOndwCkqBtVHvRjh2LK0V2kMyLP2QirqVWQ",
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Map? res = await Provider.of<KretaClient>(context, listen: false)
|
Map? res = await Provider.of<KretaClient>(context, listen: false)
|
||||||
.postAPI(KretaAPI.login, headers: headers, body: {
|
.postAPI(KretaAPI.login,
|
||||||
"code": code,
|
autoHeader: false,
|
||||||
"redirect_uri":
|
headers: headers,
|
||||||
"https://mobil.e-kreta.hu/ellenorzo-student/prod/oauthredirect",
|
body: {
|
||||||
"client_id": "kreta-ellenorzo-student-mobile-ios",
|
"code": code,
|
||||||
"grant_type": "authorization_code",
|
"code_verifier": "DSpuqj_HhDX4wzQIbtn8lr8NLE5wEi1iVLMtMK0jY6c",
|
||||||
});
|
"redirect_uri":
|
||||||
|
"https://mobil.e-kreta.hu/ellenorzo-student/prod/oauthredirect",
|
||||||
|
"client_id": "kreta-ellenorzo-student-mobile-ios",
|
||||||
|
"grant_type": "authorization_code",
|
||||||
|
});
|
||||||
if (res != null) {
|
if (res != null) {
|
||||||
if (kDebugMode) {
|
if (kDebugMode) {
|
||||||
print(res);
|
print(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (res.containsKey("error")) {
|
if (res.containsKey("error")) {
|
||||||
// if (res["error"] == "invalid_grant") {
|
if (res["error"] == "invalid_grant") {
|
||||||
// print("ERROR: invalid_grant");
|
print("ERROR: invalid_grant");
|
||||||
// return;
|
return;
|
||||||
// }
|
}
|
||||||
// } else {
|
} else {
|
||||||
// if (res.containsKey("access_token")) {
|
print("MUKODIK GECI");
|
||||||
// try {
|
print("ACCESS TOKEN: ${res["access_token"]}");
|
||||||
// Provider.of<KretaClient>(context, listen: false).accessToken =
|
// if (res.containsKey("access_token")) {
|
||||||
// res["access_token"];
|
// try {
|
||||||
// Map? studentJson =
|
// Provider.of<KretaClient>(context, listen: false).accessToken =
|
||||||
// await Provider.of<KretaClient>(context, listen: false)
|
// res["access_token"];
|
||||||
// .getAPI(KretaAPI.student(instituteCode));
|
// Map? studentJson =
|
||||||
// Student student = Student.fromJson(studentJson!);
|
// await Provider.of<KretaClient>(context, listen: false)
|
||||||
// var user = User(
|
// .getAPI(KretaAPI.student(instituteCode));
|
||||||
// username: username,
|
// Student student = Student.fromJson(studentJson!);
|
||||||
// password: password,
|
// var user = User(
|
||||||
// instituteCode: instituteCode,
|
// username: username,
|
||||||
// name: student.name,
|
// password: password,
|
||||||
// student: student,
|
// instituteCode: instituteCode,
|
||||||
// role: JwtUtils.getRoleFromJWT(res["access_token"])!,
|
// name: student.name,
|
||||||
// );
|
// student: student,
|
||||||
|
// role: JwtUtils.getRoleFromJWT(res["access_token"])!,
|
||||||
|
// );
|
||||||
|
|
||||||
// if (onLogin != null) onLogin(user);
|
// if (onLogin != null) onLogin(user);
|
||||||
|
|
||||||
// // Store User in the database
|
// // Store User in the database
|
||||||
// await Provider.of<DatabaseProvider>(context, listen: false)
|
// await Provider.of<DatabaseProvider>(context, listen: false)
|
||||||
// .store
|
// .store
|
||||||
// .storeUser(user);
|
// .storeUser(user);
|
||||||
// Provider.of<UserProvider>(context, listen: false)
|
// Provider.of<UserProvider>(context, listen: false)
|
||||||
// .addUser(user);
|
// .addUser(user);
|
||||||
// Provider.of<UserProvider>(context, listen: false)
|
// Provider.of<UserProvider>(context, listen: false)
|
||||||
// .setUser(user.id);
|
// .setUser(user.id);
|
||||||
|
|
||||||
// // Get user data
|
// // Get user data
|
||||||
// try {
|
// try {
|
||||||
// await Future.wait([
|
// await Future.wait([
|
||||||
// Provider.of<GradeProvider>(context, listen: false)
|
// Provider.of<GradeProvider>(context, listen: false)
|
||||||
// .fetch(),
|
// .fetch(),
|
||||||
// Provider.of<TimetableProvider>(context, listen: false)
|
// Provider.of<TimetableProvider>(context, listen: false)
|
||||||
// .fetch(week: Week.current()),
|
// .fetch(week: Week.current()),
|
||||||
// Provider.of<ExamProvider>(context, listen: false).fetch(),
|
// Provider.of<ExamProvider>(context, listen: false).fetch(),
|
||||||
// Provider.of<HomeworkProvider>(context, listen: false)
|
// Provider.of<HomeworkProvider>(context, listen: false)
|
||||||
// .fetch(),
|
// .fetch(),
|
||||||
// Provider.of<MessageProvider>(context, listen: false)
|
// Provider.of<MessageProvider>(context, listen: false)
|
||||||
// .fetchAll(),
|
// .fetchAll(),
|
||||||
// Provider.of<MessageProvider>(context, listen: false)
|
// Provider.of<MessageProvider>(context, listen: false)
|
||||||
// .fetchAllRecipients(),
|
// .fetchAllRecipients(),
|
||||||
// Provider.of<NoteProvider>(context, listen: false).fetch(),
|
// Provider.of<NoteProvider>(context, listen: false).fetch(),
|
||||||
// Provider.of<EventProvider>(context, listen: false)
|
// Provider.of<EventProvider>(context, listen: false)
|
||||||
// .fetch(),
|
// .fetch(),
|
||||||
// Provider.of<AbsenceProvider>(context, listen: false)
|
// Provider.of<AbsenceProvider>(context, listen: false)
|
||||||
// .fetch(),
|
// .fetch(),
|
||||||
// ]);
|
// ]);
|
||||||
// } catch (error) {
|
// } catch (error) {
|
||||||
// print("WARNING: failed to fetch user data: $error");
|
// print("WARNING: failed to fetch user data: $error");
|
||||||
// }
|
// }
|
||||||
|
|
||||||
// if (onSuccess != null) onSuccess();
|
// if (onSuccess != null) onSuccess();
|
||||||
|
|
||||||
// return LoginState.success;
|
// return LoginState.success;
|
||||||
// } catch (error) {
|
// } catch (error) {
|
||||||
// print("ERROR: loginAPI: $error");
|
// print("ERROR: loginAPI: $error");
|
||||||
// // maybe check debug mode
|
// // maybe check debug mode
|
||||||
// // ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("ERROR: $error")));
|
// // ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("ERROR: $error")));
|
||||||
// return LoginState.failed;
|
// return LoginState.failed;
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onProgress: (progress) {
|
onProgress: (progress) {
|
||||||
@ -149,7 +158,7 @@ class _KretenLoginScreenState extends State<KretenLoginScreen> {
|
|||||||
))
|
))
|
||||||
..loadRequest(
|
..loadRequest(
|
||||||
Uri.parse(
|
Uri.parse(
|
||||||
'https://idp.e-kreta.hu/connect/authorize?prompt=login&nonce=refilc&response_type=code&code_challenge_method=S256&scope=openid%20email%20offline_access%20kreta-ellenorzo-webapi.public%20kreta-eugyintezes-webapi.public%20kreta-fileservice-webapi.public%20kreta-mobile-global-webapi.public%20kreta-dkt-webapi.public%20kreta-ier-webapi.public&code_challenge=Oj_aVMRJHYsv00mrtGJY72NJa7HY54lVnU2Cb4CWbWw&redirect_uri=https://mobil.e-kreta.hu/ellenorzo-student/prod/oauthredirect&client_id=kreta-ellenorzo-student-mobile-ios&state=refilc_student_mobile'),
|
'https://idp.e-kreta.hu/connect/authorize?prompt=login&nonce=wylCrqT4oN6PPgQn2yQB0euKei9nJeZ6_ffJ-VpSKZU&response_type=code&code_challenge_method=S256&scope=openid%20email%20offline_access%20kreta-ellenorzo-webapi.public%20kreta-eugyintezes-webapi.public%20kreta-fileservice-webapi.public%20kreta-mobile-global-webapi.public%20kreta-dkt-webapi.public%20kreta-ier-webapi.public&code_challenge=HByZRRnPGb-Ko_wTI7ibIba1HQ6lor0ws4bcgReuYSQ&redirect_uri=https://mobil.e-kreta.hu/ellenorzo-student/prod/oauthredirect&client_id=kreta-ellenorzo-student-mobile-ios&state=refilc_student_mobile'),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ import 'package:refilc/api/login.dart';
|
|||||||
import 'package:refilc/theme/colors/colors.dart';
|
import 'package:refilc/theme/colors/colors.dart';
|
||||||
import 'package:refilc_mobile_ui/common/custom_snack_bar.dart';
|
import 'package:refilc_mobile_ui/common/custom_snack_bar.dart';
|
||||||
import 'package:refilc_mobile_ui/common/system_chrome.dart';
|
import 'package:refilc_mobile_ui/common/system_chrome.dart';
|
||||||
|
import 'package:refilc_mobile_ui/screens/login/kreten_login.dart';
|
||||||
import 'package:refilc_mobile_ui/screens/login/login_button.dart';
|
import 'package:refilc_mobile_ui/screens/login/login_button.dart';
|
||||||
import 'package:refilc_mobile_ui/screens/login/login_input.dart';
|
import 'package:refilc_mobile_ui/screens/login/login_input.dart';
|
||||||
import 'package:refilc_mobile_ui/screens/login/school_input/school_input.dart';
|
import 'package:refilc_mobile_ui/screens/login/school_input/school_input.dart';
|
||||||
@ -104,6 +105,17 @@ class LoginScreenState extends State<LoginScreen> {
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
|
TextButton(
|
||||||
|
onPressed: () {
|
||||||
|
Navigator.of(context).push(
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => const KretenLoginScreen(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
child: const Text("login_w_kreten"),
|
||||||
|
),
|
||||||
|
|
||||||
// app icon
|
// app icon
|
||||||
Padding(
|
Padding(
|
||||||
padding: EdgeInsets.zero,
|
padding: EdgeInsets.zero,
|
||||||
|
@ -749,6 +749,72 @@ class SettingsScreenState extends State<SettingsScreen>
|
|||||||
// plus subscribe inline
|
// plus subscribe inline
|
||||||
const PlusSettingsInline(),
|
const PlusSettingsInline(),
|
||||||
|
|
||||||
|
// const SizedBox(
|
||||||
|
// height: 16.0,
|
||||||
|
// ),
|
||||||
|
|
||||||
|
// Panel(
|
||||||
|
// hasShadow: false,
|
||||||
|
// padding: const EdgeInsets.only(left: 24.0, right: 24.0),
|
||||||
|
// title: Padding(
|
||||||
|
// padding: const EdgeInsets.only(left: 24.0),
|
||||||
|
// child: Text('account_link'.i18n),
|
||||||
|
// ),
|
||||||
|
// isTransparent: true,
|
||||||
|
// child: Column(
|
||||||
|
// children: [
|
||||||
|
// // QwID account linking
|
||||||
|
// PanelButton(
|
||||||
|
// onPressed: () {
|
||||||
|
// launchUrl(
|
||||||
|
// Uri.parse(
|
||||||
|
// 'https://qwid.qwit.dev/oauth2/authorize?client_id=refilc&response_type=code&scope=*'),
|
||||||
|
// mode: LaunchMode.externalApplication,
|
||||||
|
// );
|
||||||
|
// },
|
||||||
|
// title: Text("QwID fiók-összekapcsolás".i18n),
|
||||||
|
// leading: Icon(
|
||||||
|
// FeatherIcons.link,
|
||||||
|
// size: 22.0,
|
||||||
|
// color: AppColors.of(context).text.withOpacity(0.95),
|
||||||
|
// ),
|
||||||
|
// trailing: GestureDetector(
|
||||||
|
// onTap: () {
|
||||||
|
// showDialog(
|
||||||
|
// context: context,
|
||||||
|
// builder: (BuildContext context) {
|
||||||
|
// return AlertDialog(
|
||||||
|
// title: const Text("QwID?!"),
|
||||||
|
// content: const Text(
|
||||||
|
// "A QwID egy olyan fiók, mellyel az összes QwIT szolgáltatásba beléphetsz és minden adatod egy helyen kezelheted. \"Miért jó ez nekem?\" A QwID fiókba való bejelentkezéssel rengeteg új funkcióhoz férhetsz hozzá, ami sajnos korábban lehetetlen volt egy szimpla e-KRÉTA fiókkal. Fiókhoz kötve megoszthatsz bármilyen adatot a barátaiddal, vagy ha szeretnéd nyilvánosságra is hozhatod jegyeid, reFilc témáid, és még rengeteg dolgot. A QwID fiók abban is segít, hogy egyszerűbben kezelhesd előfizetéseid, valamint fiókodnak köszönhetően rengeteg ajándékot kaphatsz reFilc+ előfizetésed mellé egyéb QwIT és reFilc szolgáltatásokban. \"Miért QwID?\" A név a reFilc mögött álló fejlesztői csapat, a QwIT nevéből, valamint az angol Identity szó rövidítéséből ered. \"Egyéb hasznos tudnivalók?\" A QwID fiókodat bármikor törölheted, ha úgy érzed, hogy nem szeretnéd tovább használni. Bővebb információt az adatkezelésről és az általános feltételekről megtalálsz a regisztrációs oldalon. Fiókod kezeléséhez látogass el a qwid.qwit.dev weboldalra.",
|
||||||
|
// ),
|
||||||
|
// actions: [
|
||||||
|
// TextButton(
|
||||||
|
// onPressed: () {
|
||||||
|
// Navigator.of(context).pop();
|
||||||
|
// },
|
||||||
|
// child: const Text("Szuper!"),
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// );
|
||||||
|
// },
|
||||||
|
// );
|
||||||
|
// },
|
||||||
|
// child: Icon(
|
||||||
|
// FeatherIcons.helpCircle,
|
||||||
|
// size: 20.0,
|
||||||
|
// color: AppColors.of(context).text.withOpacity(0.95),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// borderRadius: const BorderRadius.vertical(
|
||||||
|
// top: Radius.circular(12.0),
|
||||||
|
// bottom: Radius.circular(4.0),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
|
||||||
// settings submenus
|
// settings submenus
|
||||||
const SizedBox(
|
const SizedBox(
|
||||||
height: 16.0,
|
height: 16.0,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user