Added central user credentials management

This commit is contained in:
2023-06-11 18:18:37 +02:00
parent 04c244503e
commit 1521056217
22 changed files with 207 additions and 159 deletions

View File

@ -1,15 +1,11 @@
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:flutter_login/flutter_login.dart';
import 'package:provider/provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../../api/apiError.dart';
import '../../api/webuntis/queries/authenticate/authenticateParams.dart';
import '../../api/webuntis/queries/authenticate/authenticate.dart';
import '../../api/webuntis/webuntisError.dart';
import '../../model/accountData.dart';
import '../../model/accountModel.dart';
class Login extends StatefulWidget {
@ -27,8 +23,7 @@ class _LoginState extends State<Login> {
}
Future<String?> _login(LoginData data) async {
SharedPreferences preferences = await SharedPreferences.getInstance();
preferences.setBool("loggedIn", false);
AccountData().removeData(context);
try {
await Authenticate(
@ -36,23 +31,17 @@ class _LoginState extends State<Login> {
user: data.name,
password: data.password,
)
).run().then((value) => {
log(value.sessionId)
).run().then((value) async {
await AccountData().setData(context, data.name, data.password);
setState(() {
displayDisclaimerText = false;
});
});
} on WebuntisError catch(e) {
return e.toString();
} on ApiError catch(e) {
} catch(e) {
return e.toString();
}
setState(() {
displayDisclaimerText = false;
});
preferences.setBool("loggedIn", true);
preferences.setString("username", data.name);
preferences.setString("password", data.password);
return null;
}
@ -69,7 +58,7 @@ class _LoginState extends State<Login> {
userValidator: _checkInput,
passwordValidator: _checkInput,
onSubmitAnimationCompleted: () => Provider.of<AccountModel>(context, listen: false).login(),
onSubmitAnimationCompleted: () => Provider.of<AccountModel>(context, listen: false).setState(AccountModelState.loggedIn),
onLogin: _login,
onSignup: null,

View File

@ -4,8 +4,6 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:loader_overlay/loader_overlay.dart';
import 'package:marianum_mobile/storage/base/settingsProvider.dart';
import 'package:marianum_mobile/widget/loadingSpinner.dart';
import 'package:provider/provider.dart';
import '../../../api/marianumcloud/webdav/queries/listFiles/cacheableFile.dart';
@ -13,7 +11,9 @@ import '../../../api/marianumcloud/webdav/queries/listFiles/listFilesCache.dart'
import '../../../api/marianumcloud/webdav/queries/listFiles/listFilesResponse.dart';
import '../../../api/marianumcloud/webdav/webdavApi.dart';
import '../../../model/files/filesProps.dart';
import '../../../widget/errorView.dart';
import '../../../storage/base/settingsProvider.dart';
import '../../../widget/loadingSpinner.dart';
import '../../../widget/placeholderView.dart';
import '../../../widget/filePick.dart';
import 'fileUploadDialog.dart';
import 'fileElement.dart';
@ -224,7 +224,7 @@ class _FilesState extends State<Files> {
},
child: const Icon(Icons.add),
),
body: data == null ? const LoadingSpinner() : data!.files.isEmpty ? const ErrorView(icon: Icons.folder_off_rounded, text: "Der Ordner ist leer") : LoaderOverlay(
body: data == null ? const LoadingSpinner() : data!.files.isEmpty ? const PlaceholderView(icon: Icons.folder_off_rounded, text: "Der Ordner ist leer") : LoaderOverlay(
child: RefreshIndicator(
onRefresh: () {
_query();

View File

@ -1,10 +1,9 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:marianum_mobile/widget/loadingSpinner.dart';
import 'package:provider/provider.dart';
import '../../../../api/mhsl/message/getMessages/getMessagesResponse.dart';
import '../../../../model/message/messageProps.dart';
import '../../../../widget/loadingSpinner.dart';
import 'messageView.dart';

View File

@ -4,12 +4,12 @@ import 'package:flowder/flowder.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:jiffy/jiffy.dart';
import 'package:marianum_mobile/api/marianumcloud/talk/deleteMessage/deleteMessage.dart';
import 'package:marianum_mobile/model/chatList/chatProps.dart';
import 'package:provider/provider.dart';
import '../../../api/marianumcloud/talk/chat/getChatResponse.dart';
import '../../../api/marianumcloud/talk/deleteMessage/deleteMessage.dart';
import '../../../api/marianumcloud/talk/room/getRoomResponse.dart';
import '../../../model/chatList/chatProps.dart';
import '../../../theming/appTheme.dart';
import '../../../widget/debug/debugTile.dart';
import '../files/fileElement.dart';

View File

@ -1,14 +1,14 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:marianum_mobile/api/marianumcloud/talk/createRoom/createRoomParams.dart';
import 'package:marianum_mobile/widget/confirmDialog.dart';
import 'package:marianum_mobile/widget/loadingSpinner.dart';
import 'package:provider/provider.dart';
import '../../../api/marianumcloud/talk/createRoom/createRoom.dart';
import '../../../api/marianumcloud/talk/createRoom/createRoomParams.dart';
import '../../../model/chatList/chatListProps.dart';
import '../../../storage/base/settingsProvider.dart';
import '../../../widget/confirmDialog.dart';
import '../../../widget/loadingSpinner.dart';
import 'chatTile.dart';
import 'joinChat.dart';
import 'searchChat.dart';

View File

@ -2,13 +2,13 @@
import 'package:flutter/material.dart';
import 'package:jiffy/jiffy.dart';
import 'package:loader_overlay/loader_overlay.dart';
import 'package:marianum_mobile/widget/loadingSpinner.dart';
import 'package:provider/provider.dart';
import '../../../api/marianumcloud/talk/chat/getChatResponse.dart';
import '../../../api/marianumcloud/talk/room/getRoomResponse.dart';
import '../../../theming/appTheme.dart';
import '../../../model/chatList/chatProps.dart';
import '../../../widget/loadingSpinner.dart';
import 'chatBubble.dart';
import 'chatTextfield.dart';

View File

@ -5,7 +5,7 @@ import 'package:flutter/material.dart';
import '../../../api/marianumcloud/autocomplete/autocompleteApi.dart';
import '../../../api/marianumcloud/autocomplete/autocompleteResponse.dart';
import '../../../widget/errorView.dart';
import '../../../widget/placeholderView.dart';
class JoinChat extends SearchDelegate<String> {
CancelableOperation<AutocompleteResponse>? future;
@ -47,7 +47,7 @@ class JoinChat extends SearchDelegate<String> {
if(future != null) future!.cancel();
if(query.isEmpty) {
return const ErrorView(
return const PlaceholderView(
text: "Suche nach benutzern",
icon: Icons.person_search_outlined,
);
@ -81,7 +81,7 @@ class JoinChat extends SearchDelegate<String> {
);
} else if(snapshot.hasError) {
log(snapshot.error.toString());
return ErrorView(text: snapshot.error.toString());
return PlaceholderView(icon: Icons.search_off, text: snapshot.error.toString());
}
return const Center(child: CircularProgressIndicator());

View File

@ -2,7 +2,6 @@
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:marianum_mobile/widget/loadingSpinner.dart';
import 'package:provider/provider.dart';
import 'package:syncfusion_flutter_calendar/calendar.dart';
@ -11,7 +10,8 @@ import '../../../api/webuntis/queries/getRooms/getRoomsResponse.dart';
import '../../../api/webuntis/queries/getSubjects/getSubjectsResponse.dart';
import '../../../model/timetable/timetableProps.dart';
import '../../../storage/base/settingsProvider.dart';
import '../../../widget/errorView.dart';
import '../../../widget/loadingSpinner.dart';
import '../../../widget/placeholderView.dart';
import 'appointmenetComponent.dart';
import 'appointmentDetails.dart';
import 'timeRegionComponent.dart';
@ -68,7 +68,7 @@ class _TimetableState extends State<Timetable> {
GetHolidaysResponse holidays = value.getHolidaysResponse;
if(value.hasError) {
return ErrorView(
return PlaceholderView(
icon: Icons.calendar_month,
text: "Webuntis error: ${value.error.toString()}",
);

View File

@ -5,7 +5,7 @@ import 'package:package_info/package_info.dart';
import 'package:provider/provider.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../../model/accountModel.dart';
import '../../model/accountData.dart';
import '../../storage/base/settingsProvider.dart';
import '../../theming/appTheme.dart';
import '../../widget/confirmDialog.dart';
@ -52,9 +52,9 @@ class _SettingsState extends State<Settings> {
onConfirm: () {
SharedPreferences.getInstance().then((value) => {
value.clear(),
}).then((value) => {
Provider.of<AccountModel>(context, listen: false).logout(),
Navigator.popUntil(context, (route) => !Navigator.canPop(context)),
}).then((value) {
AccountData().removeData(context);
Navigator.popUntil(context, (route) => !Navigator.canPop(context));
});
},
),