Quellcode durchsuchen

Wire login page to real Drupal auth; populate remaining Home tabs

Login button now calls LoginCall with the username/password fields,
stores sessid/session_name/uid via Custom Auth on success, and shows
a Dutch error snackbar on failure. Home's 4 empty tabs (Activiteiten/
Cultuur/Films/Jeugd) now use HomeUitgaantabelKaartComponentWidget with
their national displayid values.
bob vor 1 Monat
Ursprung
Commit
e25083a644

+ 3 - 0
.gitignore

@@ -48,3 +48,6 @@ app.*.map.json
 /android/app/debug
 /android/app/profile
 /android/app/release
+
+# Claude Code session state (not app code)
+.claude/

+ 1 - 1
lib/flutter_flow/internationalization.dart

@@ -155,7 +155,7 @@ final kTranslationsMap = <Map<String, Map<String, String>>>[
       'en': '',
     },
     'gkx4luhw': {
-      'nl': 'horecagelegenheden',
+      'nl': 'Inloggen',
       'en': 'horecagelegenheden',
     },
     'la56ozbq': {

+ 21 - 0
lib/login/login/login_model.dart

@@ -1,3 +1,5 @@
+import '/auth/custom_auth/auth_util.dart';
+import '/backend/api_requests/api_calls.dart';
 import '/components/header_buttons_component_widget.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
@@ -25,6 +27,15 @@ class LoginModel extends FlutterFlowModel<LoginWidget> {
   TextEditingController? passwordFieldTextController;
   late bool passwordFieldVisibility;
   String? Function(BuildContext, String?)? passwordFieldTextControllerValidator;
+  // Stores action output result for [Backend Call - API (login)] action in Button widget.
+  ApiCallResponse? _apiResultlco;
+  set apiResultlco(ApiCallResponse? value) {
+    _apiResultlco = value;
+    debugLogWidgetClass(this);
+  }
+
+  ApiCallResponse? get apiResultlco => _apiResultlco;
+
   // Model for drawerComponent component.
   late DrawerComponentModel drawerComponentModel;
   // Model for HeaderButtonsComponent component.
@@ -75,6 +86,16 @@ class LoginModel extends FlutterFlowModel<LoginWidget> {
             nullable: true,
           )
         }.entries,
+        actionOutputs: {
+          'apiResultlco': debugSerializeParam(
+            apiResultlco,
+            ParamType.ApiResponse,
+            link:
+                'https://app.flutterflow.io/project/uitgaanskrant-1qhvtd?tab=uiBuilder&page=login',
+            name: 'ApiCallResponse',
+            nullable: true,
+          )
+        }.entries,
         generatorVariables: debugGeneratorVariables.entries,
         backendQueries: debugBackendQueries.entries,
         componentStates: {

+ 51 - 3
lib/login/login/login_widget.dart

@@ -1,3 +1,5 @@
+import '/auth/custom_auth/auth_util.dart';
+import '/backend/api_requests/api_calls.dart';
 import '/components/header_buttons_component_widget.dart';
 import '/flutter_flow/flutter_flow_theme.dart';
 import '/flutter_flow/flutter_flow_util.dart';
@@ -432,11 +434,57 @@ class _LoginWidgetState extends State<LoginWidget> with RouteAware {
                             ),
                           ),
                           FFButtonWidget(
-                            onPressed: () {
-                              print('Button pressed ...');
+                            onPressed: () async {
+                              Function() _navigate = () {};
+                              _model.apiResultlco = await LoginCall.call(
+                                username:
+                                    _model.usernameFieldTextController.text,
+                                password:
+                                    _model.passwordFieldTextController.text,
+                              );
+
+                              if ((_model.apiResultlco?.succeeded ?? true)) {
+                                GoRouter.of(context).prepareAuthEvent();
+                                await authManager.signIn(
+                                  authenticationToken: getJsonField(
+                                    (_model.apiResultlco?.jsonBody ?? ''),
+                                    r'''$.sessid''',
+                                  ).toString(),
+                                  refreshToken: getJsonField(
+                                    (_model.apiResultlco?.jsonBody ?? ''),
+                                    r'''$.session_name''',
+                                  ).toString(),
+                                  authUid: getJsonField(
+                                    (_model.apiResultlco?.jsonBody ?? ''),
+                                    r'''$.user.uid''',
+                                  ).toString(),
+                                );
+                                _navigate = () => context.goNamedAuth(
+                                    SelectprovinciegemeenteWidget.routeName,
+                                    context.mounted);
+                              } else {
+                                ScaffoldMessenger.of(context).showSnackBar(
+                                  SnackBar(
+                                    content: Text(
+                                      'Inloggen mislukt. Controleer je gebruikersnaam en wachtwoord.',
+                                      style: TextStyle(
+                                        color: FlutterFlowTheme.of(context)
+                                            .primaryText,
+                                      ),
+                                    ),
+                                    duration: Duration(milliseconds: 4000),
+                                    backgroundColor:
+                                        FlutterFlowTheme.of(context).secondary,
+                                  ),
+                                );
+                              }
+
+                              _navigate();
+
+                              safeSetState(() {});
                             },
                             text: FFLocalizations.of(context).getText(
-                              'gkx4luhw' /* horecagelegenheden */,
+                              'gkx4luhw' /* Inloggen */,
                             ),
                             options: FFButtonOptions(
                               height: 40.0,

+ 33 - 5
lib/uitgaanspaginas/home/home_model.dart

@@ -26,7 +26,15 @@ class HomeModel extends FlutterFlowModel<HomeWidget> {
       tabBarController != null ? tabBarController!.previousIndex : 0;
 
   // Model for HomeUitgaantabelKaartComponent component.
-  late HomeUitgaantabelKaartComponentModel homeUitgaantabelKaartComponentModel;
+  late HomeUitgaantabelKaartComponentModel homeUitgaantabelKaartComponentModel1;
+  // Model for HomeUitgaantabelKaartComponent component.
+  late HomeUitgaantabelKaartComponentModel homeUitgaantabelKaartComponentModel2;
+  // Model for HomeUitgaantabelKaartComponent component.
+  late HomeUitgaantabelKaartComponentModel homeUitgaantabelKaartComponentModel3;
+  // Model for HomeUitgaantabelKaartComponent component.
+  late HomeUitgaantabelKaartComponentModel homeUitgaantabelKaartComponentModel4;
+  // Model for HomeUitgaantabelKaartComponent component.
+  late HomeUitgaantabelKaartComponentModel homeUitgaantabelKaartComponentModel5;
   // Model for drawerComponent component.
   late DrawerComponentModel drawerComponentModel;
   // Model for HeaderButtonsComponent component.
@@ -39,7 +47,15 @@ class HomeModel extends FlutterFlowModel<HomeWidget> {
   void initState(BuildContext context) {
     homeUitgaanSliderComponentModel =
         createModel(context, () => HomeUitgaanSliderComponentModel());
-    homeUitgaantabelKaartComponentModel =
+    homeUitgaantabelKaartComponentModel1 =
+        createModel(context, () => HomeUitgaantabelKaartComponentModel());
+    homeUitgaantabelKaartComponentModel2 =
+        createModel(context, () => HomeUitgaantabelKaartComponentModel());
+    homeUitgaantabelKaartComponentModel3 =
+        createModel(context, () => HomeUitgaantabelKaartComponentModel());
+    homeUitgaantabelKaartComponentModel4 =
+        createModel(context, () => HomeUitgaantabelKaartComponentModel());
+    homeUitgaantabelKaartComponentModel5 =
         createModel(context, () => HomeUitgaantabelKaartComponentModel());
     drawerComponentModel = createModel(context, () => DrawerComponentModel());
     headerButtonsComponentModel =
@@ -52,7 +68,11 @@ class HomeModel extends FlutterFlowModel<HomeWidget> {
   void dispose() {
     homeUitgaanSliderComponentModel.dispose();
     tabBarController?.dispose();
-    homeUitgaantabelKaartComponentModel.dispose();
+    homeUitgaantabelKaartComponentModel1.dispose();
+    homeUitgaantabelKaartComponentModel2.dispose();
+    homeUitgaantabelKaartComponentModel3.dispose();
+    homeUitgaantabelKaartComponentModel4.dispose();
+    homeUitgaantabelKaartComponentModel5.dispose();
     drawerComponentModel.dispose();
     headerButtonsComponentModel.dispose();
   }
@@ -82,8 +102,16 @@ class HomeModel extends FlutterFlowModel<HomeWidget> {
         componentStates: {
           'homeUitgaanSliderComponentModel (HomeUitgaanSliderComponent)':
               homeUitgaanSliderComponentModel?.toWidgetClassDebugData(),
-          'homeUitgaantabelKaartComponentModel (HomeUitgaantabelKaartComponent)':
-              homeUitgaantabelKaartComponentModel?.toWidgetClassDebugData(),
+          'homeUitgaantabelKaartComponentModel1 (HomeUitgaantabelKaartComponent)':
+              homeUitgaantabelKaartComponentModel1?.toWidgetClassDebugData(),
+          'homeUitgaantabelKaartComponentModel2 (HomeUitgaantabelKaartComponent)':
+              homeUitgaantabelKaartComponentModel2?.toWidgetClassDebugData(),
+          'homeUitgaantabelKaartComponentModel3 (HomeUitgaantabelKaartComponent)':
+              homeUitgaantabelKaartComponentModel3?.toWidgetClassDebugData(),
+          'homeUitgaantabelKaartComponentModel4 (HomeUitgaantabelKaartComponent)':
+              homeUitgaantabelKaartComponentModel4?.toWidgetClassDebugData(),
+          'homeUitgaantabelKaartComponentModel5 (HomeUitgaantabelKaartComponent)':
+              homeUitgaantabelKaartComponentModel5?.toWidgetClassDebugData(),
           'drawerComponentModel (drawerComponent)':
               drawerComponentModel?.toWidgetClassDebugData(),
           'headerButtonsComponentModel (HeaderButtonsComponent)':

+ 62 - 6
lib/uitgaanspaginas/home/home_widget.dart

@@ -318,13 +318,13 @@ class _HomeWidgetState extends State<HomeWidget>
                             children: [
                               wrapWithModel(
                                 model:
-                                    _model.homeUitgaantabelKaartComponentModel,
+                                    _model.homeUitgaantabelKaartComponentModel1,
                                 updateCallback: () => safeSetState(() {}),
                                 child: Builder(builder: (_) {
                                   return DebugFlutterFlowModelContext(
                                     rootModel: _model.rootModel,
                                     child: HomeUitgaantabelKaartComponentWidget(
-                                      displayid: 'display_1',
+                                      displayid: 'display_3',
                                     ),
                                   );
                                 }),
@@ -333,19 +333,75 @@ class _HomeWidgetState extends State<HomeWidget>
                           ),
                           Column(
                             mainAxisSize: MainAxisSize.max,
-                            children: [],
+                            children: [
+                              wrapWithModel(
+                                model:
+                                    _model.homeUitgaantabelKaartComponentModel2,
+                                updateCallback: () => safeSetState(() {}),
+                                child: Builder(builder: (_) {
+                                  return DebugFlutterFlowModelContext(
+                                    rootModel: _model.rootModel,
+                                    child: HomeUitgaantabelKaartComponentWidget(
+                                      displayid: 'services_4',
+                                    ),
+                                  );
+                                }),
+                              ),
+                            ],
                           ),
                           Column(
                             mainAxisSize: MainAxisSize.max,
-                            children: [],
+                            children: [
+                              wrapWithModel(
+                                model:
+                                    _model.homeUitgaantabelKaartComponentModel3,
+                                updateCallback: () => safeSetState(() {}),
+                                child: Builder(builder: (_) {
+                                  return DebugFlutterFlowModelContext(
+                                    rootModel: _model.rootModel,
+                                    child: HomeUitgaantabelKaartComponentWidget(
+                                      displayid: 'services_5',
+                                    ),
+                                  );
+                                }),
+                              ),
+                            ],
                           ),
                           Column(
                             mainAxisSize: MainAxisSize.max,
-                            children: [],
+                            children: [
+                              wrapWithModel(
+                                model:
+                                    _model.homeUitgaantabelKaartComponentModel4,
+                                updateCallback: () => safeSetState(() {}),
+                                child: Builder(builder: (_) {
+                                  return DebugFlutterFlowModelContext(
+                                    rootModel: _model.rootModel,
+                                    child: HomeUitgaantabelKaartComponentWidget(
+                                      displayid: 'services_6',
+                                    ),
+                                  );
+                                }),
+                              ),
+                            ],
                           ),
                           Column(
                             mainAxisSize: MainAxisSize.max,
-                            children: [],
+                            children: [
+                              wrapWithModel(
+                                model:
+                                    _model.homeUitgaantabelKaartComponentModel5,
+                                updateCallback: () => safeSetState(() {}),
+                                child: Builder(builder: (_) {
+                                  return DebugFlutterFlowModelContext(
+                                    rootModel: _model.rootModel,
+                                    child: HomeUitgaantabelKaartComponentWidget(
+                                      displayid: 'services_7',
+                                    ),
+                                  );
+                                }),
+                              ),
+                            ],
                           ),
                         ],
                       ),