Skip to content

Commit

Permalink
sign in e authservice
Browse files Browse the repository at this point in the history
  • Loading branch information
matheusps committed May 17, 2018
1 parent cfef08d commit 85d0ffe
Show file tree
Hide file tree
Showing 6 changed files with 86 additions and 42 deletions.
12 changes: 5 additions & 7 deletions src/_models/user.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
export class User{
_id: string;
name: string;
email: string;
username: string;
token: string;

constructor(_id: string, name: string, email: string){
this._id = _id;
this.name = name;
this.email = email;
constructor(_id: string, username: string, email: string){
this.username = username;
this.token = "";
}
}
66 changes: 41 additions & 25 deletions src/_services/auth.ts
Original file line number Diff line number Diff line change
@@ -1,45 +1,61 @@
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import 'rxjs/add/operator/map'
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs/observable';
import 'rxjs/add/operator/map';

import { User } from '../_models/user';
import { appConfig } from '../app/app.config';

@Injectable()
export class AuthService{
constructor(private http: HttpClient) { }

signIn(email: string, password: string) {
return this.http.post<any>(appConfig.apiUrl + '/authenticate', { email: email, password: password })
.map(user => {
// login successful if there's a jwt token in the response
if (user && user.token) {
if(user.success){
localStorage.setItem('currentUser', JSON.stringify(user));
}
}
console.log(user);
return user;
});
public token: string;
private url: string = appConfig.apiUrl + '/api/auth/login';
private httpOptions = {headers: new HttpHeaders({ 'Content-Type': 'application/json' })};

constructor(private http: HttpClient) {
let authUser = JSON.parse(localStorage.getItem('authUser'));
this.token = authUser && authUser.token;
}

fakeAuth(user: string, pass: string){
let fakeUser = {
name: user,
password: pass
}
localStorage.setItem('currentUser', JSON.stringify(fakeUser));
/**
* Realiza o signin na aplicação. O retorno representa um login realizado ou não.
* @param username
* @param password
*/
signIn(username: string, password: string) : Observable<boolean>{

let body = { username: username, password: password };

return this.http.post<User>( this.url, body, this.httpOptions)
.map( user => {
let token = user && user.token;
if (token) {
this.token = token;
localStorage.setItem('authUser', JSON.stringify(user));
//Signin realizado
return true;
}
//Signin não realizado
return false;
})
}

isAuthenticated(){
if(localStorage.getItem('currentUser')){
/**
* Retorna se existe ou não um usuário autorizado no local storage
*/
isAuthenticated() : boolean{
if(localStorage.getItem('authUser')){
return true
}else{
return false
}
}

/**
* Realiza o sign out
*/
signOut() {
// remove user from local storage to log user out
localStorage.removeItem('currentUser');
localStorage.removeItem('authUser');
}
}
2 changes: 1 addition & 1 deletion src/app/app.config.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
export const appConfig = {
apiUrl: 'http://localhost:3000'
apiUrl: 'http://10.0.0.9:4040'
};
2 changes: 1 addition & 1 deletion src/pages/signin/signin.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<input class="googol-input" type="text" placeholder="Usuário" [(ngModel)]="user"/>
<input class="googol-input" type="password" placeholder="Senha" [(ngModel)]="pass"/>

<button class="googol-btn-danger" (click)="fakeAuth()">Entrar</button>
<button class="googol-btn-danger" (click)="signIn()">Entrar</button>

<p class="text-default-normal text-mute account">Você não tem uma conta?</p>
<p class="text-default-medium" (click)="goSignUp()">REGISTRAR-SE AQUI</p>
Expand Down
42 changes: 37 additions & 5 deletions src/pages/signin/signin.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { NavController, AlertController } from 'ionic-angular';
import { AuthService } from '../../_services/auth';
import { HomePage } from '../home/home';
import { SignUpPage } from '../signup/signup';
Expand All @@ -13,15 +13,47 @@ export class SignInPage {
user: string = "";
pass: string = "";

constructor(public navCtrl: NavController, public auth: AuthService) {
constructor(public navCtrl: NavController, public auth: AuthService, public alert:AlertController) {
if(this.auth.isAuthenticated()){
this.navigateHome();
}
}

fakeAuth(){
this.auth.fakeAuth(this.user, this.pass);
this.navCtrl.push(HomePage, {}, {animate: false});
signIn(){
this.auth.signIn(this.user, this.pass).subscribe(
user => {
if(user){
this.resetFields();
this.navigateHome();
}else{
this.presentAlert("Por alguma razão o SignIn não pode ser realizado!");
}
},
err => {
this.presentAlert("Usuário ou senha incorretos!");
}
)
}

presentAlert(message) {
let alert = this.alert.create({
title: 'Erro',
subTitle: message,
buttons: ['Entendido']
});
alert.present();
}

resetFields(){
this.user = "";
this.pass = "";
}

goSignUp(){
this.navCtrl.push(SignUpPage, {}, {animate: false});
}

navigateHome(){
this.navCtrl.push(HomePage, {}, {animate: false});
}
}
4 changes: 1 addition & 3 deletions src/pages/signup/signup.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { NavController, AlertController } from 'ionic-angular';
import { HomePage } from '../home/home';
import { SignInPage } from '../signin/signin';

import { AlertController } from 'ionic-angular';

@Component({
selector: 'page-signup',
templateUrl: 'signup.html'
Expand Down

0 comments on commit 85d0ffe

Please sign in to comment.