ya

import { Component } from '@angular/core'; import { NavController, AlertController, LoadingController, Loading, IonicPage } from 'ionic-angular'; import { AuthService } from '../../providers/auth-service/auth-service'; /** * Login Page */ @IonicPage() @Component({ selector: 'page-login', templateUrl: 'login.html', }) export class LoginPage { loading: Loading; userCredentials = {firma: '', username: '', password: '' }; /** * Konstruktor */ constructor(private nav: NavController, private auth: AuthService, private alertCtrl: AlertController, private loadingCtrl: LoadingController) { } /** * login button clicked */ public createAccount() { this.nav.push('GebmanPage'); } /** * login button clicked */ public login(): void { this.showLoading(); this.auth.login(this.userCredentials, {onLoginSuccess: () => { this.loading.dismiss(); this.nav.setRoot('TabsPage'); }, onLoginUnsuccess: (error) => { this.loading.dismiss(); this.showError(error); }}) } /** * loading screen is beeing presented */ public showLoading(): void { this.loading = this.loadingCtrl.create({ content: 'Please wait...', dismissOnPageChange: true }); this.loading.present(); } /** * presents an error alert * * @param text */ public showError(text): void { let alert = this.alertCtrl.create({ title: 'Fehler', subTitle: text, buttons: ['OK'] }); alert.present(prompt); } } import {Injectable} from '@angular/core'; import {Observable} from 'rxjs/Observable'; import 'rxjs/add/operator/map'; import {Http, Headers, RequestOptions} from '@angular/http'; /** * User Model */ export class User { public firma: string; public username: string; public password: string; /** * Konstruktor */ constructor(firma: string, username: string, password: string) { this.firma = firma; this.username = username; this.password = password; } } /** * Authorization Service */ @Injectable() export class AuthService { public currentUser: User; // why no boolean ? public access: string; public url: string = "http://127.0.0.1:8888/gebman/api/index.cfm?endpoint=/authenticate"; /** * Konstruktor */ constructor(private http: Http) { } /** * user login * * @param userCredentials * @returns {any} */ public login(userCredentials: any, functions: any): any { // haven't checked if && || && is right if (userCredentials.username && !userCredentials.username.trim() || userCredentials.password && !userCredentials.password.trim()) { return new Error("Keine Daten"); } else { let body: any = JSON.stringify({ username: userCredentials.username, password: userCredentials.password }); let options: RequestOptions = this.getRequestOptions(); this.getDataFromGebman(body, options) .subscribe(response => { this.access = response.ACCESS; localStorage.userId = response.ACCESS; if (response.ACCESS == "true") { functions.onLoginSuccess(); } else { functions.onLoginUnsuccess("keine Berechtigung"); } }, error => { functions.onLoginUnsuccess("Keine Verbindung zum Server."); }); } } /** * http login call * * @param body * @param options * @returns {Observable<any>} */ public getDataFromGebman(body, options): Observable<any> { return this.http.post(this.url, body, options) .map(response => response.json()); } /** * http call default header * @returns {any} */ public getRequestOptions(): RequestOptions { var headers = new Headers(); headers.append("Accept", 'application/json'); headers.append('Content-Type', 'application/json'); let options = new RequestOptions({headers: headers}); return options; } /** * user logout */ public logout(): void { this.currentUser = null; // how about some localstorage / cookies ? } }

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.