Skip to content

Universidad-de-Colima/demo-flutter-login-federado

Repository files navigation

wayf_login_udc

Aplicación que funciona como plantilla y package para la autenticación federada para la universidad de colima Se proveen las screens necesarias para un login con el sistema SIMPLESAML de la universidad de colima

Breaking change

El repositorio en la versión 2.x.x fue migrado a la versión 3.7.x de flutter y 2.18.x de dart, así como el upgrade de los paquetes usados.

Revisa compatibilidades antes de hacer un upgrade.

Contenido

WayfLoginButtonScreen

Provee de una pantalla antes de WayfWebViewScreen con la capacidad de recibir un title (requerido) y un logo (opcional) que serán mostrados la parte superior y central de la pantalla respectivamente.

En este ejemplo se usó el titulo y logo para la aplicación de control de asistencias.

Redirect to samsample

WayfWebViewScreen

Provee el widget que se conecta a la federación, recibe un callback que es llamado al recibir los datos de la federación

SamSample webview

LoginResultScreen

Una pantalla provisional para mostrar la información obtenida en el login con la posibilidad de cerrar la sesión actual.

Show simple result info

Constantes

Se exporta las clases abstractas de UdcColors con los colores usados en el diseño y pueden ser usados para otras aplicaciones.

Uso

Aumenta la minSdkVersion a la 19

defaultConfig {
    minSdkVersion 19
}

Plantilla

Puedes usar este repositorio desde github o accediendo a este link

Este repositorio es una aplicación completa que puedes correr ejecutando el proyecto desde el archivo main.dart.

Contiene los iconos para android y una aplicación de entrada en app.dart

flutter run

Package

En tu pubspec.yaml agrega la siguiente dependencia

wayf_login_udc:
    git:
        url: https://github.com/Universidad-de-Colima/demo-flutter-login-federado.git
        ref: main

Importa el paquete en donde necesites usar los widget WayfWebViewScreen WayfLoginButtonScreen

import 'package:wayf_login_udc/wayf_login_udc.dart';

WayfLoginButtonScreen(
  /// Alamana el resultado en tu estado, también puedes guardarlo en tu almacenamiento local para retomarlo después 
  onWayfResolve: (data) => _onWayfResolve(data, context),
  /// Este método es opcional para verificar si existe una sesión previa
  ///
  /// Si no se provee, se asume que no existe una sesión previa, si se provee deberá hacer cambios para la integración con la biometria del 
  /// dispositivo, revisa el siguiente enlace https://pub.dev/packages/local_auth
  loadExistingLogin: () async {
    final data = await _storage.read(key: 'loginData'); /// En el ejemplo se usa flutter_secure_storage para guardar la información
    if (data == null) return null;
    return WayfLoginModel.fromJson(
      json.decode(data) as Map<String, dynamic>,
    );
  },
  /// Verifica si una sesión es válida, en este ejemplo se valida que la sesión no haya expirado en un día
  validateExistingLogin: (data) {
    final now = DateTime.now();
    final sessionCreated = data.sessionCreated;
    final expires = sessionCreated.copyWith(
      day: sessionCreated.day + 1,
    );
    return now.isBefore(expires);
  },
  title: Image.asset(
    UdcAssets.logoAsistencias,
  ),
);

For developers

Occasionally run

dart format --fix -l 80 lib
flutter pub run import_sorter:main

Or if you're using fvm

dart format --fix -l 80 lib
fvm flutter pub run import_sorter:main

This commands are in the script format.sh, in UNIX-like systems just run

chmod +x ./format.sh
./format.sh

Más información

Federación de Identidades de la Universidad de Colima

About

Ejemplo de uso de la Federación de Identidades usando flutter

Resources

Stars

Watchers

Forks

Packages

No packages published