Commit ab4d459e by Nabil Sadki

Auth

parent 062026c5
...@@ -2,7 +2,7 @@ import { NgModule } from '@angular/core'; ...@@ -2,7 +2,7 @@ import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
const routes: Routes = [ const routes: Routes = [
{ path: '', redirectTo: 'mainslider', pathMatch: 'full' }, { path: '', redirectTo: 'start', pathMatch: 'full' },
{ path: 'start', loadChildren: './pages/start/start.module#StartPageModule' }, { path: 'start', loadChildren: './pages/start/start.module#StartPageModule' },
{ path: 'login', loadChildren: './pages/compte/login/login.module#LoginPageModule' }, { path: 'login', loadChildren: './pages/compte/login/login.module#LoginPageModule' },
{ path: 'mainslider', loadChildren: './pages/mainslider/mainslider.module#MainsliderPageModule' }, { path: 'mainslider', loadChildren: './pages/mainslider/mainslider.module#MainsliderPageModule' },
......
...@@ -8,6 +8,7 @@ import { StatusBar } from '@ionic-native/status-bar/ngx'; ...@@ -8,6 +8,7 @@ import { StatusBar } from '@ionic-native/status-bar/ngx';
import { LocalNotifications } from '@ionic-native/local-notifications/ngx'; import { LocalNotifications } from '@ionic-native/local-notifications/ngx';
import { TripService } from './services/trip-service'; import { TripService } from './services/trip-service';
import { AuthService } from './services/auth.service';
// import { LocationService } from './services/location-service'; // import { LocationService } from './services/location-service';
@Component({ @Component({
...@@ -24,7 +25,8 @@ export class AppComponent { ...@@ -24,7 +25,8 @@ export class AppComponent {
private splashScreen: SplashScreen, private splashScreen: SplashScreen,
private statusBar: StatusBar, private statusBar: StatusBar,
private router: Router, private router: Router,
private _STOR: Storage private _STOR: Storage,
private _AUTH: AuthService
// private _LOCAT: LocationService // private _LOCAT: LocationService
) { ) {
this.initializeApp(); this.initializeApp();
...@@ -42,6 +44,13 @@ export class AppComponent { ...@@ -42,6 +44,13 @@ export class AppComponent {
// Set locator // Set locator
// this.setLocator(); // this.setLocator();
this._STOR.get('wpUser').then((wpUser) => {
if (wpUser) {
this._AUTH.validateAuthToken(wpUser.token);
} else {
this.router.navigateByUrl('/login', { replaceUrl: true });
}
});
// this._STOR.get('PARAM_mainslider').then((prmMainslider) => { // this._STOR.get('PARAM_mainslider').then((prmMainslider) => {
// if (prmMainslider) { // if (prmMainslider) {
// this._STOR.get('isLoggedIn').then((isLoggedIn) => { // this._STOR.get('isLoggedIn').then((isLoggedIn) => {
......
export const WORDPRESS_URL = 'http://www.allo-testeurs.com/';
export const WORDPRESS_REST_API_URL = WORDPRESS_URL + 'wp-json/wp/v2/';
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { Validators, FormBuilder, FormGroup, FormControl } from '@angular/forms'; import { Validators, FormBuilder, FormGroup, FormControl } from '@angular/forms';
import { AlloService } from '../../../services/allo-service'; import { AlloService } from '../../../services/allo-service';
import { AuthService } from '../../../services/auth.service';
import { Storage } from '@ionic/storage'; import { Storage } from '@ionic/storage';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { GooglePlus } from '@ionic-native/google-plus/ngx'; import { GooglePlus } from '@ionic-native/google-plus/ngx';
...@@ -32,7 +33,8 @@ export class LoginPage implements OnInit { ...@@ -32,7 +33,8 @@ export class LoginPage implements OnInit {
public storage: Storage, public storage: Storage,
public router: Router, public router: Router,
private googlePlus: GooglePlus, private googlePlus: GooglePlus,
public _ALLO: AlloService public _ALLO: AlloService,
public _AUTH: AuthService
) { } ) { }
ngOnInit() { ngOnInit() {
...@@ -47,6 +49,7 @@ export class LoginPage implements OnInit { ...@@ -47,6 +49,7 @@ export class LoginPage implements OnInit {
onSubmit(values) { onSubmit(values) {
console.log(values); console.log(values);
this._AUTH.doLogin(values.email, values.password);
} }
async doGoogleLogin() { async doGoogleLogin() {
......
...@@ -113,7 +113,7 @@ export class AlloService { ...@@ -113,7 +113,7 @@ export class AlloService {
this.showPage = false; this.showPage = false;
const loading = await this.loadingCtrl.create({ const loading = await this.loadingCtrl.create({
// spinner: null, // spinner: null,
duration: 2000, duration: 0,
message: 'Chargement...', message: 'Chargement...',
translucent: true, translucent: true,
cssClass: 'custom-class custom-loading' cssClass: 'custom-class custom-loading'
......
import { TestBed } from '@angular/core/testing';
import { AuthService } from './auth.service';
describe('AuthService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: AuthService = TestBed.get(AuthService);
expect(service).toBeTruthy();
});
});
import { Injectable } from '@angular/core';
import { Platform } from '@ionic/angular';
import { Storage } from '@ionic/storage';
import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';
import { HTTP } from '@ionic-native/http/ngx';
import { Router } from '@angular/router';
import { AlloService } from './allo-service';
import * as Config from '../constants';
@Injectable({
providedIn: 'root'
})
export class AuthService {
constructor(
private platform: Platform,
public storage: Storage,
private http: HttpClient,
private httpAdv: HTTP,
private router: Router,
private _ALLO: AlloService
) { }
getUser() {
return this.storage.get('wpUser');
}
setUser(user) {
return this.storage.set('wpUser', user);
}
logOut() {
return this.storage.clear();
}
doLogin(username, password) {
this._ALLO.presentLoading();
let authData = {
username: username,
password: password
};
if (this.platform.is('cordova')) {
return this.httpAdv.post(Config.WORDPRESS_URL + 'wp-json/jwt-auth/v1/token', authData, {}).then(result => {
this.setUser(result);
this._ALLO.dismissLoading();
});
} else {
return this.http.post(Config.WORDPRESS_URL + 'wp-json/jwt-auth/v1/token', authData).subscribe(result => {
this.setUser(result);
this._ALLO.dismissLoading();
});
}
}
doRegister(user_data, token) {
return this.http.post(Config.WORDPRESS_REST_API_URL + 'users?token=' + token, user_data);
}
validateAuthToken(token) {
this._ALLO.presentLoading();
if (this.platform.is('cordova')) {
let header: Headers = new Headers();
header.append('Authorization', 'Bearer ' + token);
return this.httpAdv.post(
Config.WORDPRESS_URL + 'wp-json/jwt-auth/v1/token/validate',
{},
{ headers: header }
).then(result => {
this.processeAuthToken(result);
}).catch(error => {
this._ALLO.dismissLoading();
console.log(error);
});
} else {
let header: HttpHeaders = new HttpHeaders();
header.append('Authorization', 'Bearer ' + token);
return this.http.post(
Config.WORDPRESS_URL + 'wp-json/jwt-auth/v1/token/validate',
{},
{ headers: header }
).subscribe((result: any) => {
this.processeAuthToken(result);
}, error => {
this._ALLO.dismissLoading();
console.log(error);
});
}
}
processeAuthToken(result: any) {
this._ALLO.dismissLoading();
if (result.data.status !== 200) {
if (this.router.url === '/login') {
alert('Votre session est expirée. Veuillez vous reconnecter');
}
} else {
this.router.navigateByUrl('/mainslider', { replaceUrl: true });
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment