File

src/app/autenticacion/inicio-sesion/inicio-sesion.page.ts

Implements

OnInit

Metadata

selector app-inicio-sesion
styleUrls ./inicio-sesion.page.scss
templateUrl ./inicio-sesion.page.html

Index

Properties
Methods

Constructor

constructor(formBuilder: FormBuilder, authService: AutenticationService, router: Router, nativeStorage: NativeStorage, toastController: ToastController, translate: TranslateService, menuController: MenuController)
Parameters :
Name Type Optional Description
formBuilder FormBuilder No

Constructor del formulario

authService AutenticationService No

Servicio propio de autenticación de usuarios

router Router No

Navegación entre páginas

nativeStorage NativeStorage No

Módulo para acceder a la base de datos local

toastController ToastController No

Controlador de los toast

translate TranslateService No

Módulo de traducción

menuController MenuController No

Methods

changeLang
changeLang(e)

Encargado de cambiar el idioma

Parameters :
Name Optional Description
e No

Evento del cambio de posición del toogle

Returns : void
consultarSesion
consultarSesion()

Devuelve el valor de la variable sesión de la base de datos local

Returns : any
guardarSesion
guardarSesion()

Sustituye el valor de la variable sesión en la base de datos local cuando iniciamos sesión

Returns : void
ionViewDidEnter
ionViewDidEnter()
Returns : void
ngOnInit
ngOnInit()

Primero consulta el valor de la variable sesión en la base de datos local y si es 'si' redirige a la página de las tabs, pues ya habría iniciado sesión antes. Segundo inicializa el formulario de inicio de sesión y pone como obligatorios ambos campos

Returns : void
onSubmit
onSubmit()

Se ejecuta cuando se valida el formulario. Rellena los datos del usuario llamando al método saveUserdata(). Llama al servicio de autenticación y en caso de éxito llama al método guardarSesión() y redirige a la página principal de las tabs. En caso de error llama al método presentToast()

Returns : void
Async presentToast
presentToast()

Método asíncrono que muestra un toast con un mensaje de error al iniciar sesión

Returns : any
saveUserdata
saveUserdata()

Devuelve los datos del usuario tras recogerlos del formulario.

Returns : { email: any; password: any; }

Properties

inicioForm
Type : FormGroup
sesion
Type : any
userdata
Type : any
import {Component, OnInit} from '@angular/core';
import {FormBuilder, FormGroup, Validators} from '@angular/forms';
import {AutenticationService} from '../../services/autentication.service';
import {Router} from '@angular/router';
import {NativeStorage} from '@ionic-native/native-storage/ngx';
import {MenuController, ToastController} from '@ionic/angular';
import {TranslateService} from '@ngx-translate/core';

@Component({
    selector: 'app-inicio-sesion',
    templateUrl: './inicio-sesion.page.html',
    styleUrls: ['./inicio-sesion.page.scss'],
})
export class InicioSesionPage implements OnInit {

    inicioForm: FormGroup;
    userdata: any;

    sesion: any;

    /**
     *
     * @param formBuilder Constructor del formulario
     * @param authService Servicio propio de autenticación de usuarios
     * @param router Navegación entre páginas
     * @param nativeStorage Módulo para acceder a la base de datos local
     * @param toastController Controlador de los toast
     * @param translate Módulo de traducción
     */
    constructor(private formBuilder: FormBuilder,
                private authService: AutenticationService,
                private router: Router,
                private nativeStorage: NativeStorage,
                private toastController: ToastController,
                private translate: TranslateService,
                private menuController: MenuController) {
    }

    ionViewDidEnter() {
        this.menuController.enable(false);
    }

    /**
     * Primero consulta el valor de la variable sesión en la base de datos local
     * y si es 'si' redirige a la página de las tabs, pues ya habría iniciado
     * sesión antes.
     * Segundo inicializa el formulario de inicio de sesión y pone como obligatorios ambos campos
     */
    ngOnInit() {
        this.consultarSesion()
            .then(
                data => {
                    if (data == 'si') {
                        this.router.navigateByUrl('/tabs/tabs/tab1');
                    }
                },
                error => console.error(error)
            );

        this.inicioForm = this.formBuilder.group({
            'email': ['', [
                Validators.required,
                Validators.email
            ]
            ],
            'password': ['', [
                Validators.required
            ]
            ]
        });


    }

    /**
     * Se ejecuta cuando se valida el formulario.
     * Rellena los datos del usuario llamando al método saveUserdata().
     * Llama al servicio de autenticación y en caso de éxito llama al método guardarSesión()
     * y redirige a la página principal de las tabs. En caso de error llama al método presentToast()
     */
    onSubmit() {
        this.userdata = this.saveUserdata();
        this.authService.inicioSesionUsuario(this.userdata)
            .then(() => {
                this.guardarSesion();
                this.router.navigateByUrl('/tabs/tabs/tab1');
            })
            .catch(e => {
                console.log(e);
                this.presentToast();
            });
    }

    /**
     * Devuelve los datos del usuario tras recogerlos del formulario.
     */
    saveUserdata() {
        const saveUserdata = {
            email: this.inicioForm.get('email').value,
            password: this.inicioForm.get('password').value,
        };
        return saveUserdata;
    }

    /**
     * Sustituye el valor de la variable sesión en la base de datos local cuando iniciamos sesión
     */
    guardarSesion() {
        this.nativeStorage.setItem('sesion', 'si')
            .then(
                () => console.log('Stored item!'),
                error => console.error('Error storing item', error)
            );
    }

    /**
     * Devuelve el valor de la variable sesión de la base de datos local
     */
    consultarSesion() {
        return this.nativeStorage.getItem('sesion');
    }

    /**
     * Método asíncrono que muestra un toast con un mensaje de error al iniciar sesión
     */
    async presentToast() {
        const toast = await this.toastController.create({
            message: this.translate.instant('error_login'),
            duration: 3000
        });
        toast.present();
    }

    /**
     * Encargado de cambiar el idioma
     * @param e Evento del cambio de posición del toogle
     */
    changeLang(e) {
        // console.log(e.detail.checked);
        if (e.detail.checked) {
            this.translate.use('en');
        } else {
            this.translate.use('es');
        }
    }

}
<ion-header no-border style="border-bottom: green 1px solid">
  <ion-toolbar >
    <ion-title>
      <ion-img src="../../../assets/login.jpg"></ion-img>
      <h1 align="center">ShareAce</h1>
    </ion-title>
  </ion-toolbar>
</ion-header>


<ion-content padding>

  <form [formGroup]="inicioForm" (ngSubmit)="onSubmit()">
    <ion-item>
      <ion-label>Email: </ion-label>
      <ion-input type="text" formControlName="email"></ion-input>
    </ion-item>
    <ion-item>
      <ion-label>{{'password'|translate}}: </ion-label>
      <ion-input type="password" formControlName="password"></ion-input>
    </ion-item>
    <ion-item float-right="">
      <ion-button shape="round" color="primary" fill="outline" type="submit">
        {{'log_in'|translate}}
      </ion-button>
    </ion-item>
  </form>

  <ion-item><a href="/registro">{{'if_no'|translate}} {{'click_here'|translate}}</a></ion-item>

  <ion-item>
    <ion-label style="font-size:0.95rem">{{"changeLang" | translate}}</ion-label>
    <ion-toggle slot="end" (ionChange)="changeLang($event)"></ion-toggle>
  </ion-item>

</ion-content>

./inicio-sesion.page.scss

Legend
Html element
Component
Html element with directive

result-matching ""

    No results matching ""