added guardian login with views for their assigned childs
This commit is contained in:
@@ -3,8 +3,11 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
import 'package:persistent_bottom_nav_bar_v2/persistent_bottom_nav_bar_v2.dart';
|
||||
|
||||
import '../../../access/access_requirement.dart';
|
||||
import '../../../api/marianumconnect/queries/get_breakers/get_breakers_response.dart';
|
||||
import '../../../routing/app_routes.dart';
|
||||
import '../../../session/session.dart';
|
||||
import '../../../session/session_manager.dart';
|
||||
import '../../../storage/modules_settings.dart';
|
||||
import '../../../view/pages/absence_report/absence_report_view.dart';
|
||||
import '../../../view/pages/files/files.dart';
|
||||
@@ -38,6 +41,16 @@ class AppModule {
|
||||
required this.create,
|
||||
});
|
||||
|
||||
/// Backend identities each module needs. Modules without an entry work for
|
||||
/// every session.
|
||||
static const Map<Modules, Set<AccessRequirement>> requirements = {
|
||||
Modules.talk: {AccessRequirement.nextcloud},
|
||||
Modules.files: {AccessRequirement.nextcloud},
|
||||
};
|
||||
|
||||
static bool isAvailableFor(Modules module, Session? session) =>
|
||||
(requirements[module] ?? const {}).areMetBy(session);
|
||||
|
||||
static Map<Modules, AppModule> modules(
|
||||
BuildContext context, {
|
||||
bool showFiltered = false,
|
||||
@@ -146,6 +159,9 @@ class AppModule {
|
||||
),
|
||||
};
|
||||
|
||||
final session = SessionManager().current;
|
||||
available.removeWhere((key, _) => !isAvailableFor(key, session));
|
||||
|
||||
if (!showFiltered) {
|
||||
available.removeWhere(
|
||||
(key, value) =>
|
||||
@@ -177,9 +193,7 @@ class AppModule {
|
||||
for (final missing in Modules.values) {
|
||||
if (!seen.add(missing)) continue;
|
||||
var insertAt = 0;
|
||||
for (final predecessor in Modules.values.takeWhile(
|
||||
(m) => m != missing,
|
||||
)) {
|
||||
for (final predecessor in Modules.values.takeWhile((m) => m != missing)) {
|
||||
final pos = order.indexOf(predecessor);
|
||||
if (pos >= insertAt) insertAt = pos + 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user