Parcourir la source

implementación de token remoto ok

robert2206 il y a 8 ans
Parent
commit
aa30893727
5 fichiers modifiés avec 43 ajouts et 41 suppressions
  1. 4 4
      config.xml
  2. 1 1
      ionic.config.json
  3. 3 3
      src/pages/login/login.html
  4. 4 21
      src/pages/login/login.ts
  5. 31 12
      src/providers/token.service.ts

+ 4 - 4
config.xml

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<widget id="com.ionicframework.odoomobile870888" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
-  <name>odoo_mobile</name>
+<widget id="com.eiru.odoo" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
+  <name>Odoo by Eiru</name>
   <description>An awesome Ionic/Cordova app.</description>
-  <author email="hi@ionicframework" href="http://ionicframework.com/">Ionic Framework Team</author>
+  <author email="robert.gauto@gmail.com" href="http://ionicframework.com/">Robert Alexis GAuto</author>
   <content src="index.html"/>
   <access origin="*"/>
   <allow-intent href="http://*/*"/>
@@ -36,4 +36,4 @@
   <plugin name="cordova-plugin-splashscreen" spec="~4.0.0"/>
   <plugin name="cordova-plugin-statusbar" spec="~2.2.0"/>
   <plugin name="ionic-plugin-keyboard" spec="~2.2.1"/>
-</widget>
+</widget>

+ 1 - 1
ionic.config.json

@@ -1,5 +1,5 @@
 {
-  "name": "odoo_mobile",
+  "name": "Odoo by Eiru",
   "app_id": "",
   "v2": true,
   "typescript": true

+ 3 - 3
src/pages/login/login.html

@@ -4,15 +4,15 @@
     <ion-list>
         <ion-item>
             <ion-icon name="desktop" item-left></ion-icon>
-            <ion-input type="text" placeholder="URL del servidor" [(ngModel)]="url" clearInput></ion-input>
+            <ion-input type="text" placeholder="URL del servidor" [(ngModel)]="tokenService.url"></ion-input>
         </ion-item>
         <ion-item>
             <ion-icon name="person" item-left></ion-icon>
-            <ion-input type="text" placeholder="Usuario o email" [(ngModel)]="username" clearInput></ion-input>
+            <ion-input type="text" placeholder="Usuario o email" [(ngModel)]="tokenService.username"></ion-input>
         </ion-item>
         <ion-item>
             <ion-icon name="unlock" item-left></ion-icon>
-            <ion-input type="text" placeholder="Contraseña" [(ngModel)]="password" clearInput></ion-input>
+            <ion-input type="text" placeholder="Contraseña" [(ngModel)]="tokenService.password"></ion-input>
         </ion-item>
     </ion-list>
 

+ 4 - 21
src/pages/login/login.ts

@@ -3,38 +3,21 @@ import { NavController } from 'ionic-angular';
 import { TokenService } from '../../providers/token.service';
 
 @Component({
-  selector: 'page-login',
-  providers: [TokenService],
-  templateUrl: 'login.html'
+    selector: 'page-login',
+    providers: [TokenService],
+    templateUrl: 'login.html'
 })
 
 export class LoginPage {
 
-    url: string = '192.168.100.141';
-    username: string = 'admin';
-    password: string = 'admin';
-
     constructor(public navCtrl: NavController, public tokenService: TokenService) {}
 
     ionViewDidLoad() {
         console.log('Hello Login Page');
     }
 
-    // Check if introduced url is valid
-    checkUrl(): boolean {
-        return this.url.includes('.');
-    }
-
     // Signin odoo
     signin(): void {
-        if (!this.checkUrl()) {
-            return;
-        }
-
-        console.log(this.url);
-
-        // let result = this.tokenService.getTokenFromServer(this.url, this.username, this.password);
-
-        // console.log(result);
+        this.tokenService.getToken();
     }
 }

+ 31 - 12
src/providers/token.service.ts

@@ -10,37 +10,56 @@ import 'rxjs/add/observable/throw'
 @Injectable()
 export class TokenService {
 
+    username: string = 'admin';
+    password: string = 'admin';
+    url: string = '192.168.100.141:22000';
+
     constructor(public http: Http) {
         console.log('Hello TokenAuth Provider');
     }
 
-    // Get token from server
-    getTokenFromServer(url: string, username: string, password: string): Observable<Token> {
-        let body = JSON.stringify({
-            username: username,
-            password: password
-        });
+    getToken(): void {
+        let response = this.getTokenFromServer();
 
-        let headers = new Headers({ 'Content-Type':  'multipart/form-data'});
-        let options = new RequestOptions({ headers: headers });
+        response.subscribe(data => {
+                console.log(data.value);
+            }, err => console.error('Error: ' + err),
+            () => console.log('Token received')
+        );
 
-        return this.http.post(this.normalizeUrl(url), body, options).map(this.extractData).catch(this.handleError);
+    }
+
+    // Check if introduced url is valid
+    checkUrl(): boolean {
+        return this.url.includes('.');
     }
 
     // Normalize provide url
     private normalizeUrl(url: string): string {
-        return (url.startsWith('http://') ? url : 'http://' + url) + '/jwt/api';
+        return (url.startsWith('http://') ? url : 'http://' + url) + '/api/jwt';
+    }
+
+    // Get token from server
+    getTokenFromServer(): Observable<Token> {
+        let body = 'username=' + this.username + '&password=' + this.password;
+        let headers = new Headers({ 'Content-Type':  'application/x-www-form-urlencoded' });
+        let options = new RequestOptions({ headers: headers });
+
+        return this.http.post(this.normalizeUrl(this.url), body, options).map(this.extractData).catch(this.handleError);
     }
 
     // Extract data from http response
     private extractData(response: Response) {
         let body = response.json();
+        let token = new Token(body.token);
 
-        return body.data || {};
+        return token;
     }
 
     // Handle error if ocurred
     private handleError(error: any) {
-        return Observable.throw(error.response);
+        let msg = error._body;
+
+        return Observable.throw(msg);
     }
 }